Repository: couchdb-mochiweb
Updated Branches:
  refs/heads/upstream-2.17.0 [created] 5860c6373


Use upstream version of src/mochiweb_http.erl


Project: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/commit/5860c637
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/tree/5860c637
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/diff/5860c637

Branch: refs/heads/upstream-2.17.0
Commit: 5860c6373bee0c75a7ebbd813fe370ccddcc0d01
Parents: cb521b3 23dc119
Author: Joan Touzet <[email protected]>
Authored: Sat Feb 17 17:58:57 2018 -0500
Committer: Joan Touzet <[email protected]>
Committed: Sat Feb 17 17:58:57 2018 -0500

----------------------------------------------------------------------
 .editorconfig                                   |  17 +++
 .travis.yml                                     |   7 +-
 CHANGES.md                                      |  74 +++++++++-
 Makefile                                        |   1 +
 rebar.config                                    |   7 +-
 src/mochifmt.erl                                |  18 +++
 src/mochifmt_records.erl                        |  18 +++
 src/mochifmt_std.erl                            |  18 +++
 src/mochiglobal.erl                             |  20 +++
 src/mochihex.erl                                |  18 +++
 src/mochijson.erl                               |  18 +++
 src/mochijson2.erl                              | 144 +++++++++++++++----
 src/mochilists.erl                              |  18 +++
 src/mochilogfile2.erl                           |  18 +++
 src/mochinum.erl                                |  18 +++
 src/mochitemp.erl                               |  20 ++-
 src/mochiutf8.erl                               |  18 +++
 src/mochiweb.app.src                            |  10 +-
 src/mochiweb.erl                                |  18 +++
 src/mochiweb_acceptor.erl                       |  18 +++
 src/mochiweb_base64url.erl                      |  22 +++
 src/mochiweb_charref.erl                        |  18 +++
 src/mochiweb_clock.erl                          | 101 +++++++++++++
 src/mochiweb_cookies.erl                        |  18 +++
 src/mochiweb_cover.erl                          |  18 +++
 src/mochiweb_echo.erl                           |  18 +++
 src/mochiweb_headers.erl                        |  18 +++
 src/mochiweb_html.erl                           |  83 ++++++++---
 src/mochiweb_http.erl                           |  61 ++++++--
 src/mochiweb_io.erl                             |  18 +++
 src/mochiweb_mime.erl                           |  18 +++
 src/mochiweb_multipart.erl                      |  22 ++-
 src/mochiweb_request.erl                        |  75 +++++++---
 src/mochiweb_response.erl                       |  18 +++
 src/mochiweb_session.erl                        |  23 ++-
 src/mochiweb_socket.erl                         |   6 +-
 src/mochiweb_socket_server.erl                  | 121 ++++++++--------
 src/mochiweb_util.erl                           |  55 +++++++
 src/mochiweb_websocket.erl                      |   6 +-
 src/reloader.erl                                |  20 ++-
 support/templates/mochiwebapp.template          |   2 +
 support/templates/mochiwebapp_skel/bench.sh     |  19 +++
 .../mochiwebapp_skel/src/mochiapp_web.erl       |   3 +
 test/mochiweb_base64url_tests.erl               |   7 +-
 test/mochiweb_html_tests.erl                    |  69 ++++++++-
 test/mochiweb_test_util.erl                     |  22 ++-
 test/mochiweb_test_util.hrl                     |   2 +-
 test/mochiweb_tests.erl                         |  21 ++-
 48 files changed, 1212 insertions(+), 170 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-mochiweb/blob/5860c637/src/mochiweb_http.erl
----------------------------------------------------------------------
diff --cc src/mochiweb_http.erl
index 9e32d7d,3b02065..9ceea9f
--- a/src/mochiweb_http.erl
+++ b/src/mochiweb_http.erl
@@@ -57,22 -85,26 +85,26 @@@ loop(Socket, Opts, Body) -
      request(Socket, Opts, Body).
  
  request(Socket, Opts, Body) ->
-     case mochiweb_socket:recv(Socket, 0, ?REQUEST_RECV_TIMEOUT) of
-         {ok, {http_request, Method, Path, Version}} ->
-             ok = mochiweb_socket:setopts(Socket, [{packet, httph}]),
+     ok = mochiweb_socket:exit_if_closed(mochiweb_socket:setopts(Socket, 
[{active, once}])),
+     receive
+         {Protocol, _, {http_request, Method, Path, Version}} when Protocol == 
http orelse Protocol == ssl ->
+             ok = 
mochiweb_socket:exit_if_closed(mochiweb_socket:setopts(Socket, [{packet, 
httph}])),
              headers(Socket, Opts, {Method, Path, Version}, [], Body, 0);
 -        {Protocol, _, {http_error, "\r\n"}} when Protocol == http orelse 
Protocol == ssl ->
 +        {error, {http_error, "\r\n"}} ->
              request(Socket, Opts, Body);
 -        {Protocol, _, {http_error, "\n"}} when Protocol == http orelse 
Protocol == ssl ->
 +        {error, {http_error, "\n"}} ->
              request(Socket, Opts, Body);
 -        {tcp_closed, _} ->
 +        {error, closed} ->
              mochiweb_socket:close(Socket),
              exit(normal);
-         {error, timeout} ->
+         {tcp_error, _, emsgsize} = Other ->
+             handle_invalid_msg_request(Other, Socket, Opts);
+         {ssl_closed, _} ->
              mochiweb_socket:close(Socket),
-             exit(normal);
-         Other ->
-             handle_invalid_msg_request(Other, Socket, Opts)
+             exit(normal)
+     after ?REQUEST_RECV_TIMEOUT ->
+         mochiweb_socket:close(Socket),
+         exit(normal)
      end.
  
  reentry(Body) ->
@@@ -90,17 -123,17 +123,17 @@@ headers(Socket, Opts, Request, Headers
              Req = new_request(Socket, Opts, Request, Headers),
              call_body(Body, Req),
              ?MODULE:after_response(Body, Req);
 -        {Protocol, _, {http_header, _, Name, _, Value}} when Protocol == http 
orelse Protocol == ssl ->
 +        {ok, {http_header, _, Name, _, Value}} ->
              headers(Socket, Opts, Request, [{Name, Value} | Headers], Body,
                      1 + HeaderCount);
 -        {tcp_closed, _} ->
 +        {error, closed} ->
 +            mochiweb_socket:close(Socket),
 +            exit(normal);
 +        {error, timeout} ->
              mochiweb_socket:close(Socket),
              exit(normal);
-         Other ->
+         {tcp_error, _, emsgsize} = Other ->
              handle_invalid_msg_request(Other, Socket, Opts, Request, Headers)
 -    after ?HEADERS_RECV_TIMEOUT ->
 -        mochiweb_socket:close(Socket),
 -        exit(normal)
      end.
  
  call_body({M, F, A}, Req) ->

Reply via email to