HTTP waits for response to determine keep-alive state
Instead, we should look at the request headers to determine if the request can result in a "keep-alive" response. If not, then we should immediately treat the request's connection as non-persistent.
Doing so would give XMLHttpRequest users the additional ability to set "Connection: close" as a request header to signal to the HTTP layer that the "AJAX" request is known to take a long time to complete and thereby avoid situations where the web app appears hung waiting on the HTTP layer to give it a connection to use.
Created attachment 210648 [details] [diff] [review]
My one (small) concern with this patch is that specifying "connection: close" on a request that requires NTLM (or SPNEGO) authentication is going to break badly. This patch doesn't really change that except that it makes the browser enforce the closure instead of relying on the server to do so. This patch might break something if a server was previously ignoring "connection: close" headers during a NTLM exchange. It would be really bad for a server to ignore those headers, but that doesn't mean that someone isn't doing it.
It'll be interesting to see if that problem comes up in the field.
So why strcasestr instead of strcasecmp or something?
Because, they could also have "Connection: close, foo", which means that the "foo" header should not be forwarded by a proxy server. I need to write a HasToken function instead and use that in many other places throughout the HTTP code. Using PL_strcasestr is just par for the course and clearly suboptimal.
Comment on attachment 210648 [details] [diff] [review]
OK. sr=bzbarsky, but let's get a followup filed on HasToken?