| Index: net/spdy/spdy_session.cc
 | 
| diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
 | 
| index 203f3287191932eeaef3ec14cb3dc2815cfbdd6f..7f3fa70e2a7acabf6525c14a60f1cbbe71c32ada 100644
 | 
| --- a/net/spdy/spdy_session.cc
 | 
| +++ b/net/spdy/spdy_session.cc
 | 
| @@ -436,19 +436,17 @@ net::Error SpdySession::InitializeWithSocket(
 | 
|    certificate_error_code_ = certificate_error_code;
 | 
|  
 | 
|    NextProto protocol = g_default_protocol;
 | 
| -  if (is_secure_) {
 | 
| -    SSLClientSocket* ssl_socket = GetSSLClientSocket();
 | 
| -    NextProto protocol_negotiated = ssl_socket->GetNegotiatedProtocol();
 | 
| -    if (protocol_negotiated != kProtoUnknown) {
 | 
| -      protocol = protocol_negotiated;
 | 
| -    }
 | 
| +  NextProto protocol_negotiated = connection->socket()->GetNegotiatedProtocol();
 | 
| +  if (protocol_negotiated != kProtoUnknown) {
 | 
| +    protocol = protocol_negotiated;
 | 
| +  }
 | 
|  
 | 
| -    if (ssl_socket->WasDomainBoundCertSent()) {
 | 
| -      // According to the SPDY spec, the credential associated with the TLS
 | 
| -      // connection is stored in slot[1].
 | 
| -      credential_state_.SetHasCredential(GURL("https://" +
 | 
| -                                              host_port_pair().ToString()));
 | 
| -    }
 | 
| +  SSLClientSocket* ssl_socket = GetSSLClientSocket();
 | 
| +  if (ssl_socket && ssl_socket->WasDomainBoundCertSent()) {
 | 
| +    // According to the SPDY spec, the credential associated with the TLS
 | 
| +    // connection is stored in slot[1].
 | 
| +    credential_state_.SetHasCredential(GURL("https://" +
 | 
| +                                            host_port_pair().ToString()));
 | 
|    }
 | 
|  
 | 
|    DCHECK(protocol >= kProtoSPDY2);
 | 
| @@ -825,7 +823,6 @@ void SpdySession::CloseStream(SpdyStreamId stream_id, int status) {
 | 
|  void SpdySession::ResetStream(SpdyStreamId stream_id,
 | 
|                                SpdyStatusCodes status,
 | 
|                                const std::string& description) {
 | 
| -
 | 
|    net_log().AddEvent(
 | 
|        NetLog::TYPE_SPDY_SESSION_SEND_RST_STREAM,
 | 
|        make_scoped_refptr(new NetLogSpdyRstParameter(stream_id, status,
 | 
| @@ -1431,20 +1428,13 @@ void SpdySession::OnSynStream(
 | 
|    // TODO(mbelshe): DCHECK that this is a GET method?
 | 
|  
 | 
|    // Verify that the response had a URL for us.
 | 
| -  const std::string& url = ContainsKey(*headers, "url") ?
 | 
| -      headers->find("url")->second : "";
 | 
| -  if (url.empty()) {
 | 
| -    ResetStream(stream_id, PROTOCOL_ERROR,
 | 
| -                "Pushed stream did not contain a url.");
 | 
| -    return;
 | 
| -  }
 | 
| -
 | 
| -  GURL gurl(url);
 | 
| +  GURL gurl = GetUrlFromHeaderBlock(*headers, GetProtocolVersion(), true);
 | 
|    if (!gurl.is_valid()) {
 | 
|      ResetStream(stream_id, PROTOCOL_ERROR,
 | 
| -                "Pushed stream url was invalid: " + url);
 | 
| +                "Pushed stream url was invalid: " + gurl.spec());
 | 
|      return;
 | 
|    }
 | 
| +  const std::string& url = gurl.spec();
 | 
|  
 | 
|    // Verify we have a valid stream association.
 | 
|    if (!IsStreamActive(associated_stream_id)) {
 | 
| 
 |