diff --git a/.thumbs.yml b/.thumbs.yml new file mode 100644 index 00000000..f28fff75 --- /dev/null +++ b/.thumbs.yml @@ -0,0 +1,11 @@ +minimum_reviewers: 2 +merge: true +build_steps: + - make clean + - make deps + - make compile + - make test + - make xref + - make dialyzer +org_mode: true +timeout: 1800 diff --git a/rebar.config b/rebar.config index 31447de1..ae346e6a 100644 --- a/rebar.config +++ b/rebar.config @@ -6,10 +6,10 @@ {xref_checks, [undefined_function_calls]}. {deps, - [{mochiweb, "2.9.0", {git, "git://github.com/basho/mochiweb.git", {tag, "v2.9.0p1"}}} + [{mochiweb, "2.9.0.*", {git, "https://github.com/basho/mochiweb.git", {tag, "v2.9.0p2"}}} ]}. {dev_only_deps, - [{meck, "0.8.*", {git, "git://github.com/basho/meck.git", {tag, "0.8.2"}}}, - {ibrowse, "4.0.2", {git, "git://github.com/cmullaparthi/ibrowse.git", {tag, "v4.0.2"}}} + [{meck, "0.8.*", {git, "https://github.com/basho/meck.git", {tag, "0.8.2"}}}, + {ibrowse, "4.*", {git, "https://github.com/basho/ibrowse.git", {tag, "v4.3"}}} ]}. diff --git a/rebar.config.script b/rebar.config.script index be5bcac1..7a3c21f3 100644 --- a/rebar.config.script +++ b/rebar.config.script @@ -1,7 +1,7 @@ %% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ft=erlang ts=4 sw=4 et OtpVersion = erlang:system_info(otp_release), -Config1 = case hd(OtpVersion) =:= $R andalso OtpVersion =< "R15B01" of +Config1 = case hd(OtpVersion) =:= $R andalso OtpVersion < "R15B02" of true -> HashDefine = [{d,old_hash}], case lists:keysearch(erl_opts, 1, CONFIG) of diff --git a/src/webmachine_multipart.erl b/src/webmachine_multipart.erl index f7b87903..f2a21482 100644 --- a/src/webmachine_multipart.erl +++ b/src/webmachine_multipart.erl @@ -51,6 +51,8 @@ find_boundary(ReqData) -> % @doc Turn a multipart form into component parts. % @spec get_all_parts(incoming_req_body(), boundary()) -> [fpart()] +get_all_parts(Body, Boundary) when is_list(Body), is_list(Boundary) -> + get_all_parts(list_to_binary(Body), Boundary); get_all_parts(Body, Boundary) when is_binary(Body), is_list(Boundary) -> StreamStruct = send_streamed_body(Body,1024), getparts1(stream_parts(StreamStruct, Boundary), []). @@ -71,6 +73,8 @@ stream_form({Hunk, Next}, Boundary, []) -> stream_form(get_more_data(Next), Boundary, re:split(Hunk, Boundary,[])); stream_form({Hunk, Next}, Boundary, [<<>>|DQ]) -> stream_form({Hunk, Next}, Boundary, DQ); +stream_form({Hunk, Next}, Boundary, [<<"\r\n">>|DQ]) -> + stream_form({Hunk, Next}, Boundary, DQ); stream_form({Hunk, Next}, Boundary, [H|[T1|T2]]) -> {make_part(H), fun() -> stream_form({Hunk, Next}, Boundary, [T1|T2]) end}; @@ -94,7 +98,7 @@ stream_parts([H|T]) -> {make_part(H), fun() -> stream_parts(T) end}. get_more_data(done) -> {<<"--\n">>, really_done}; get_more_data(Fun) -> Fun(). - + make_part(PartData) -> %% Remove the trailing \r\n [HeadData, BodyWithCRLF] = re:split(PartData, "\\r\\n\\r\\n", [{parts,2}]),