aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
diff options
context:
space:
mode:
authorRaimo Niskanen <raimo@erlang.org>2010-07-07 10:48:49 +0200
committerRaimo Niskanen <raimo@erlang.org>2010-07-07 10:48:49 +0200
commit3865a7373bba2ede731eca614dddd18bb50ce7d6 (patch)
tree8f45ebfe78af46a1e9c54a6f96f8a93b8af01a18 /erts/emulator
parent9b02822645a15985fca8f73b75456538c362cd2a (diff)
parent288f54c8f4f7cac0951f0807e4a6d3b59c099156 (diff)
downloadotp-3865a7373bba2ede731eca614dddd18bb50ce7d6.tar.gz
otp-3865a7373bba2ede731eca614dddd18bb50ce7d6.tar.bz2
otp-3865a7373bba2ede731eca614dddd18bb50ce7d6.zip
Merge branch 'se/http_response_empty_phrase' into dev
* se/http_response_empty_phrase: {packet,http} allow empty response phrase
Diffstat (limited to 'erts/emulator')
-rw-r--r--erts/emulator/beam/packet_parser.c2
-rw-r--r--erts/emulator/test/decode_packet_SUITE.erl4
2 files changed, 5 insertions, 1 deletions
diff --git a/erts/emulator/beam/packet_parser.c b/erts/emulator/beam/packet_parser.c
index 8c8029d450..5bcd567b5f 100644
--- a/erts/emulator/beam/packet_parser.c
+++ b/erts/emulator/beam/packet_parser.c
@@ -679,7 +679,7 @@ int packet_parse_http(const char* buf, int len, int* statep,
while (n && SP(ptr)) {
ptr++; n--;
}
- if (ptr==p0) return -1;
+ if (ptr==p0 && n>0) return -1;
/* NOTE: the syntax allows empty reason phrases */
(*statep) = !0;
diff --git a/erts/emulator/test/decode_packet_SUITE.erl b/erts/emulator/test/decode_packet_SUITE.erl
index 6cde286871..d9e961be2f 100644
--- a/erts/emulator/test/decode_packet_SUITE.erl
+++ b/erts/emulator/test/decode_packet_SUITE.erl
@@ -304,6 +304,10 @@ http(Config) when is_list(Config) ->
{ok, {http_request, 'GET', ResB, {1,1}}, Rest} = decode_pkt(http_bin,Bin)
end,
lists:foreach(UriF, http_uri_variants()),
+
+ %% Response with empty phrase
+ ?line {ok,{http_response,{1,1},200,[]},<<>>} = decode_pkt(http, <<"HTTP/1.1 200\r\n">>, []),
+ ?line {ok,{http_response,{1,1},200,<<>>},<<>>} = decode_pkt(http_bin, <<"HTTP/1.1 200\r\n">>, []),
ok.
http_with_bin(http) ->