OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/spdy/spdy_session.h" | 5 #include "net/spdy/spdy_session.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 dict->SetInteger("flags", flags_); | 60 dict->SetInteger("flags", flags_); |
61 dict->Set("headers", headers_list); | 61 dict->Set("headers", headers_list); |
62 dict->SetInteger("stream_id", stream_id_); | 62 dict->SetInteger("stream_id", stream_id_); |
63 if (associated_stream_) | 63 if (associated_stream_) |
64 dict->SetInteger("associated_stream", associated_stream_); | 64 dict->SetInteger("associated_stream", associated_stream_); |
65 return dict; | 65 return dict; |
66 } | 66 } |
67 | 67 |
68 NetLogSpdySynParameter::~NetLogSpdySynParameter() {} | 68 NetLogSpdySynParameter::~NetLogSpdySynParameter() {} |
69 | 69 |
| 70 NetLogSpdySynRenumberParameter::NetLogSpdySynRenumberParameter( |
| 71 SpdyStreamId old_id, |
| 72 SpdyStreamId new_id) |
| 73 : old_id_(old_id), |
| 74 new_id_(new_id) { |
| 75 } |
| 76 |
| 77 Value* NetLogSpdySynRenumberParameter::ToValue() const { |
| 78 DictionaryValue* dict = new DictionaryValue(); |
| 79 dict->SetInteger("old_id", old_id_); |
| 80 dict->SetInteger("new_id", new_id_); |
| 81 return dict; |
| 82 } |
| 83 |
| 84 NetLogSpdySynRenumberParameter::~NetLogSpdySynRenumberParameter() {} |
| 85 |
| 86 |
70 NetLogSpdyCredentialParameter::NetLogSpdyCredentialParameter( | 87 NetLogSpdyCredentialParameter::NetLogSpdyCredentialParameter( |
71 size_t slot, | 88 size_t slot, |
72 const std::string& origin) | 89 const std::string& origin) |
73 : slot_(slot), | 90 : slot_(slot), |
74 origin_(origin) { | 91 origin_(origin) { |
75 } | 92 } |
76 | 93 |
77 Value* NetLogSpdyCredentialParameter::ToValue() const { | 94 Value* NetLogSpdyCredentialParameter::ToValue() const { |
78 DictionaryValue* dict = new DictionaryValue(); | 95 DictionaryValue* dict = new DictionaryValue(); |
79 dict->SetInteger("slot", slot_); | 96 dict->SetInteger("slot", slot_); |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
341 const HostPortPair& trusted_spdy_proxy, | 358 const HostPortPair& trusted_spdy_proxy, |
342 NetLog* net_log) | 359 NetLog* net_log) |
343 : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), | 360 : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), |
344 host_port_proxy_pair_(host_port_proxy_pair), | 361 host_port_proxy_pair_(host_port_proxy_pair), |
345 spdy_session_pool_(spdy_session_pool), | 362 spdy_session_pool_(spdy_session_pool), |
346 http_server_properties_(http_server_properties), | 363 http_server_properties_(http_server_properties), |
347 connection_(new ClientSocketHandle), | 364 connection_(new ClientSocketHandle), |
348 read_buffer_(new IOBuffer(kReadBufferSize)), | 365 read_buffer_(new IOBuffer(kReadBufferSize)), |
349 read_pending_(false), | 366 read_pending_(false), |
350 stream_hi_water_mark_(1), // Always start at 1 for the first stream id. | 367 stream_hi_water_mark_(1), // Always start at 1 for the first stream id. |
| 368 last_syn_stream_id_(0), |
351 write_pending_(false), | 369 write_pending_(false), |
352 delayed_write_pending_(false), | 370 delayed_write_pending_(false), |
353 is_secure_(false), | 371 is_secure_(false), |
354 certificate_error_code_(OK), | 372 certificate_error_code_(OK), |
355 error_(OK), | 373 error_(OK), |
356 state_(IDLE), | 374 state_(IDLE), |
357 max_concurrent_streams_(g_init_max_concurrent_streams), | 375 max_concurrent_streams_(g_init_max_concurrent_streams), |
358 streams_initiated_count_(0), | 376 streams_initiated_count_(0), |
359 streams_pushed_count_(0), | 377 streams_pushed_count_(0), |
360 streams_pushed_and_claimed_count_(0), | 378 streams_pushed_and_claimed_count_(0), |
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1009 while (in_flight_write_.buffer() || !queue_.empty()) { | 1027 while (in_flight_write_.buffer() || !queue_.empty()) { |
1010 if (!in_flight_write_.buffer()) { | 1028 if (!in_flight_write_.buffer()) { |
1011 // Grab the next SpdyFrame to send. | 1029 // Grab the next SpdyFrame to send. |
1012 SpdyIOBuffer next_buffer = queue_.top(); | 1030 SpdyIOBuffer next_buffer = queue_.top(); |
1013 queue_.pop(); | 1031 queue_.pop(); |
1014 | 1032 |
1015 // We've deferred compression until just before we write it to the socket, | 1033 // We've deferred compression until just before we write it to the socket, |
1016 // which is now. At this time, we don't compress our data frames. | 1034 // which is now. At this time, we don't compress our data frames. |
1017 SpdyFrame uncompressed_frame(next_buffer.buffer()->data(), false); | 1035 SpdyFrame uncompressed_frame(next_buffer.buffer()->data(), false); |
1018 size_t size; | 1036 size_t size; |
| 1037 if (uncompressed_frame.is_control_frame()) { |
| 1038 SpdyControlFrame control_frame(next_buffer.buffer()->data(), false); |
| 1039 if (control_frame.type() == SYN_STREAM) { |
| 1040 SpdySynStreamControlFrame syn_stream(next_buffer.buffer()->data(), |
| 1041 false); |
| 1042 SpdyStreamId id = syn_stream.stream_id(); |
| 1043 DCHECK(IsStreamActive(id)); |
| 1044 if (id < last_syn_stream_id_) { |
| 1045 SpdyStreamId old_id = id; |
| 1046 // need to play some games to change the stream_id |
| 1047 scoped_refptr<SpdyStream> stream = active_streams_[id]; |
| 1048 active_streams_.erase(id); |
| 1049 id = GetNewStreamId(); |
| 1050 syn_stream.set_stream_id(id); |
| 1051 stream->set_stream_id(id); |
| 1052 ActivateStream(stream); |
| 1053 |
| 1054 if (net_log().IsLoggingAllEvents()) { |
| 1055 net_log().AddEvent( |
| 1056 NetLog::TYPE_SPDY_SESSION_SYN_STREAM_RENUMBER, |
| 1057 make_scoped_refptr( |
| 1058 new NetLogSpdySynRenumberParameter(old_id, id))); |
| 1059 } |
| 1060 } |
| 1061 last_syn_stream_id_ = id; |
| 1062 } |
| 1063 } |
1019 if (buffered_spdy_framer_->IsCompressible(uncompressed_frame)) { | 1064 if (buffered_spdy_framer_->IsCompressible(uncompressed_frame)) { |
1020 DCHECK(uncompressed_frame.is_control_frame()); | 1065 DCHECK(uncompressed_frame.is_control_frame()); |
1021 scoped_ptr<SpdyFrame> compressed_frame( | 1066 scoped_ptr<SpdyFrame> compressed_frame( |
1022 buffered_spdy_framer_->CompressControlFrame( | 1067 buffered_spdy_framer_->CompressControlFrame( |
1023 reinterpret_cast<const SpdyControlFrame&>(uncompressed_frame))); | 1068 reinterpret_cast<const SpdyControlFrame&>(uncompressed_frame))); |
1024 if (!compressed_frame.get()) { | 1069 if (!compressed_frame.get()) { |
1025 RecordProtocolErrorHistogram( | 1070 RecordProtocolErrorHistogram( |
1026 PROTOCOL_ERROR_SPDY_COMPRESSION_FAILURE); | 1071 PROTOCOL_ERROR_SPDY_COMPRESSION_FAILURE); |
1027 CloseSessionOnError( | 1072 CloseSessionOnError( |
1028 net::ERR_SPDY_PROTOCOL_ERROR, true, "SPDY Compression failure."); | 1073 net::ERR_SPDY_PROTOCOL_ERROR, true, "SPDY Compression failure."); |
(...skipping 909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1938 SSLClientSocket* SpdySession::GetSSLClientSocket() const { | 1983 SSLClientSocket* SpdySession::GetSSLClientSocket() const { |
1939 if (!is_secure_) | 1984 if (!is_secure_) |
1940 return NULL; | 1985 return NULL; |
1941 SSLClientSocket* ssl_socket = | 1986 SSLClientSocket* ssl_socket = |
1942 reinterpret_cast<SSLClientSocket*>(connection_->socket()); | 1987 reinterpret_cast<SSLClientSocket*>(connection_->socket()); |
1943 DCHECK(ssl_socket); | 1988 DCHECK(ssl_socket); |
1944 return ssl_socket; | 1989 return ssl_socket; |
1945 } | 1990 } |
1946 | 1991 |
1947 } // namespace net | 1992 } // namespace net |
OLD | NEW |