diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike index 86e6a6e2484d8170c2e36d60c352f64efe0d335c..00d2434338834f9f0c516f4ca9d91fab63ac2005 100644 --- a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike +++ b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike @@ -162,11 +162,40 @@ protected int ponder_answer( int|void start_position ) sscanf(s,"%[!-9;-~]%*[ \t]:%*[ \t]%s",n,d); switch(n=lower_case(n)) { - case "set-cookie": - headers[n]=(headers[n]||({}))+({d}); - break; - default: - headers[n]=d; + case "set-cookie": + headers[n]=(headers[n]||({}))+({d}); + break; + + case "accept-ranges": + case "age": + case "connection": + case "content-type": + case "content-encoding": + case "date": + case "etag": + case "keep-alive": + case "last-modified": + case "location": + case "retry-after": + case "transfer-encoding": + headers[n]=d; + break; + + case "allow": + case "cache-control": + case "vary": + if( headers[n] ) + headers[n] += ", " +d; + else + headers[n] = d; + break; + + default: + if( headers[n] ) + headers[n] += "; " +d; + else + headers[n] = d; + break; } }