mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-16 13:10:24 +00:00
Reply with 400 on header parsing crash
This is a first step to improve the HTTP status codes returned by Cowboy on crashes. We will tweak it over time. Also fixes a small bug where two replies may have been sent when using loop handlers under rare conditions.
This commit is contained in:
parent
20f598f373
commit
97a3108576
8 changed files with 55 additions and 26 deletions
10
test/handlers/input_crash_h.erl
Normal file
10
test/handlers/input_crash_h.erl
Normal file
|
@ -0,0 +1,10 @@
|
|||
%% This module crashes on request input data
|
||||
%% depending on the given option.
|
||||
|
||||
-module(input_crash_h).
|
||||
|
||||
-export([init/3]).
|
||||
|
||||
init(_, Req, content_length) ->
|
||||
cowboy_error_h:ignore(cow_http_hd, number, 2),
|
||||
cowboy_req:parse_header(<<"content-length">>, Req).
|
|
@ -193,6 +193,7 @@ init_dispatch(Config) ->
|
|||
{"/multipart/large", http_multipart_stream, []},
|
||||
{"/echo/body", http_echo_body, []},
|
||||
{"/echo/body_qs", http_body_qs, []},
|
||||
{"/crash/content-length", input_crash_h, content_length},
|
||||
{"/param_all", rest_param_all, []},
|
||||
{"/bad_accept", rest_simple_resource, []},
|
||||
{"/bad_content_type", rest_patch_resource, []},
|
||||
|
@ -274,6 +275,7 @@ The document has moved
|
|||
{400, "GET / HTTP/1.1\r\nHost: ninenines.eu\r\n\r\n"},
|
||||
{400, "GET http://proxy/ HTTP/1.1\r\n\r\n"},
|
||||
{400, "GET / HTTP/1.1\r\nHost: localhost:bad_port\r\n\r\n"},
|
||||
{400, ["POST /crash/content-length HTTP/1.1\r\nHost: localhost\r\nContent-Length: 5000,5000\r\n\r\n", Huge]},
|
||||
{505, ResponsePacket},
|
||||
{408, "GET / HTTP/1.1\r\n"},
|
||||
{408, "GET / HTTP/1.1\r\nHost: localhost"},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue