By default, libhttp2 library enforces subset of HTTP Messaging rules described in `HTTP/2 specification, section 8 <https://tools.ietf.org/html/draft-ietf-httpbis-http2-17#section-8>`_. See HTTP Messaging_ section for details. For those applications who use libhttp2 library as non-HTTP use, give nonzero to |val| to disable this enforcement.
This option sets the Setting.MAX_CONCURRENT_STREAMS value of remote endpoint as if it is received in SETTINGS frame. Without specifying this option, before the local endpoint receives Setting.MAX_CONCURRENT_STREAMS in SETTINGS frame from remote endpoint, Setting.MAX_CONCURRENT_STREAMS is unlimited. This may cause problem if local endpoint submits lots of requests initially and sending them at once to the remote peer may lead to the rejection of some requests. Specifying this option to the sensible value, say 100, may avoid this kind of issue. This value will be overwritten if the local endpoint receives Setting.MAX_CONCURRENT_STREAMS from the remote endpoint.
By default, libhttp2 library only handles HTTP/2 frames and does not recognize first 24 bytes of client connection preface. This design choice is done due to the fact that server may want to detect the application protocol based on first few bytes on clear text communication. But for simple servers which only speak HTTP/2, it is easier for developers if libhttp2 library takes care of client connection preface.
This option prevents the library from sending WINDOW_UPDATE for a connection automatically. If this option is set to nonzero, the library won't send WINDOW_UPDATE for DATA until application calls consume() to indicate the consumed amount of data. Don't use submitWindowUpdate for this purpose. By default, this option is set to zero.
Struct to store option values for http2_session.