Send 400 Bad Request if request line exceeds recbuf (#191) I broke this back in 61a65fea7d6b1e9f93c4a2c6b96e96dee02bec6e. :/
Project: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/commit/a6fdb9a3 Tree: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/tree/a6fdb9a3 Diff: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/diff/a6fdb9a3 Branch: refs/heads/master Commit: a6fdb9a3af1301c8be68cd1f85a87ce3028da07a Parents: b78a262 Author: Robert Newson <[email protected]> Authored: Sun Aug 13 00:28:12 2017 +0100 Committer: Bob Ippolito <[email protected]> Committed: Sat Aug 12 16:28:12 2017 -0700 ---------------------------------------------------------------------- src/mochiweb_http.erl | 6 ++++++ 1 file changed, 6 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/blob/a6fdb9a3/src/mochiweb_http.erl ---------------------------------------------------------------------- diff --git a/src/mochiweb_http.erl b/src/mochiweb_http.erl index 568019f..3b02065 100644 --- a/src/mochiweb_http.erl +++ b/src/mochiweb_http.erl @@ -97,6 +97,8 @@ request(Socket, Opts, Body) -> {tcp_closed, _} -> mochiweb_socket:close(Socket), exit(normal); + {tcp_error, _, emsgsize} = Other -> + handle_invalid_msg_request(Other, Socket, Opts); {ssl_closed, _} -> mochiweb_socket:close(Socket), exit(normal) @@ -141,6 +143,10 @@ call_body({M, F}, Req) -> call_body(Body, Req) -> Body(Req). +-spec handle_invalid_msg_request(term(), term(), term()) -> no_return(). +handle_invalid_msg_request(Msg, Socket, Opts) -> + handle_invalid_msg_request(Msg, Socket, Opts, {'GET', {abs_path, "/"}, {0,9}}, []). + -spec handle_invalid_msg_request(term(), term(), term(), term(), term()) -> no_return(). handle_invalid_msg_request(Msg, Socket, Opts, Request, RevHeaders) -> case {Msg, r15b_workaround()} of
