SpdyHttpStream::SpdyHttpStream(const base::WeakPtr<SpdySession>& spdy_session,
bool direct)
- : weak_factory_(this),
- spdy_session_(spdy_session),
+ : spdy_session_(spdy_session),
is_reused_(spdy_session_->IsReused()),
stream_closed_(false),
closed_stream_status_(ERR_FAILED),
request_body_buf_size_(0),
buffered_read_callback_pending_(false),
more_read_data_pending_(false),
- direct_(direct) {
+ direct_(direct),
+ weak_factory_(this) {
DCHECK(spdy_session_.get());
}
return rv;
}
-const HttpResponseInfo* SpdyHttpStream::GetResponseInfo() const {
- return response_info_;
-}
-
UploadProgress SpdyHttpStream::GetUploadProgress() const {
if (!request_info_ || !HasUploadData())
return UploadProgress();
scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock);
CreateSpdyHeadersFromHttpRequest(
*request_info_, request_headers,
- headers.get(), stream_->GetProtocolVersion(),
- direct_);
+ stream_->GetProtocolVersion(), direct_,
+ headers.get());
stream_->net_log().AddEvent(
NetLog::TYPE_HTTP_TRANSACTION_SPDY_SEND_REQUEST_HEADERS,
base::Bind(&SpdyHeaderBlockNetLogCallback, headers.get()));
CHECK_GE(status, 0);
request_body_buf_size_ = status;
const bool eof = request_info_->upload_data_stream->IsEOF();
+ // Only the final fame may have a length of 0.
if (eof) {
CHECK_GE(request_body_buf_size_, 0);
} else {