1 // Copyright 2021 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "quiche/quic/core/http/quic_server_initiated_spdy_stream.h"
6 
7 #include "quiche/quic/core/quic_error_codes.h"
8 
9 namespace quic {
10 
OnBodyAvailable()11 void QuicServerInitiatedSpdyStream::OnBodyAvailable() {
12   QUIC_BUG(Body received in QuicServerInitiatedSpdyStream)
13       << "Received body data in QuicServerInitiatedSpdyStream.";
14   OnUnrecoverableError(
15       QUIC_INTERNAL_ERROR,
16       "Received HTTP/3 body data in a server-initiated bidirectional stream");
17 }
18 
WriteHeaders(spdy::Http2HeaderBlock,bool,quiche::QuicheReferenceCountedPointer<QuicAckListenerInterface>)19 size_t QuicServerInitiatedSpdyStream::WriteHeaders(
20     spdy::Http2HeaderBlock /*header_block*/, bool /*fin*/,
21     quiche::QuicheReferenceCountedPointer<
22         QuicAckListenerInterface> /*ack_listener*/) {
23   QUIC_BUG(Writing headers in QuicServerInitiatedSpdyStream)
24       << "Attempting to write headers in QuicServerInitiatedSpdyStream";
25   OnUnrecoverableError(QUIC_INTERNAL_ERROR,
26                        "Attempted to send HTTP/3 headers in a server-initiated "
27                        "bidirectional stream");
28   return 0;
29 }
30 
OnInitialHeadersComplete(bool,size_t,const QuicHeaderList &)31 void QuicServerInitiatedSpdyStream::OnInitialHeadersComplete(
32     bool /*fin*/, size_t /*frame_len*/, const QuicHeaderList& /*header_list*/) {
33   QUIC_PEER_BUG(Reading headers in QuicServerInitiatedSpdyStream)
34       << "Attempting to receive headers in QuicServerInitiatedSpdyStream";
35 
36   OnUnrecoverableError(IETF_QUIC_PROTOCOL_VIOLATION,
37                        "Received HTTP/3 headers in a server-initiated "
38                        "bidirectional stream without an extension setting "
39                        "explicitly allowing those");
40 }
41 
42 }  // namespace quic
43