X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_api.c;h=de1984a46fd6236edb4e4d014891426ea9ffc5c1;hb=1e0730378082dc2ed3309227a5ff7cfc9e4b9e7c;hp=a17c608cf991d9f280106515447b5b4cda26122b;hpb=075264509532fc8440b937d6cd2c7e88bb050d1d;p=m6w6%2Fext-http diff --git a/http_api.c b/http_api.c index a17c608..de1984a 100644 --- a/http_api.c +++ b/http_api.c @@ -147,6 +147,10 @@ PHP_HTTP_API STATUS _http_parse_cookie(const char *list, HashTable *items TSRMLS if (!val) { val = c; } + if (!*c) { + --val; + st = ST_ADD; + } } break; @@ -162,8 +166,11 @@ PHP_HTTP_API STATUS _http_parse_cookie(const char *list, HashTable *items TSRMLS case ' ': break; - case '\0': case ';': + goto add; + break; + + case '\0': st = ST_ADD; break; @@ -208,8 +215,10 @@ PHP_HTTP_API STATUS _http_parse_cookie(const char *list, HashTable *items TSRMLS break; case '\0': - keylen = c - key; - st = ST_ADD; + if (key) { + keylen = c - key; + st = ST_ADD; + } break; } break; @@ -228,6 +237,7 @@ PHP_HTTP_API STATUS _http_parse_cookie(const char *list, HashTable *items TSRMLS add: if (val) { vallen = c - val - (*c?1:0); + while (val[vallen-1] == ' ') --vallen; } else { val = ""; vallen = 0;