| Index: net/quic/quic_headers_stream.cc
|
| diff --git a/net/quic/quic_headers_stream.cc b/net/quic/quic_headers_stream.cc
|
| index 2b101640c1e0917aaa5f31b4dd76af4ea36195da..310bfc6f1452114ac9ae28a268eae75a50bc2abd 100644
|
| --- a/net/quic/quic_headers_stream.cc
|
| +++ b/net/quic/quic_headers_stream.cc
|
| @@ -204,12 +204,11 @@ QuicHeadersStream::QuicHeadersStream(QuicSpdySession* session)
|
|
|
| QuicHeadersStream::~QuicHeadersStream() {}
|
|
|
| -size_t QuicHeadersStream::WriteHeaders(
|
| - QuicStreamId stream_id,
|
| - const SpdyHeaderBlock& headers,
|
| - bool fin,
|
| - SpdyPriority priority,
|
| - QuicAckListenerInterface* ack_notifier_delegate) {
|
| +size_t QuicHeadersStream::WriteHeaders(QuicStreamId stream_id,
|
| + const SpdyHeaderBlock& headers,
|
| + bool fin,
|
| + SpdyPriority priority,
|
| + QuicAckListenerInterface* ack_listener) {
|
| SpdyHeadersIR headers_frame(stream_id);
|
| headers_frame.set_header_block(headers);
|
| headers_frame.set_fin(fin);
|
| @@ -220,7 +219,31 @@ size_t QuicHeadersStream::WriteHeaders(
|
| scoped_ptr<SpdySerializedFrame> frame(
|
| spdy_framer_.SerializeFrame(headers_frame));
|
| WriteOrBufferData(StringPiece(frame->data(), frame->size()), false,
|
| - ack_notifier_delegate);
|
| + ack_listener);
|
| + return frame->size();
|
| +}
|
| +
|
| +size_t QuicHeadersStream::WritePushPromise(
|
| + QuicStreamId original_stream_id,
|
| + QuicStreamId promised_stream_id,
|
| + const SpdyHeaderBlock& headers,
|
| + QuicAckListenerInterface* ack_listener) {
|
| + if (session()->perspective() == Perspective::IS_CLIENT) {
|
| + LOG(DFATAL) << "Client shouldn't send PUSH_PROMISE";
|
| + return 0;
|
| + }
|
| +
|
| + SpdyPushPromiseIR push_promise(original_stream_id,
|
| + promised_stream_id);
|
| + push_promise.set_header_block(headers);
|
| + // PUSH_PROMISE must not be the last frame sent out, at least followed by
|
| + // response headers.
|
| + push_promise.set_fin(false);
|
| +
|
| + scoped_ptr<SpdySerializedFrame> frame(
|
| + spdy_framer_.SerializeFrame(push_promise));
|
| + WriteOrBufferData(StringPiece(frame->data(), frame->size()), false,
|
| + ack_listener);
|
| return frame->size();
|
| }
|
|
|
|
|