Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(473)

Side by Side Diff: net/spdy/spdy_session.cc

Issue 567403002: Log SPDY protocol specific setting IDs (alternate). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 17 matching lines...) Expand all
28 #include "net/base/connection_type_histograms.h" 28 #include "net/base/connection_type_histograms.h"
29 #include "net/base/net_log.h" 29 #include "net/base/net_log.h"
30 #include "net/base/net_util.h" 30 #include "net/base/net_util.h"
31 #include "net/cert/asn1_util.h" 31 #include "net/cert/asn1_util.h"
32 #include "net/cert/cert_verify_result.h" 32 #include "net/cert/cert_verify_result.h"
33 #include "net/http/http_log_util.h" 33 #include "net/http/http_log_util.h"
34 #include "net/http/http_network_session.h" 34 #include "net/http/http_network_session.h"
35 #include "net/http/http_server_properties.h" 35 #include "net/http/http_server_properties.h"
36 #include "net/http/http_util.h" 36 #include "net/http/http_util.h"
37 #include "net/http/transport_security_state.h" 37 #include "net/http/transport_security_state.h"
38 #include "net/socket/ssl_client_socket.h"
38 #include "net/spdy/spdy_buffer_producer.h" 39 #include "net/spdy/spdy_buffer_producer.h"
39 #include "net/spdy/spdy_frame_builder.h" 40 #include "net/spdy/spdy_frame_builder.h"
40 #include "net/spdy/spdy_http_utils.h" 41 #include "net/spdy/spdy_http_utils.h"
41 #include "net/spdy/spdy_protocol.h" 42 #include "net/spdy/spdy_protocol.h"
42 #include "net/spdy/spdy_session_pool.h" 43 #include "net/spdy/spdy_session_pool.h"
43 #include "net/spdy/spdy_stream.h" 44 #include "net/spdy/spdy_stream.h"
44 #include "net/ssl/channel_id_service.h" 45 #include "net/ssl/channel_id_service.h"
45 #include "net/ssl/ssl_cipher_suite_names.h" 46 #include "net/ssl/ssl_cipher_suite_names.h"
46 #include "net/ssl/ssl_connection_status_flags.h" 47 #include "net/ssl/ssl_connection_status_flags.h"
47 48
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 } 128 }
128 129
129 base::Value* NetLogSpdySessionCallback(const HostPortProxyPair* host_pair, 130 base::Value* NetLogSpdySessionCallback(const HostPortProxyPair* host_pair,
130 NetLog::LogLevel /* log_level */) { 131 NetLog::LogLevel /* log_level */) {
131 base::DictionaryValue* dict = new base::DictionaryValue(); 132 base::DictionaryValue* dict = new base::DictionaryValue();
132 dict->SetString("host", host_pair->first.ToString()); 133 dict->SetString("host", host_pair->first.ToString());
133 dict->SetString("proxy", host_pair->second.ToPacString()); 134 dict->SetString("proxy", host_pair->second.ToPacString());
134 return dict; 135 return dict;
135 } 136 }
136 137
138 base::Value* NetLogSpdyInitializedCallback(NetLog::Source source,
139 const NextProto protocol_version,
140 NetLog::LogLevel /* log_level */) {
141 base::DictionaryValue* dict = new base::DictionaryValue();
142 if (source.IsValid()) {
143 source.AddToEventParameters(dict);
144 }
145 dict->SetString("protocol",
146 SSLClientSocket::NextProtoToString(protocol_version));
147 return dict;
148 }
149
137 base::Value* NetLogSpdySettingsCallback(const HostPortPair& host_port_pair, 150 base::Value* NetLogSpdySettingsCallback(const HostPortPair& host_port_pair,
138 bool clear_persisted, 151 bool clear_persisted,
139 NetLog::LogLevel /* log_level */) { 152 NetLog::LogLevel /* log_level */) {
140 base::DictionaryValue* dict = new base::DictionaryValue(); 153 base::DictionaryValue* dict = new base::DictionaryValue();
141 dict->SetString("host", host_port_pair.ToString()); 154 dict->SetString("host", host_port_pair.ToString());
142 dict->SetBoolean("clear_persisted", clear_persisted); 155 dict->SetBoolean("clear_persisted", clear_persisted);
143 return dict; 156 return dict;
144 } 157 }
145 158
146 base::Value* NetLogSpdySettingCallback(SpdySettingsIds id, 159 base::Value* NetLogSpdySettingCallback(SpdySettingsIds id,
160 const SpdyMajorVersion protocol_version,
147 SpdySettingsFlags flags, 161 SpdySettingsFlags flags,
148 uint32 value, 162 uint32 value,
149 NetLog::LogLevel /* log_level */) { 163 NetLog::LogLevel /* log_level */) {
150 base::DictionaryValue* dict = new base::DictionaryValue(); 164 base::DictionaryValue* dict = new base::DictionaryValue();
151 dict->SetInteger("id", id); 165 dict->SetInteger("id",
166 SpdyConstants::SerializeSettingId(protocol_version, id));
152 dict->SetInteger("flags", flags); 167 dict->SetInteger("flags", flags);
153 dict->SetInteger("value", value); 168 dict->SetInteger("value", value);
154 return dict; 169 return dict;
155 } 170 }
156 171
157 base::Value* NetLogSpdySendSettingsCallback(const SettingsMap* settings, 172 base::Value* NetLogSpdySendSettingsCallback(
158 NetLog::LogLevel /* log_level */) { 173 const SettingsMap* settings,
174 const SpdyMajorVersion protocol_version,
175 NetLog::LogLevel /* log_level */) {
159 base::DictionaryValue* dict = new base::DictionaryValue(); 176 base::DictionaryValue* dict = new base::DictionaryValue();
160 base::ListValue* settings_list = new base::ListValue(); 177 base::ListValue* settings_list = new base::ListValue();
161 for (SettingsMap::const_iterator it = settings->begin(); 178 for (SettingsMap::const_iterator it = settings->begin();
162 it != settings->end(); ++it) { 179 it != settings->end(); ++it) {
163 const SpdySettingsIds id = it->first; 180 const SpdySettingsIds id = it->first;
164 const SpdySettingsFlags flags = it->second.first; 181 const SpdySettingsFlags flags = it->second.first;
165 const uint32 value = it->second.second; 182 const uint32 value = it->second.second;
166 settings_list->Append(new base::StringValue( 183 settings_list->Append(new base::StringValue(base::StringPrintf(
167 base::StringPrintf("[id:%u flags:%u value:%u]", id, flags, value))); 184 "[id:%u flags:%u value:%u]",
185 SpdyConstants::SerializeSettingId(protocol_version, id),
186 flags,
187 value)));
168 } 188 }
169 dict->Set("settings", settings_list); 189 dict->Set("settings", settings_list);
170 return dict; 190 return dict;
171 } 191 }
172 192
173 base::Value* NetLogSpdyWindowUpdateFrameCallback( 193 base::Value* NetLogSpdyWindowUpdateFrameCallback(
174 SpdyStreamId stream_id, 194 SpdyStreamId stream_id,
175 uint32 delta, 195 uint32 delta,
176 NetLog::LogLevel /* log_level */) { 196 NetLog::LogLevel /* log_level */) {
177 base::DictionaryValue* dict = new base::DictionaryValue(); 197 base::DictionaryValue* dict = new base::DictionaryValue();
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 enable_compression_)); 739 enable_compression_));
720 buffered_spdy_framer_->set_visitor(this); 740 buffered_spdy_framer_->set_visitor(this);
721 buffered_spdy_framer_->set_debug_visitor(this); 741 buffered_spdy_framer_->set_debug_visitor(this);
722 UMA_HISTOGRAM_ENUMERATION("Net.SpdyVersion", protocol_, kProtoMaximumVersion); 742 UMA_HISTOGRAM_ENUMERATION("Net.SpdyVersion", protocol_, kProtoMaximumVersion);
723 #if defined(SPDY_PROXY_AUTH_ORIGIN) 743 #if defined(SPDY_PROXY_AUTH_ORIGIN)
724 UMA_HISTOGRAM_BOOLEAN("Net.SpdySessions_DataReductionProxy", 744 UMA_HISTOGRAM_BOOLEAN("Net.SpdySessions_DataReductionProxy",
725 host_port_pair().Equals(HostPortPair::FromURL( 745 host_port_pair().Equals(HostPortPair::FromURL(
726 GURL(SPDY_PROXY_AUTH_ORIGIN)))); 746 GURL(SPDY_PROXY_AUTH_ORIGIN))));
727 #endif 747 #endif
728 748
729 net_log_.AddEvent( 749 net_log_.AddEvent(NetLog::TYPE_SPDY_SESSION_INITIALIZED,
730 NetLog::TYPE_SPDY_SESSION_INITIALIZED, 750 base::Bind(&NetLogSpdyInitializedCallback,
731 connection_->socket()->NetLog().source().ToEventParametersCallback()); 751 connection_->socket()->NetLog().source(),
752 protocol_));
732 753
733 DCHECK_EQ(availability_state_, STATE_AVAILABLE); 754 DCHECK_EQ(availability_state_, STATE_AVAILABLE);
734 connection_->AddHigherLayeredPool(this); 755 connection_->AddHigherLayeredPool(this);
735 if (enable_sending_initial_data_) 756 if (enable_sending_initial_data_)
736 SendInitialData(); 757 SendInitialData();
737 pool_ = pool; 758 pool_ = pool;
738 759
739 // Bootstrap the read loop. 760 // Bootstrap the read loop.
740 base::MessageLoop::current()->PostTask( 761 base::MessageLoop::current()->PostTask(
741 FROM_HERE, 762 FROM_HERE,
(...skipping 1353 matching lines...) Expand 10 before | Expand all | Expand 10 after
2095 2116
2096 HandleSetting(id, value); 2117 HandleSetting(id, value);
2097 http_server_properties_->SetSpdySetting( 2118 http_server_properties_->SetSpdySetting(
2098 host_port_pair(), 2119 host_port_pair(),
2099 id, 2120 id,
2100 static_cast<SpdySettingsFlags>(flags), 2121 static_cast<SpdySettingsFlags>(flags),
2101 value); 2122 value);
2102 received_settings_ = true; 2123 received_settings_ = true;
2103 2124
2104 // Log the setting. 2125 // Log the setting.
2105 net_log_.AddEvent( 2126 const SpdyMajorVersion protocol_version = GetProtocolVersion();
2106 NetLog::TYPE_SPDY_SESSION_RECV_SETTING, 2127 net_log_.AddEvent(NetLog::TYPE_SPDY_SESSION_RECV_SETTING,
2107 base::Bind(&NetLogSpdySettingCallback, 2128 base::Bind(&NetLogSpdySettingCallback,
2108 id, static_cast<SpdySettingsFlags>(flags), value)); 2129 id,
2130 protocol_version,
2131 static_cast<SpdySettingsFlags>(flags),
2132 value));
2109 } 2133 }
2110 2134
2111 void SpdySession::OnSendCompressedFrame( 2135 void SpdySession::OnSendCompressedFrame(
2112 SpdyStreamId stream_id, 2136 SpdyStreamId stream_id,
2113 SpdyFrameType type, 2137 SpdyFrameType type,
2114 size_t payload_len, 2138 size_t payload_len,
2115 size_t frame_len) { 2139 size_t frame_len) {
2116 if (type != SYN_STREAM && type != HEADERS) 2140 if (type != SYN_STREAM && type != HEADERS)
2117 return; 2141 return;
2118 2142
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
2777 const uint32 new_val = it->second.second; 2801 const uint32 new_val = it->second.second;
2778 HandleSetting(new_id, new_val); 2802 HandleSetting(new_id, new_val);
2779 } 2803 }
2780 2804
2781 SendSettings(server_settings_map); 2805 SendSettings(server_settings_map);
2782 } 2806 }
2783 } 2807 }
2784 2808
2785 2809
2786 void SpdySession::SendSettings(const SettingsMap& settings) { 2810 void SpdySession::SendSettings(const SettingsMap& settings) {
2811 const SpdyMajorVersion protocol_version = GetProtocolVersion();
2787 net_log_.AddEvent( 2812 net_log_.AddEvent(
2788 NetLog::TYPE_SPDY_SESSION_SEND_SETTINGS, 2813 NetLog::TYPE_SPDY_SESSION_SEND_SETTINGS,
2789 base::Bind(&NetLogSpdySendSettingsCallback, &settings)); 2814 base::Bind(&NetLogSpdySendSettingsCallback, &settings, protocol_version));
2790
2791 // Create the SETTINGS frame and send it. 2815 // Create the SETTINGS frame and send it.
2792 DCHECK(buffered_spdy_framer_.get()); 2816 DCHECK(buffered_spdy_framer_.get());
2793 scoped_ptr<SpdyFrame> settings_frame( 2817 scoped_ptr<SpdyFrame> settings_frame(
2794 buffered_spdy_framer_->CreateSettings(settings)); 2818 buffered_spdy_framer_->CreateSettings(settings));
2795 sent_settings_ = true; 2819 sent_settings_ = true;
2796 EnqueueSessionWrite(HIGHEST, SETTINGS, settings_frame.Pass()); 2820 EnqueueSessionWrite(HIGHEST, SETTINGS, settings_frame.Pass());
2797 } 2821 }
2798 2822
2799 void SpdySession::HandleSetting(uint32 id, uint32 value) { 2823 void SpdySession::HandleSetting(uint32 id, uint32 value) {
2800 switch (id) { 2824 switch (id) {
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
3231 if (!queue->empty()) { 3255 if (!queue->empty()) {
3232 SpdyStreamId stream_id = queue->front(); 3256 SpdyStreamId stream_id = queue->front();
3233 queue->pop_front(); 3257 queue->pop_front();
3234 return stream_id; 3258 return stream_id;
3235 } 3259 }
3236 } 3260 }
3237 return 0; 3261 return 0;
3238 } 3262 }
3239 3263
3240 } // namespace net 3264 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698