Currently, HEADERS frames are ignored by the client on a client-initiated stream after the client sends a GOAWAY.
As per Section 6.8 (GOAWAY) in RFC 9113:
"Once the GOAWAY is sent, the sender will ignore frames sent on streams initiated by the receiver if the stream has an identifier higher than the included last stream identifier."
In this case, the client (sender) should not ignore the HEADERS frame as the stream is initiated by the client, not the receiver.
Modifications:
Fixed the condition in the receiveHeaders function (given LocallyQuiescingState) in ReceivingHeadersState.swift to work for both the client and server roles -- before this change, the condition is only correct when self.role == ConnectionRole.server.
Result:
HEADERS frames are not ignored by the client on a client-initiated stream when locally quiescing.
Motivation:
Currently, HEADERS frames are ignored by the client on a client-initiated stream after the client sends a GOAWAY.
As per Section 6.8 (GOAWAY) in RFC 9113: "Once the GOAWAY is sent, the sender will ignore frames sent on streams initiated by the receiver if the stream has an identifier higher than the included last stream identifier."
In this case, the client (sender) should not ignore the HEADERS frame as the stream is initiated by the client, not the receiver.
Modifications:
Fixed the condition in the
receiveHeaders
function (givenLocallyQuiescingState
) inReceivingHeadersState.swift
to work for both the client and server roles -- before this change, the condition is only correct whenself.role == ConnectionRole.server
.Result:
HEADERS frames are not ignored by the client on a client-initiated stream when locally quiescing.