summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/http/http_proxy_client_socket_pool_unittest.cc40
-rw-r--r--net/spdy/spdy_proxy_client_socket.cc2
-rw-r--r--net/spdy/spdy_proxy_client_socket_unittest.cc4
3 files changed, 29 insertions, 17 deletions
diff --git a/net/http/http_proxy_client_socket_pool_unittest.cc b/net/http/http_proxy_client_socket_pool_unittest.cc
index 0e99ac2..e2276e4 100644
--- a/net/http/http_proxy_client_socket_pool_unittest.cc
+++ b/net/http/http_proxy_client_socket_pool_unittest.cc
@@ -258,9 +258,22 @@ TEST_P(HttpProxyClientSocketPoolTest, NeedAuth) {
CreateMockWrite(*req, 0, ASYNC),
CreateMockWrite(*rst, 2, ASYNC),
};
+ static const char* const kAuthChallenge[] = {
+ "status", "407 Proxy Authentication Required",
+ "version", "HTTP/1.1",
+ "proxy-authenticate", "Basic realm=\"MyRealm1\"",
+ };
scoped_ptr<spdy::SpdyFrame> resp(
- ConstructSpdySynReplyError(
- "407 Proxy Authentication Required", NULL, 0, 1));
+
+ ConstructSpdyControlFrame(NULL,
+ 0,
+ false,
+ 1,
+ LOWEST,
+ spdy::SYN_REPLY,
+ spdy::CONTROL_FLAG_NONE,
+ kAuthChallenge,
+ arraysize(kAuthChallenge)));
MockRead spdy_reads[] = {
CreateMockWrite(*resp, 1, ASYNC),
MockRead(ASYNC, 0, 3)
@@ -277,21 +290,20 @@ TEST_P(HttpProxyClientSocketPoolTest, NeedAuth) {
EXPECT_FALSE(handle_.is_initialized());
EXPECT_FALSE(handle_.socket());
- data_->RunFor(4);
+ data_->RunFor(GetParam() == SPDY ? 2 : 4);
rv = callback_.WaitForResult();
- if (GetParam() != SPDY) {
- EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, rv);
- EXPECT_TRUE(handle_.is_initialized());
- ASSERT_TRUE(handle_.socket());
- HttpProxyClientSocket* tunnel_socket =
- static_cast<HttpProxyClientSocket*>(handle_.socket());
+ EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, rv);
+ EXPECT_TRUE(handle_.is_initialized());
+ ASSERT_TRUE(handle_.socket());
+ ProxyClientSocket* tunnel_socket =
+ static_cast<ProxyClientSocket*>(handle_.socket());
+ if (GetParam() == SPDY) {
+ EXPECT_TRUE(tunnel_socket->IsConnected());
+ EXPECT_TRUE(tunnel_socket->IsUsingSpdy());
+ } else {
EXPECT_FALSE(tunnel_socket->IsConnected());
EXPECT_FALSE(tunnel_socket->IsUsingSpdy());
- } else {
- // Proxy auth is not really implemented for SPDY yet
- EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv);
- EXPECT_FALSE(handle_.is_initialized());
- EXPECT_FALSE(handle_.socket());
+ EXPECT_FALSE(tunnel_socket->IsUsingSpdy());
}
}
diff --git a/net/spdy/spdy_proxy_client_socket.cc b/net/spdy/spdy_proxy_client_socket.cc
index 43195b8..f44bfa1 100644
--- a/net/spdy/spdy_proxy_client_socket.cc
+++ b/net/spdy/spdy_proxy_client_socket.cc
@@ -411,7 +411,7 @@ int SpdyProxyClientSocket::DoReadReplyComplete(int result) {
if (response_.headers->response_code() == 200) {
return OK;
} else if (response_.headers->response_code() == 407) {
- return ERR_TUNNEL_CONNECTION_FAILED;
+ return HandleProxyAuthChallenge(auth_, &response_, net_log_);
} else {
// Immediately hand off our SpdyStream to a newly created SpdyHttpStream
// so that any subsequent SpdyFrames are processed in the context of
diff --git a/net/spdy/spdy_proxy_client_socket_unittest.cc b/net/spdy/spdy_proxy_client_socket_unittest.cc
index 1c520b9..b6a3d4e 100644
--- a/net/spdy/spdy_proxy_client_socket_unittest.cc
+++ b/net/spdy/spdy_proxy_client_socket_unittest.cc
@@ -450,7 +450,7 @@ TEST_F(SpdyProxyClientSocketTest, ConnectWithAuthRequested) {
Initialize(reads, arraysize(reads), writes, arraysize(writes));
- AssertConnectFails(ERR_TUNNEL_CONNECTION_FAILED);
+ AssertConnectFails(ERR_PROXY_AUTH_REQUESTED);
const HttpResponseInfo* response = sock_->GetConnectResponseInfo();
ASSERT_TRUE(response != NULL);
@@ -831,7 +831,7 @@ TEST_F(SpdyProxyClientSocketTest, ReadAuthResponseBody) {
Initialize(reads, arraysize(reads), writes, arraysize(writes));
- AssertConnectFails(ERR_TUNNEL_CONNECTION_FAILED);
+ AssertConnectFails(ERR_PROXY_AUTH_REQUESTED);
Run(2); // SpdySession consumes the next two reads and sends then to
// sock_ to be buffered.