Browse Source

Handle properly the default Connection value for HTTP/1.0.

Fixes a bug reported by evaxsoftware on IRC.
Loïc Hoguin 14 years ago
parent
commit
44e6f60b91
1 changed files with 4 additions and 2 deletions
  1. 4 2
      src/cowboy_http_protocol.erl

+ 4 - 2
src/cowboy_http_protocol.erl

@@ -67,14 +67,16 @@ request({http_request, Method, {abs_path, AbsPath}, Version},
 	ConnAtom = version_to_connection(Version),
 	ConnAtom = version_to_connection(Version),
 	wait_header(#http_req{socket=Socket, transport=Transport,
 	wait_header(#http_req{socket=Socket, transport=Transport,
 		connection=ConnAtom, method=Method, version=Version,
 		connection=ConnAtom, method=Method, version=Version,
-		path=Path, raw_path=RawPath, raw_qs=Qs}, State);
+		path=Path, raw_path=RawPath, raw_qs=Qs},
+		State#state{connection=ConnAtom});
 request({http_request, Method, '*', Version},
 request({http_request, Method, '*', Version},
 		State=#state{socket=Socket, transport=Transport}) ->
 		State=#state{socket=Socket, transport=Transport}) ->
 	{ok, Peer} = Transport:peername(Socket),
 	{ok, Peer} = Transport:peername(Socket),
 	ConnAtom = version_to_connection(Version),
 	ConnAtom = version_to_connection(Version),
 	wait_header(#http_req{socket=Socket, transport=Transport,
 	wait_header(#http_req{socket=Socket, transport=Transport,
 		connection=ConnAtom, method=Method, version=Version,
 		connection=ConnAtom, method=Method, version=Version,
-		peer=Peer, path='*', raw_path="*", raw_qs=[]}, State);
+		peer=Peer, path='*', raw_path="*", raw_qs=[]},
+		State#state{connection=ConnAtom});
 request({http_request, _Method, _URI, _Version}, State) ->
 request({http_request, _Method, _URI, _Version}, State) ->
 	error_terminate(501, State);
 	error_terminate(501, State);
 request({http_error, "\r\n"}, State) ->
 request({http_error, "\r\n"}, State) ->