Index: jingle/glue/proxy_resolving_client_socket.cc |
diff --git a/jingle/glue/proxy_resolving_client_socket.cc b/jingle/glue/proxy_resolving_client_socket.cc |
index d7fcb13a990e8ca32032d3bd27a48fad780a5d4a..8b4ecf22e7aa1bf93906684753cf35cf4777e204 100644 |
--- a/jingle/glue/proxy_resolving_client_socket.cc |
+++ b/jingle/glue/proxy_resolving_client_socket.cc |
@@ -12,7 +12,9 @@ |
#include "net/base/io_buffer.h" |
#include "net/base/load_flags.h" |
#include "net/base/net_errors.h" |
+#include "net/http/http_auth_controller.h" |
#include "net/http/http_network_session.h" |
+#include "net/http/proxy_client_socket.h" |
#include "net/socket/client_socket_handle.h" |
#include "net/socket/client_socket_pool_manager.h" |
#include "net/url_request/url_request_context.h" |
@@ -270,6 +272,15 @@ int ProxyResolvingClientSocket::ReconsiderProxyAfterError(int error) { |
// "address unreachable" error, and will report both of these failures as |
// ERR_ADDRESS_UNREACHABLE. |
return net::ERR_ADDRESS_UNREACHABLE; |
+ case net::ERR_PROXY_AUTH_REQUESTED: { |
+ net::ProxyClientSocket* proxy_socket = |
+ static_cast<net::ProxyClientSocket*>(transport_->socket()); |
+ |
+ if (proxy_socket->GetAuthController()->HaveAuth()) |
+ return proxy_socket->RestartWithAuth(connect_callback_); |
+ |
+ return error; |
+ } |
default: |
return error; |
} |