Loading docshell/base/nsDocShell.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -4000,7 +4000,7 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI, break; case NS_ERROR_PROXY_CONNECTION_REFUSED: case NS_ERROR_PROXY_AUTHENTICATION_FAILED: case NS_ERROR_TOO_MANY_REQUESTS: case NS_ERROR_PROXY_TOO_MANY_REQUESTS: // Proxy connection was refused. error = "proxyConnectFailure"; break; Loading Loading @@ -6563,7 +6563,7 @@ nsresult nsDocShell::EndPageLoad(nsIWebProgress* aProgress, aStatus == NS_ERROR_UNKNOWN_PROXY_HOST || aStatus == NS_ERROR_PROXY_CONNECTION_REFUSED || aStatus == NS_ERROR_PROXY_AUTHENTICATION_FAILED || aStatus == NS_ERROR_TOO_MANY_REQUESTS || aStatus == NS_ERROR_PROXY_TOO_MANY_REQUESTS || aStatus == NS_ERROR_BLOCKED_BY_POLICY) && (isTopFrame || UseErrorPages())) { DisplayLoadError(aStatus, url, nullptr, aChannel); Loading js/xpconnect/src/xpc.msg +1 −1 Original line number Diff line number Diff line Loading @@ -148,7 +148,7 @@ XPC_MSG_DEF(NS_ERROR_PROXY_CONNECTION_REFUSED , "The connection to the pro XPC_MSG_DEF(NS_ERROR_PROXY_AUTHENTICATION_FAILED , "The proxy requires authentication") XPC_MSG_DEF(NS_ERROR_PROXY_BAD_GATEWAY , "The request failed on the proxy") XPC_MSG_DEF(NS_ERROR_PROXY_GATEWAY_TIMEOUT , "The request timed out on the proxy") XPC_MSG_DEF(NS_ERROR_TOO_MANY_REQUESTS , "Sending too many requests to a proxy") XPC_MSG_DEF(NS_ERROR_PROXY_TOO_MANY_REQUESTS , "Sending too many requests to a proxy") XPC_MSG_DEF(NS_ERROR_NET_TIMEOUT , "The connection has timed out") XPC_MSG_DEF(NS_ERROR_OFFLINE , "The requested action could not be completed in the offline state") XPC_MSG_DEF(NS_ERROR_PORT_ACCESS_NOT_ALLOWED , "Establishing a connection to an unsafe or otherwise banned port was prohibited") Loading netwerk/protocol/http/TunnelUtils.cpp +5 −18 Original line number Diff line number Diff line Loading @@ -1168,24 +1168,11 @@ void SpdyConnectTransaction::MapStreamToHttpConnection( mTunnelStreamOut = new OutputStreamShim(this, mIsWebsocket); mTunneledConn = new nsHttpConnection(); switch (httpResponseCode) { case 404: CreateShimError(NS_ERROR_UNKNOWN_HOST); break; case 407: CreateShimError(NS_ERROR_PROXY_AUTHENTICATION_FAILED); break; case 429: CreateShimError(NS_ERROR_TOO_MANY_REQUESTS); break; case 502: CreateShimError(NS_ERROR_PROXY_BAD_GATEWAY); break; case 504: CreateShimError(NS_ERROR_PROXY_GATEWAY_TIMEOUT); break; default: break; if (httpResponseCode != 200) { nsresult err = HttpProxyResponseToErrorCode(httpResponseCode); if (NS_FAILED(err)) { CreateShimError(err); } } // this new http connection has a specific hashkey (i.e. to a particular Loading netwerk/protocol/http/nsHttp.cpp +136 −0 Original line number Diff line number Diff line Loading @@ -841,5 +841,141 @@ void LogHeaders(const char* lineStart) { } } nsresult HttpProxyResponseToErrorCode(uint32_t aStatusCode) { MOZ_ASSERT(aStatusCode >= 300, "Call HttpProxyResponseToErrorCode with successful status code!"); nsresult rv; switch (aStatusCode) { case 300: case 301: case 302: case 303: case 307: case 308: // Bad redirect: not top-level, or it's a POST, bad/missing Location, // or ProcessRedirect() failed for some other reason. Legal // redirects that fail because site not available, etc., are handled // elsewhere, in the regular codepath. rv = NS_ERROR_CONNECTION_REFUSED; break; // Squid sends 404 if DNS fails (regular 404 from target is tunneled) case 404: // HTTP/1.1: "Not Found" // RFC 2616: "some deployed proxies are known to return 400 or // 500 when DNS lookups time out." (Squid uses 500 if it runs // out of sockets: so we have a conflict here). case 400: // HTTP/1.1 "Bad Request" case 500: // HTTP/1.1: "Internal Server Error" rv = NS_ERROR_UNKNOWN_HOST; break; case 401: rv = NS_ERROR_PROXY_UNAUTHORIZED; break; case 402: rv = NS_ERROR_PROXY_PAYMENT_REQUIRED; break; case 403: rv = NS_ERROR_PROXY_FORBIDDEN; break; case 405: rv = NS_ERROR_PROXY_METHOD_NOT_ALLOWED; break; case 406: rv = NS_ERROR_PROXY_NOT_ACCEPTABLE; break; case 407: // ProcessAuthentication() failed (e.g. no header) rv = NS_ERROR_PROXY_AUTHENTICATION_FAILED; break; case 408: rv = NS_ERROR_PROXY_REQUEST_TIMEOUT; break; case 409: rv = NS_ERROR_PROXY_CONFLICT; break; case 410: rv = NS_ERROR_PROXY_GONE; break; case 411: rv = NS_ERROR_PROXY_LENGTH_REQUIRED; break; case 412: rv = NS_ERROR_PROXY_PRECONDITION_FAILED; break; case 413: rv = NS_ERROR_PROXY_REQUEST_ENTITY_TOO_LARGE; break; case 414: rv = NS_ERROR_PROXY_REQUEST_URI_TOO_LONG; break; case 415: rv = NS_ERROR_PROXY_UNSUPPORTED_MEDIA_TYPE; break; case 416: rv = NS_ERROR_PROXY_REQUESTED_RANGE_NOT_SATISFIABLE; break; case 417: rv = NS_ERROR_PROXY_EXPECTATION_FAILED; break; case 421: rv = NS_ERROR_PROXY_MISDIRECTED_REQUEST; break; case 425: rv = NS_ERROR_PROXY_TOO_EARLY; break; case 426: rv = NS_ERROR_PROXY_UPGRADE_REQUIRED; break; case 428: rv = NS_ERROR_PROXY_PRECONDITION_REQUIRED; break; case 429: rv = NS_ERROR_PROXY_TOO_MANY_REQUESTS; break; case 431: rv = NS_ERROR_PROXY_REQUEST_HEADER_FIELDS_TOO_LARGE; break; case 451: rv = NS_ERROR_PROXY_UNAVAILABLE_FOR_LEGAL_REASONS; break; case 501: rv = NS_ERROR_PROXY_NOT_IMPLEMENTED; break; case 502: rv = NS_ERROR_PROXY_BAD_GATEWAY; break; case 503: // Squid returns 503 if target request fails for anything but DNS. /* User sees: "Failed to Connect: * Firefox can't establish a connection to the server at * www.foo.com. Though the site seems valid, the browser * was unable to establish a connection." */ rv = NS_ERROR_CONNECTION_REFUSED; break; // RFC 2616 uses 504 for both DNS and target timeout, so not clear what to // do here: picking target timeout, as DNS covered by 400/404/500 case 504: rv = NS_ERROR_PROXY_GATEWAY_TIMEOUT; break; case 505: rv = NS_ERROR_PROXY_VERSION_NOT_SUPPORTED; break; case 506: rv = NS_ERROR_PROXY_VARIANT_ALSO_NEGOTIATES; break; case 510: rv = NS_ERROR_PROXY_NOT_EXTENDED; break; case 511: rv = NS_ERROR_PROXY_NETWORK_AUTHENTICATION_REQUIRED; break; default: rv = NS_ERROR_PROXY_CONNECTION_REFUSED; break; } return rv; } } // namespace net } // namespace mozilla netwerk/protocol/http/nsHttp.h +5 −0 Original line number Diff line number Diff line Loading @@ -336,6 +336,11 @@ class ParsedHeaderValueListList { void LogHeaders(const char* lineStart); // Convert HTTP response codes returned by a proxy to nsresult. // This function should be only used when we get a failed response to the // CONNECT method. nsresult HttpProxyResponseToErrorCode(uint32_t aStatusCode); } // namespace net } // namespace mozilla Loading Loading
docshell/base/nsDocShell.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -4000,7 +4000,7 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI, break; case NS_ERROR_PROXY_CONNECTION_REFUSED: case NS_ERROR_PROXY_AUTHENTICATION_FAILED: case NS_ERROR_TOO_MANY_REQUESTS: case NS_ERROR_PROXY_TOO_MANY_REQUESTS: // Proxy connection was refused. error = "proxyConnectFailure"; break; Loading Loading @@ -6563,7 +6563,7 @@ nsresult nsDocShell::EndPageLoad(nsIWebProgress* aProgress, aStatus == NS_ERROR_UNKNOWN_PROXY_HOST || aStatus == NS_ERROR_PROXY_CONNECTION_REFUSED || aStatus == NS_ERROR_PROXY_AUTHENTICATION_FAILED || aStatus == NS_ERROR_TOO_MANY_REQUESTS || aStatus == NS_ERROR_PROXY_TOO_MANY_REQUESTS || aStatus == NS_ERROR_BLOCKED_BY_POLICY) && (isTopFrame || UseErrorPages())) { DisplayLoadError(aStatus, url, nullptr, aChannel); Loading
js/xpconnect/src/xpc.msg +1 −1 Original line number Diff line number Diff line Loading @@ -148,7 +148,7 @@ XPC_MSG_DEF(NS_ERROR_PROXY_CONNECTION_REFUSED , "The connection to the pro XPC_MSG_DEF(NS_ERROR_PROXY_AUTHENTICATION_FAILED , "The proxy requires authentication") XPC_MSG_DEF(NS_ERROR_PROXY_BAD_GATEWAY , "The request failed on the proxy") XPC_MSG_DEF(NS_ERROR_PROXY_GATEWAY_TIMEOUT , "The request timed out on the proxy") XPC_MSG_DEF(NS_ERROR_TOO_MANY_REQUESTS , "Sending too many requests to a proxy") XPC_MSG_DEF(NS_ERROR_PROXY_TOO_MANY_REQUESTS , "Sending too many requests to a proxy") XPC_MSG_DEF(NS_ERROR_NET_TIMEOUT , "The connection has timed out") XPC_MSG_DEF(NS_ERROR_OFFLINE , "The requested action could not be completed in the offline state") XPC_MSG_DEF(NS_ERROR_PORT_ACCESS_NOT_ALLOWED , "Establishing a connection to an unsafe or otherwise banned port was prohibited") Loading
netwerk/protocol/http/TunnelUtils.cpp +5 −18 Original line number Diff line number Diff line Loading @@ -1168,24 +1168,11 @@ void SpdyConnectTransaction::MapStreamToHttpConnection( mTunnelStreamOut = new OutputStreamShim(this, mIsWebsocket); mTunneledConn = new nsHttpConnection(); switch (httpResponseCode) { case 404: CreateShimError(NS_ERROR_UNKNOWN_HOST); break; case 407: CreateShimError(NS_ERROR_PROXY_AUTHENTICATION_FAILED); break; case 429: CreateShimError(NS_ERROR_TOO_MANY_REQUESTS); break; case 502: CreateShimError(NS_ERROR_PROXY_BAD_GATEWAY); break; case 504: CreateShimError(NS_ERROR_PROXY_GATEWAY_TIMEOUT); break; default: break; if (httpResponseCode != 200) { nsresult err = HttpProxyResponseToErrorCode(httpResponseCode); if (NS_FAILED(err)) { CreateShimError(err); } } // this new http connection has a specific hashkey (i.e. to a particular Loading
netwerk/protocol/http/nsHttp.cpp +136 −0 Original line number Diff line number Diff line Loading @@ -841,5 +841,141 @@ void LogHeaders(const char* lineStart) { } } nsresult HttpProxyResponseToErrorCode(uint32_t aStatusCode) { MOZ_ASSERT(aStatusCode >= 300, "Call HttpProxyResponseToErrorCode with successful status code!"); nsresult rv; switch (aStatusCode) { case 300: case 301: case 302: case 303: case 307: case 308: // Bad redirect: not top-level, or it's a POST, bad/missing Location, // or ProcessRedirect() failed for some other reason. Legal // redirects that fail because site not available, etc., are handled // elsewhere, in the regular codepath. rv = NS_ERROR_CONNECTION_REFUSED; break; // Squid sends 404 if DNS fails (regular 404 from target is tunneled) case 404: // HTTP/1.1: "Not Found" // RFC 2616: "some deployed proxies are known to return 400 or // 500 when DNS lookups time out." (Squid uses 500 if it runs // out of sockets: so we have a conflict here). case 400: // HTTP/1.1 "Bad Request" case 500: // HTTP/1.1: "Internal Server Error" rv = NS_ERROR_UNKNOWN_HOST; break; case 401: rv = NS_ERROR_PROXY_UNAUTHORIZED; break; case 402: rv = NS_ERROR_PROXY_PAYMENT_REQUIRED; break; case 403: rv = NS_ERROR_PROXY_FORBIDDEN; break; case 405: rv = NS_ERROR_PROXY_METHOD_NOT_ALLOWED; break; case 406: rv = NS_ERROR_PROXY_NOT_ACCEPTABLE; break; case 407: // ProcessAuthentication() failed (e.g. no header) rv = NS_ERROR_PROXY_AUTHENTICATION_FAILED; break; case 408: rv = NS_ERROR_PROXY_REQUEST_TIMEOUT; break; case 409: rv = NS_ERROR_PROXY_CONFLICT; break; case 410: rv = NS_ERROR_PROXY_GONE; break; case 411: rv = NS_ERROR_PROXY_LENGTH_REQUIRED; break; case 412: rv = NS_ERROR_PROXY_PRECONDITION_FAILED; break; case 413: rv = NS_ERROR_PROXY_REQUEST_ENTITY_TOO_LARGE; break; case 414: rv = NS_ERROR_PROXY_REQUEST_URI_TOO_LONG; break; case 415: rv = NS_ERROR_PROXY_UNSUPPORTED_MEDIA_TYPE; break; case 416: rv = NS_ERROR_PROXY_REQUESTED_RANGE_NOT_SATISFIABLE; break; case 417: rv = NS_ERROR_PROXY_EXPECTATION_FAILED; break; case 421: rv = NS_ERROR_PROXY_MISDIRECTED_REQUEST; break; case 425: rv = NS_ERROR_PROXY_TOO_EARLY; break; case 426: rv = NS_ERROR_PROXY_UPGRADE_REQUIRED; break; case 428: rv = NS_ERROR_PROXY_PRECONDITION_REQUIRED; break; case 429: rv = NS_ERROR_PROXY_TOO_MANY_REQUESTS; break; case 431: rv = NS_ERROR_PROXY_REQUEST_HEADER_FIELDS_TOO_LARGE; break; case 451: rv = NS_ERROR_PROXY_UNAVAILABLE_FOR_LEGAL_REASONS; break; case 501: rv = NS_ERROR_PROXY_NOT_IMPLEMENTED; break; case 502: rv = NS_ERROR_PROXY_BAD_GATEWAY; break; case 503: // Squid returns 503 if target request fails for anything but DNS. /* User sees: "Failed to Connect: * Firefox can't establish a connection to the server at * www.foo.com. Though the site seems valid, the browser * was unable to establish a connection." */ rv = NS_ERROR_CONNECTION_REFUSED; break; // RFC 2616 uses 504 for both DNS and target timeout, so not clear what to // do here: picking target timeout, as DNS covered by 400/404/500 case 504: rv = NS_ERROR_PROXY_GATEWAY_TIMEOUT; break; case 505: rv = NS_ERROR_PROXY_VERSION_NOT_SUPPORTED; break; case 506: rv = NS_ERROR_PROXY_VARIANT_ALSO_NEGOTIATES; break; case 510: rv = NS_ERROR_PROXY_NOT_EXTENDED; break; case 511: rv = NS_ERROR_PROXY_NETWORK_AUTHENTICATION_REQUIRED; break; default: rv = NS_ERROR_PROXY_CONNECTION_REFUSED; break; } return rv; } } // namespace net } // namespace mozilla
netwerk/protocol/http/nsHttp.h +5 −0 Original line number Diff line number Diff line Loading @@ -336,6 +336,11 @@ class ParsedHeaderValueListList { void LogHeaders(const char* lineStart); // Convert HTTP response codes returned by a proxy to nsresult. // This function should be only used when we get a failed response to the // CONNECT method. nsresult HttpProxyResponseToErrorCode(uint32_t aStatusCode); } // namespace net } // namespace mozilla Loading