0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-15 20:50:24 +00:00

Add cowboy_http_req:port/1.

Returns the port given in the Host header if present,
otherwise the default port of 443 for HTTPS and 80 for HTTP
is returned.
This commit is contained in:
Loïc Hoguin 2011-05-04 12:05:57 +02:00
parent cc663df5db
commit 6c1f73c53c
6 changed files with 84 additions and 43 deletions

View file

@ -81,9 +81,9 @@ upgrade_error(Req=#http_req{socket=Socket, transport=Transport}) ->
-spec websocket_handshake(State::#state{}, Req::#http_req{},
HandlerState::term()) -> ok.
websocket_handshake(State=#state{origin=Origin, challenge=Challenge},
Req=#http_req{transport=Transport, raw_host=Host, raw_path=Path},
HandlerState) ->
Location = websocket_location(Transport:name(), Host, Path),
Req=#http_req{transport=Transport, raw_host=Host, port=Port,
raw_path=Path}, HandlerState) ->
Location = websocket_location(Transport:name(), Host, Port, Path),
{ok, Req2} = cowboy_http_req:reply(
"101 WebSocket Protocol Handshake",
[{"Connection", "Upgrade"},
@ -94,12 +94,12 @@ websocket_handshake(State=#state{origin=Origin, challenge=Challenge},
handler_loop(State#state{messages=Transport:messages()},
Req2, HandlerState, <<>>).
-spec websocket_location(TransName::atom(), Host::string(), Path::string())
-> string().
websocket_location(ssl, Host, Path) ->
"wss://" ++ Host ++ Path;
websocket_location(_Any, Host, Path) ->
"ws://" ++ Host ++ Path.
-spec websocket_location(TransName::atom(), Host::string(),
Port::ip_port(), Path::string()) -> string().
websocket_location(ssl, Host, Port, Path) ->
"wss://" ++ Host ++ ":" ++ integer_to_list(Port) ++ Path;
websocket_location(_Any, Host, Port, Path) ->
"ws://" ++ Host ++ ":" ++ integer_to_list(Port) ++ Path.
-spec handler_loop(State::#state{}, Req::#http_req{},
HandlerState::term(), SoFar::binary()) -> ok.