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

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

Issue 2783683002: Log source_dependency in HTTP2_SESSION_SEND_HEADERS. (Closed)
Patch Set: Fix use-after-free. Created 3 years, 8 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/bidirectional_stream_spdy_impl.h" 5 #include "net/spdy/bidirectional_stream_spdy_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 12 matching lines...) Expand all
23 namespace { 23 namespace {
24 24
25 // Time to wait in millisecond to notify |delegate_| of data received. 25 // Time to wait in millisecond to notify |delegate_| of data received.
26 // Handing small chunks of data to the caller creates measurable overhead. 26 // Handing small chunks of data to the caller creates measurable overhead.
27 // So buffer data in short time-spans and send a single read notification. 27 // So buffer data in short time-spans and send a single read notification.
28 const int kBufferTimeMs = 1; 28 const int kBufferTimeMs = 1;
29 29
30 } // namespace 30 } // namespace
31 31
32 BidirectionalStreamSpdyImpl::BidirectionalStreamSpdyImpl( 32 BidirectionalStreamSpdyImpl::BidirectionalStreamSpdyImpl(
33 const base::WeakPtr<SpdySession>& spdy_session) 33 const base::WeakPtr<SpdySession>& spdy_session,
34 NetLogSource source_dependency)
34 : spdy_session_(spdy_session), 35 : spdy_session_(spdy_session),
35 request_info_(nullptr), 36 request_info_(nullptr),
36 delegate_(nullptr), 37 delegate_(nullptr),
38 source_dependency_(source_dependency),
37 negotiated_protocol_(kProtoUnknown), 39 negotiated_protocol_(kProtoUnknown),
38 more_read_data_pending_(false), 40 more_read_data_pending_(false),
39 read_buffer_len_(0), 41 read_buffer_len_(0),
40 written_end_of_stream_(false), 42 written_end_of_stream_(false),
41 write_pending_(false), 43 write_pending_(false),
42 stream_closed_(false), 44 stream_closed_(false),
43 closed_stream_status_(ERR_FAILED), 45 closed_stream_status_(ERR_FAILED),
44 closed_stream_received_bytes_(0), 46 closed_stream_received_bytes_(0),
45 closed_stream_sent_bytes_(0), 47 closed_stream_sent_bytes_(0),
46 closed_has_load_timing_info_(false), 48 closed_has_load_timing_info_(false),
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 timer_->Stop(); 288 timer_->Stop();
287 289
288 // |this| might get destroyed after calling into |delegate_| in 290 // |this| might get destroyed after calling into |delegate_| in
289 // DoBufferedRead(). 291 // DoBufferedRead().
290 auto weak_this = weak_factory_.GetWeakPtr(); 292 auto weak_this = weak_factory_.GetWeakPtr();
291 DoBufferedRead(); 293 DoBufferedRead();
292 if (weak_this.get() && write_pending_) 294 if (weak_this.get() && write_pending_)
293 OnDataSent(); 295 OnDataSent();
294 } 296 }
295 297
298 NetLogSource BidirectionalStreamSpdyImpl::source_dependency() const {
299 return source_dependency_;
300 }
301
296 int BidirectionalStreamSpdyImpl::SendRequestHeadersHelper() { 302 int BidirectionalStreamSpdyImpl::SendRequestHeadersHelper() {
297 SpdyHeaderBlock headers; 303 SpdyHeaderBlock headers;
298 HttpRequestInfo http_request_info; 304 HttpRequestInfo http_request_info;
299 http_request_info.url = request_info_->url; 305 http_request_info.url = request_info_->url;
300 http_request_info.method = request_info_->method; 306 http_request_info.method = request_info_->method;
301 http_request_info.extra_headers = request_info_->extra_headers; 307 http_request_info.extra_headers = request_info_->extra_headers;
302 308
303 CreateSpdyHeadersFromHttpRequest( 309 CreateSpdyHeadersFromHttpRequest(
304 http_request_info, http_request_info.extra_headers, true, &headers); 310 http_request_info, http_request_info.extra_headers, true, &headers);
305 written_end_of_stream_ = request_info_->end_stream_on_headers; 311 written_end_of_stream_ = request_info_->end_stream_on_headers;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 return true; 415 return true;
410 } 416 }
411 LOG(ERROR) << "Trying to send data after stream has been destroyed."; 417 LOG(ERROR) << "Trying to send data after stream has been destroyed.";
412 base::ThreadTaskRunnerHandle::Get()->PostTask( 418 base::ThreadTaskRunnerHandle::Get()->PostTask(
413 FROM_HERE, base::Bind(&BidirectionalStreamSpdyImpl::NotifyError, 419 FROM_HERE, base::Bind(&BidirectionalStreamSpdyImpl::NotifyError,
414 weak_factory_.GetWeakPtr(), ERR_UNEXPECTED)); 420 weak_factory_.GetWeakPtr(), ERR_UNEXPECTED));
415 return true; 421 return true;
416 } 422 }
417 423
418 } // namespace net 424 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/bidirectional_stream_spdy_impl.h ('k') | net/spdy/bidirectional_stream_spdy_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698