Index: net/http/http_stream_factory_impl_job.cc |
diff --git a/net/http/http_stream_factory_impl_job.cc b/net/http/http_stream_factory_impl_job.cc |
index 398f84e194c5076d953dfeade541482bc44e4bb9..e250ceeab411ef90ccb7aace0ba14e863d11f141 100644 |
--- a/net/http/http_stream_factory_impl_job.cc |
+++ b/net/http/http_stream_factory_impl_job.cc |
@@ -334,6 +334,17 @@ |
void HttpStreamFactoryImpl::Job::Orphan() { |
net_log_.AddEvent(NetLogEventType::HTTP_STREAM_JOB_ORPHANED); |
+ |
+ if (delegate_->for_websockets()) { |
+ // We cancel this job because a WebSocketHandshakeStream can't be created |
+ // without a WebSocketHandshakeStreamBase::CreateHelper which is stored in |
+ // the Request class and isn't retrievable by this job. |
+ if (connection_ && connection_->socket()) { |
+ connection_->socket()->Disconnect(); |
+ } |
+ delegate_->OnOrphanedJobComplete(this); |
+ } |
+ // |this| may be deleted after this call. |
} |
void HttpStreamFactoryImpl::Job::SetPriority(RequestPriority priority) { |
@@ -721,7 +732,7 @@ |
} |
int HttpStreamFactoryImpl::Job::DoStart() { |
- const NetLogWithSource* net_log = delegate_->GetNetLog(); |
+ const NetLogWithSource* net_log = delegate_->GetNetLog(this); |
if (net_log) { |
net_log_.BeginEvent( |