submitGoAway

@function

Submits GOAWAY frame with the last stream ID |last_stream_id| and the error code |error_code|.

The pre-defined error code is one of FrameError.

The |flags| is currently ignored and should be FrameFlags.NONE.

The |last_stream_id| is peer's stream ID or 0. So if Session is initialized as client, |last_stream_id| must be even or 0. If Session is initialized as server, |last_stream_id| must be odd or 0.

The HTTP/2 specification says last_stream_id must not be increased from the value previously sent. So the actual value sent as last_stream_id is the minimum value between the given |last_stream_id| and the last_stream_id previously sent to the peer.

If the |opaque_data| is not null and |opaque_data_len| is not zero, those data will be sent as additional debug data. The library makes a copy of the memory region pointed by |opaque_data| with the length |opaque_data_len|, so the caller does not need to keep this memory after the return of this function. If the |opaque_data_len| is 0, the |opaque_data| could be null.

After successful transmission of GOAWAY, following things happen. All incoming streams having strictly more than |last_stream_id| are closed. All incoming HEADERS which starts new stream are simply ignored. After all active streams are handled, both wantRead() and wantWrite() return 0 and the application can close session.

This function returns 0 if it succeeds, or one of the following negative error codes:

ErrorCode.INVALID_ARGUMENT The |opaque_data.length| is too large; the |last_stream_id| is invalid.

Meta