FastCGI: Ignore HTTP_CONTENT_(TYPE|LENGTH)
The non-HTTP_ versions of these are authoritative, Also fixes a memory leak when both the HTTP_ and non-HTTP_ versions are included.
This commit is contained in:
parent
e88ad65232
commit
0cd947c545
2 changed files with 12 additions and 2 deletions
7
c/fcgi.c
7
c/fcgi.c
|
|
@ -319,8 +319,11 @@ static int fufcgi_read_params(pTHX_ fufcgi *ctx, fufcgi_rec *rec) {
|
|||
p.name += 5;
|
||||
for (r=0; r<p.namelen; r++)
|
||||
p.name[r] = p.name[r] == '_' ? '-' : p.name[r] >= 'A' && p.name[r] <= 'Z' ? p.name[r] | 0x20 : p.name[r];
|
||||
valsv = newSV(p.vallen+1);
|
||||
hv_store(ctx->headers, p.name, p.namelen, valsv, 0);
|
||||
if (!(p.namelen == 14 && memcmp(p.name, "content-length", 14) == 0)
|
||||
&& !(p.namelen == 12 && memcmp(p.name, "content-type", 12) == 0)) {
|
||||
valsv = newSV(p.vallen+1);
|
||||
hv_store(ctx->headers, p.name, p.namelen, valsv, 0);
|
||||
}
|
||||
|
||||
} else if (p.namelen == 14 && memcmp(p.name, "CONTENT_LENGTH", 14) == 0) {
|
||||
valsv = newSV(p.vallen+1);
|
||||
|
|
|
|||
7
t/fcgi.t
7
t/fcgi.t
|
|
@ -167,6 +167,13 @@ record 1, 4, "\x0c\x05CONTENT_TYPEsomet";
|
|||
record 1, 2, "";
|
||||
isrec {'content-type','somet'}, {body => ''}, -6;
|
||||
|
||||
start;
|
||||
begin;
|
||||
record 1, 4, "\x13\x01HTTP_CONTENT_LENGTH3\x0e\x01CONTENT_LENGTH0\x13\x01HTTP_CONTENT_LENGTH5";
|
||||
record 1, 4, "";
|
||||
record 1, 5, "";
|
||||
isrec {'content-length','0'}, {body => ''};
|
||||
|
||||
start;
|
||||
begin;
|
||||
record 1, 4, "\x0e\x05CONTENT_LENGTH65536";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue