Index: net/http/http_network_session.cc |
diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc |
index fda084eab56900bcf246229fa108e0e9c72f91f0..d1fa02c77bb7ada11e5301866ce408078658ad3d 100644 |
--- a/net/http/http_network_session.cc |
+++ b/net/http/http_network_session.cc |
@@ -103,6 +103,7 @@ HttpNetworkSession::Params::Params() |
: client_socket_factory(nullptr), |
host_resolver(nullptr), |
cert_verifier(nullptr), |
+ enable_server_push_cancellation(false), |
channel_id_service(nullptr), |
transport_security_state(nullptr), |
cert_transparency_verifier(nullptr), |
@@ -172,6 +173,7 @@ HttpNetworkSession::HttpNetworkSession(const Params& params) |
: net_log_(params.net_log), |
http_server_properties_(params.http_server_properties), |
cert_verifier_(params.cert_verifier), |
+ enable_server_push_cancellation_(params.enable_server_push_cancellation), |
http_auth_handler_factory_(params.http_auth_handler_factory), |
proxy_service_(params.proxy_service), |
ssl_config_service_(params.ssl_config_service), |
@@ -396,7 +398,9 @@ bool HttpNetworkSession::IsProtocolEnabled(NextProto protocol) const { |
void HttpNetworkSession::SetServerPushDelegate( |
std::unique_ptr<ServerPushDelegate> push_delegate) { |
- DCHECK(!push_delegate_ && push_delegate); |
+ DCHECK(push_delegate); |
+ if (!enable_server_push_cancellation_ || push_delegate_) |
+ return; |
push_delegate_ = std::move(push_delegate); |
spdy_session_pool_.set_server_push_delegate(push_delegate_.get()); |