From 12b9ca352616afcf865670df9e2186df213bd9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 7 Nov 2011 19:17:49 +0100 Subject: Fix reading the request body when Length < byte_size(Buffer) --- src/cowboy_http_req.erl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/cowboy_http_req.erl') diff --git a/src/cowboy_http_req.erl b/src/cowboy_http_req.erl index 5a63e98..feb795c 100644 --- a/src/cowboy_http_req.erl +++ b/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) -> -- cgit v1.2.3