Просмотр исходного кода

Fix reading the request body when Length < byte_size(Buffer)

Loïc Hoguin 13 лет назад
Родитель
Сommit
12b9ca3526
1 измененных файлов с 3 добавлено и 2 удалено
  1. 3 2
      src/cowboy_http_req.erl

+ 3 - 2
src/cowboy_http_req.erl

@@ -326,8 +326,9 @@ body(Req) ->
 -spec body(non_neg_integer(), #http_req{})
 	-> {ok, binary(), #http_req{}} | {error, atom()}.
 body(Length, Req=#http_req{body_state=waiting, buffer=Buffer})
-		when Length =:= byte_size(Buffer) ->
-	{ok, Buffer, Req#http_req{body_state=done, buffer= <<>>}};
+		when Length =< byte_size(Buffer) ->
+	<< Body:Length/binary, Rest/bits >> = Buffer,
+	{ok, Body, Req#http_req{body_state=done, buffer=Rest}};
 body(Length, Req=#http_req{socket=Socket, transport=Transport,
 		body_state=waiting, buffer=Buffer})
 		when is_integer(Length) andalso Length > byte_size(Buffer) ->