aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2013-09-04 19:24:54 +0200
committerLoïc Hoguin <[email protected]>2013-09-04 19:24:54 +0200
commit4a30198f9068cc989616c8088e4b890bc1de259d (patch)
tree74f9847d6282c365e70245df13f77f3b5209faab /src
parentbd0de074c364ddd7d8f3dfdcdb6e4261433716d8 (diff)
downloadcowboy-4a30198f9068cc989616c8088e4b890bc1de259d.tar.gz
cowboy-4a30198f9068cc989616c8088e4b890bc1de259d.tar.bz2
cowboy-4a30198f9068cc989616c8088e4b890bc1de259d.zip
Make cowlib a proper dependency
Start moving a few functions from Cowboy into cowlib.
Diffstat (limited to 'src')
-rw-r--r--src/cowboy.app.src1
-rw-r--r--src/cowboy_protocol.erl25
-rw-r--r--src/cowboy_spdy.erl25
3 files changed, 8 insertions, 43 deletions
diff --git a/src/cowboy.app.src b/src/cowboy.app.src
index 0c4a5b1..504e344 100644
--- a/src/cowboy.app.src
+++ b/src/cowboy.app.src
@@ -21,6 +21,7 @@
kernel,
stdlib,
ranch,
+ cowlib,
crypto
]},
{mod, {cowboy_app, []}},
diff --git a/src/cowboy_protocol.erl b/src/cowboy_protocol.erl
index 68a03b1..3c37983 100644
--- a/src/cowboy_protocol.erl
+++ b/src/cowboy_protocol.erl
@@ -54,7 +54,6 @@
%% Internal.
-export([init/4]).
-export([parse_request/3]).
--export([parse_host/3]).
-export([resume/6]).
-type opts() :: [{compress, boolean()}
@@ -443,6 +442,9 @@ default_port(ssl) -> 443;
default_port(_) -> 80.
%% Another hurtful block of code. :)
+%%
+%% Same code as cow_http:parse_fullhost/1, but inline because we
+%% really want this to go fast.
parse_host(<< $[, Rest/bits >>, false, <<>>) ->
parse_host(Rest, true, << $[ >>);
parse_host(<<>>, false, Acc) ->
@@ -593,24 +595,3 @@ error_terminate(Status, Req, State) ->
terminate(#state{socket=Socket, transport=Transport}) ->
Transport:close(Socket),
ok.
-
-%% Tests.
-
--ifdef(TEST).
-
-parse_host(RawHost) ->
- parse_host(RawHost, false, <<>>).
-
-parse_host_test() ->
- {<<"example.org">>, 8080} = parse_host(<<"example.org:8080">>),
- {<<"example.org">>, undefined} = parse_host(<<"example.org">>),
- {<<"192.0.2.1">>, 8080} = parse_host(<<"192.0.2.1:8080">>),
- {<<"192.0.2.1">>, undefined} = parse_host(<<"192.0.2.1">>),
- {<<"[2001:db8::1]">>, 8080} = parse_host(<<"[2001:db8::1]:8080">>),
- {<<"[2001:db8::1]">>, undefined} = parse_host(<<"[2001:db8::1]">>),
- {<<"[::ffff:192.0.2.1]">>, 8080} =
- parse_host(<<"[::ffff:192.0.2.1]:8080">>),
- {<<"[::ffff:192.0.2.1]">>, undefined} =
- parse_host(<<"[::ffff:192.0.2.1]">>).
-
--endif.
diff --git a/src/cowboy_spdy.erl b/src/cowboy_spdy.erl
index 3d39ff5..dfac29c 100644
--- a/src/cowboy_spdy.erl
+++ b/src/cowboy_spdy.erl
@@ -340,11 +340,11 @@ delete_child(Pid, State=#state{children=Children}) ->
request_init(FakeSocket, Peer, OnRequest, OnResponse,
Env, Middlewares, Method, Host, Path, Version, Headers) ->
- Version2 = parse_version(Version),
- {Host2, Port} = cowboy_protocol:parse_host(Host, false, <<>>),
- {Path2, Query} = parse_path(Path, <<>>),
+ {Host2, Port} = cow_http:parse_fullhost(Host),
+ {Path2, Qs} = cow_http:parse_fullpath(Path),
+ Version2 = cow_http:parse_version(Version),
Req = cowboy_req:new(FakeSocket, ?MODULE, Peer,
- Method, Path2, Query, Version2, Headers,
+ Method, Path2, Qs, Version2, Headers,
Host2, Port, <<>>, true, false, OnResponse),
case OnRequest of
undefined ->
@@ -357,23 +357,6 @@ request_init(FakeSocket, Peer, OnRequest, OnResponse,
end
end.
-parse_version(<<"HTTP/1.1">>) ->
- 'HTTP/1.1';
-parse_version(<<"HTTP/1.0">>) ->
- 'HTTP/1.0'.
-
-parse_path(<<>>, Path) ->
- {Path, <<>>};
-parse_path(<< $?, Rest/binary >>, Path) ->
- parse_query(Rest, Path, <<>>);
-parse_path(<< C, Rest/binary >>, SoFar) ->
- parse_path(Rest, << SoFar/binary, C >>).
-
-parse_query(<<>>, Path, Query) ->
- {Path, Query};
-parse_query(<< C, Rest/binary >>, Path, SoFar) ->
- parse_query(Rest, Path, << SoFar/binary, C >>).
-
-spec execute(cowboy_req:req(), cowboy_middleware:env(), [module()])
-> ok.
execute(Req, _, []) ->