aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorKirilll Zaborsky <[email protected]>2015-02-02 12:34:25 +0300
committerZandra Hird <[email protected]>2015-02-03 09:24:53 +0100
commitead8a497f382d6b82c98721d504a5ccd40889b1c (patch)
treeed7122e14f3ecabfda2870a1d83c387759602510 /lib
parent0fee86f864a4ba2a7a363927a50c81c43994ca9a (diff)
downloadotp-ead8a497f382d6b82c98721d504a5ccd40889b1c.tar.gz
otp-ead8a497f382d6b82c98721d504a5ccd40889b1c.tar.bz2
otp-ead8a497f382d6b82c98721d504a5ccd40889b1c.zip
inets: parse correctly 'Set-Cookie' header with empty value
httpc_cookie should parse cookies with empty values and no attributes set in the 'Set-Cookie' headers.
Diffstat (limited to 'lib')
-rw-r--r--lib/inets/src/http_client/httpc_cookie.erl2
-rw-r--r--lib/inets/test/httpc_SUITE.erl1
2 files changed, 3 insertions, 0 deletions
diff --git a/lib/inets/src/http_client/httpc_cookie.erl b/lib/inets/src/http_client/httpc_cookie.erl
index 5d71a0bb8f..ed306a84f5 100644
--- a/lib/inets/src/http_client/httpc_cookie.erl
+++ b/lib/inets/src/http_client/httpc_cookie.erl
@@ -362,6 +362,8 @@ parse_set_cookie(CookieHeader, {DefaultPath, DefaultDomain}) ->
Name = string:substr(CookieHeader, 1, Pos - 1),
{Value, Attrs} =
case string:substr(CookieHeader, Pos + 1) of
+ [] ->
+ {"", ""};
[$;|ValueAndAttrs] ->
{"", string:tokens(ValueAndAttrs, ";")};
ValueAndAttrs ->
diff --git a/lib/inets/test/httpc_SUITE.erl b/lib/inets/test/httpc_SUITE.erl
index 545cc3f11b..ea4c97be9f 100644
--- a/lib/inets/test/httpc_SUITE.erl
+++ b/lib/inets/test/httpc_SUITE.erl
@@ -1702,6 +1702,7 @@ handle_uri(_,"/empty_set_cookie.html",_,_,_,_) ->
handle_uri(_,"/invalid_set_cookie.html",_,_,_,_) ->
"HTTP/1.1 200 ok\r\n" ++
"set-cookie: =\r\n" ++
+ "set-cookie: name=\r\n" ++
"set-cookie: name-or-value\r\n" ++
"Content-Length:32\r\n\r\n"++
"<HTML><BODY>foobar</BODY></HTML>";