target = "https://www.rfc-editor.org/rfc/rfc9000#section-10.2.2" # 10.2.2. Draining Connection State # # The draining state is entered once an endpoint receives a # CONNECTION_CLOSE frame, which indicates that its peer is closing or # draining. While otherwise identical to the closing state, an # endpoint in the draining state MUST NOT send any packets. Retaining # packet protection keys is unnecessary once a connection is in the # draining state. # # An endpoint that receives a CONNECTION_CLOSE frame MAY send a single # packet containing a CONNECTION_CLOSE frame before entering the # draining state, using a NO_ERROR code if appropriate. An endpoint # MUST NOT send further packets. Doing so could result in a constant # exchange of CONNECTION_CLOSE frames until one of the endpoints exits # the closing state. # # An endpoint MAY enter the draining state from the closing state if it # receives a CONNECTION_CLOSE frame, which indicates that the peer is # also closing or draining. In this case, the draining state ends when # the closing state would have ended. In other words, the endpoint # uses the same end time but ceases transmission of any packets on this # connection. [[spec]] level = "MUST" quote = ''' While otherwise identical to the closing state, an endpoint in the draining state MUST NOT send any packets. ''' [[spec]] level = "MAY" quote = ''' An endpoint that receives a CONNECTION_CLOSE frame MAY send a single packet containing a CONNECTION_CLOSE frame before entering the draining state, using a NO_ERROR code if appropriate. ''' [[spec]] level = "MUST" quote = ''' An endpoint MUST NOT send further packets. ''' [[spec]] level = "MAY" quote = ''' An endpoint MAY enter the draining state from the closing state if it receives a CONNECTION_CLOSE frame, which indicates that the peer is also closing or draining. '''