Jacek Caban (@jacek) commented about dlls/wininet/http.c:
if (HTTP_HttpQueryInfoW(request, HTTP_QUERY_PROXY_CONNECTION, szConnectionResponse, &dwBufferSize, NULL) == ERROR_SUCCESS || HTTP_HttpQueryInfoW(request, HTTP_QUERY_CONNECTION, szConnectionResponse, &dwBufferSize, NULL) == ERROR_SUCCESS) {
keepalive = !wcsicmp(szConnectionResponse, L"Keep-Alive");
keepalive = has_keep_alive(szConnectionResponse);
This doesn't seem right (although I'm not sure without tests, which would be nice to have). HTTP/1.1 should default to keep-alive, which it would not do for "connection: upgrade" with this implementation. Previous implementation assumed that header's value is either "close" or "keep-alive". If we're allowing other values, I guess the logic should be something like `is_http11 ? !have_value("close") : have_value("keep-alive")`. `http_process_keep_alive` has the same problem.