<liclass="toctree-l2"><aclass="reference internal"href="package_README.html#client-server-and-proxy-programs">Client, Server and Proxy programs</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="nghttpx-howto.html#specifying-additional-ca-certificate">Specifying additional CA certificate</a></li>
<p>Do not call <aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a>, <aclass="reference internal"href="#c.nghttp2_session_mem_send"title="nghttp2_session_mem_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_send()</span></tt></a>,
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> or <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a> from the nghttp2
<ttclass="descname">NGHTTP2_PROTO_VERSION_ID_LEN</tt><aclass="headerlink"href="#c.NGHTTP2_PROTO_VERSION_ID_LEN"title="Permalink to this definition">¶</a></dt>
<dd><p>The length of <aclass="reference internal"href="#c.NGHTTP2_PROTO_VERSION_ID"title="NGHTTP2_PROTO_VERSION_ID"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_PROTO_VERSION_ID</span></tt></a>.</p>
<ttclass="descname">NGHTTP2_CLEARTEXT_PROTO_VERSION_ID</tt><aclass="headerlink"href="#c.NGHTTP2_CLEARTEXT_PROTO_VERSION_ID"title="Permalink to this definition">¶</a></dt>
<dd><p>The protocol version identification string of this library
supports. This identifier is used if HTTP/2 is used over cleartext
TCP.</p>
</dd></dl>
<dlclass="macro">
<dtid="c.NGHTTP2_CLEARTEXT_PROTO_VERSION_ID_LEN">
<ttclass="descname">NGHTTP2_CLEARTEXT_PROTO_VERSION_ID_LEN</tt><aclass="headerlink"href="#c.NGHTTP2_CLEARTEXT_PROTO_VERSION_ID_LEN"title="Permalink to this definition">¶</a></dt>
<dd><p>The length of <aclass="reference internal"href="#c.NGHTTP2_CLEARTEXT_PROTO_VERSION_ID"title="NGHTTP2_CLEARTEXT_PROTO_VERSION_ID"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_CLEARTEXT_PROTO_VERSION_ID</span></tt></a>.</p>
<ttclass="descname">NGHTTP2_VERSION_AGE</tt><aclass="headerlink"href="#c.NGHTTP2_VERSION_AGE"title="Permalink to this definition">¶</a></dt>
<dd><p>The age of <aclass="reference internal"href="#c.nghttp2_info"title="nghttp2_info"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_info</span></tt></a></p>
<ttclass="descname">NGHTTP2_INITIAL_WINDOW_SIZE</tt><aclass="headerlink"href="#c.NGHTTP2_INITIAL_WINDOW_SIZE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE</tt><aclass="headerlink"href="#c.NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_MAX_HEADER_TABLE_SIZE</tt><aclass="headerlink"href="#c.NGHTTP2_MAX_HEADER_TABLE_SIZE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_CLIENT_CONNECTION_PREFACE</tt><aclass="headerlink"href="#c.NGHTTP2_CLIENT_CONNECTION_PREFACE"title="Permalink to this definition">¶</a></dt>
<dd><p>The client connection preface.</p>
</dd></dl>
<dlclass="macro">
<dtid="c.NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN">
<ttclass="descname">NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN</tt><aclass="headerlink"href="#c.NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN"title="Permalink to this definition">¶</a></dt>
<dd><p>The length of <aclass="reference internal"href="#c.NGHTTP2_CLIENT_CONNECTION_PREFACE"title="NGHTTP2_CLIENT_CONNECTION_PREFACE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_CLIENT_CONNECTION_PREFACE</span></tt></a>.</p>
<ttclass="descname">NGHTTP2_CLIENT_CONNECTION_HEADER</tt><aclass="headerlink"href="#c.NGHTTP2_CLIENT_CONNECTION_HEADER"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_CLIENT_CONNECTION_HEADER_LEN</tt><aclass="headerlink"href="#c.NGHTTP2_CLIENT_CONNECTION_HEADER_LEN"title="Permalink to this definition">¶</a></dt>
<dd><p>The length of <aclass="reference internal"href="#c.NGHTTP2_CLIENT_CONNECTION_HEADER"title="NGHTTP2_CLIENT_CONNECTION_HEADER"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_CLIENT_CONNECTION_HEADER</span></tt></a>.</p>
<ttclass="descname">NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS</tt><aclass="headerlink"href="#c.NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_INVALID_ARGUMENT</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_INVALID_ARGUMENT"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_UNSUPPORTED_VERSION</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_UNSUPPORTED_VERSION"title="Permalink to this definition">¶</a></dt>
Used as a return value from <aclass="reference internal"href="#c.nghttp2_send_callback"title="nghttp2_send_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_send_callback</span></tt></a> and
<aclass="reference internal"href="#c.nghttp2_recv_callback"title="nghttp2_recv_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_recv_callback</span></tt></a> to indicate that the operation
<ttclass="descname">NGHTTP2_ERR_INVALID_FRAME</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_INVALID_FRAME"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_data_source_read_callback"title="nghttp2_data_source_read_callback"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_data_source_read_callback()</span></tt></a> to indicate that data
<aclass="reference internal"href="#c.nghttp2_data_source_read_callback"title="nghttp2_data_source_read_callback"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_data_source_read_callback()</span></tt></a> for details.</p>
<ttclass="descname">NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_STREAM_CLOSED</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_STREAM_CLOSED"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_STREAM_CLOSING</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_STREAM_CLOSING"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_STREAM_SHUT_WR</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_STREAM_SHUT_WR"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_INVALID_STREAM_ID</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_INVALID_STREAM_ID"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_INVALID_STREAM_STATE</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_INVALID_STREAM_STATE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_DEFERRED_DATA_EXIST</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_DEFERRED_DATA_EXIST"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_START_STREAM_NOT_ALLOWED</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_START_STREAM_NOT_ALLOWED"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_GOAWAY_ALREADY_SENT</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_GOAWAY_ALREADY_SENT"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_INVALID_HEADER_BLOCK</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_INVALID_HEADER_BLOCK"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_INVALID_STATE</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_INVALID_STATE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_FRAME_SIZE_ERROR</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_FRAME_SIZE_ERROR"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_INSUFF_BUFSIZE</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_INSUFF_BUFSIZE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ERR_PUSH_DISABLED</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_PUSH_DISABLED"title="Permalink to this definition">¶</a></dt>
The errors <<aclass="reference internal"href="#c.NGHTTP2_ERR_FATAL"title="NGHTTP2_ERR_FATAL"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_FATAL</span></tt></a> mean that the library is
under unexpected condition and processing was terminated (e.g.,
out of memory). If application receives this error code, it must
stop using that <aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_session</span></tt></a> object and only allowed
operation for that object is deallocate it using
<aclass="reference internal"href="#c.nghttp2_session_del"title="nghttp2_session_del"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_del()</span></tt></a>.</p>
<ttclass="descname">NGHTTP2_ERR_CALLBACK_FAILURE</tt><aclass="headerlink"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_SETTINGS_HEADER_TABLE_SIZE</tt><aclass="headerlink"href="#c.NGHTTP2_SETTINGS_HEADER_TABLE_SIZE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_SETTINGS_ENABLE_PUSH</tt><aclass="headerlink"href="#c.NGHTTP2_SETTINGS_ENABLE_PUSH"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS</tt><aclass="headerlink"href="#c.NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE</tt><aclass="headerlink"href="#c.NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_SETTINGS_COMPRESS_DATA</tt><aclass="headerlink"href="#c.NGHTTP2_SETTINGS_COMPRESS_DATA"title="Permalink to this definition">¶</a></dt>
Maximum ID of <aclass="reference internal"href="#c.nghttp2_settings_id"title="nghttp2_settings_id"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_settings_id</span></tt></a>.</p>
<ttclass="descname">NGHTTP2_FLOW_CONTROL_ERROR</tt><aclass="headerlink"href="#c.NGHTTP2_FLOW_CONTROL_ERROR"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_COMPRESSION_ERROR</tt><aclass="headerlink"href="#c.NGHTTP2_COMPRESSION_ERROR"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_ENHANCE_YOUR_CALM</tt><aclass="headerlink"href="#c.NGHTTP2_ENHANCE_YOUR_CALM"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_INADEQUATE_SECURITY</tt><aclass="headerlink"href="#c.NGHTTP2_INADEQUATE_SECURITY"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_DATA_FLAG_COMPRESSED</tt><aclass="headerlink"href="#c.NGHTTP2_DATA_FLAG_COMPRESSED"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">NGHTTP2_HCAT_PUSH_RESPONSE</tt><aclass="headerlink"href="#c.NGHTTP2_HCAT_PUSH_RESPONSE"title="Permalink to this definition">¶</a></dt>
<dd><p>This struct is what <aclass="reference internal"href="#c.nghttp2_version"title="nghttp2_version"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_version()</span></tt></a> returns. It holds
<aclass="reference internal"href="#c.NGHTTP2_VERSION_AGE"title="NGHTTP2_VERSION_AGE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_VERSION_AGE</span></tt></a> but a future version may bump it and
int <ttclass="descname">version_num</tt><aclass="headerlink"href="#c.nghttp2_info.version_num"title="Permalink to this definition">¶</a></dt>
<dd><p>the <aclass="reference internal"href="#c.NGHTTP2_VERSION_NUM"title="NGHTTP2_VERSION_NUM"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_VERSION_NUM</span></tt></a> number (since age ==1)</p>
const char *<ttclass="descname">version_str</tt><aclass="headerlink"href="#c.nghttp2_info.version_str"title="Permalink to this definition">¶</a></dt>
<dd><p>points to the <aclass="reference internal"href="#c.NGHTTP2_VERSION"title="NGHTTP2_VERSION"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_VERSION</span></tt></a> string (since age ==1)</p>
const char *<ttclass="descname">proto_str</tt><aclass="headerlink"href="#c.nghttp2_info.proto_str"title="Permalink to this definition">¶</a></dt>
<dd><p>points to the <aclass="reference internal"href="#c.NGHTTP2_PROTO_VERSION_ID"title="NGHTTP2_PROTO_VERSION_ID"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_PROTO_VERSION_ID</span></tt></a> string this
uint8_t <ttclass="descname">flags</tt><aclass="headerlink"href="#c.nghttp2_nv.flags"title="Permalink to this definition">¶</a></dt>
<dd><p>Bitwise OR of one or more of <aclass="reference internal"href="#c.nghttp2_nv_flag"title="nghttp2_nv_flag"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_nv_flag</span></tt></a>.</p>
<dd><p>The type of this frame. See <aclass="reference internal"href="#c.nghttp2_frame"title="nghttp2_frame"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_frame()</span></tt></a>.</p>
reached, set <aclass="reference internal"href="#c.NGHTTP2_DATA_FLAG_EOF"title="NGHTTP2_DATA_FLAG_EOF"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_DATA_FLAG_EOF</span></tt></a> flag in <em>*data_flags</em>.</p>
<p>To send compressed data payload without affecting content-length,
set <aclass="reference internal"href="#c.NGHTTP2_DATA_FLAG_COMPRESSED"title="NGHTTP2_DATA_FLAG_COMPRESSED"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_DATA_FLAG_COMPRESSED</span></tt></a> flag in <em>*data_flags</em>.
Compression must be done by application prior to fill data in
<em>buf</em>.</p>
<p>If the application wants to postpone DATA frames (e.g.,
asynchronous I/O, or reading data blocks for long time), it is
achieved by returning <aclass="reference internal"href="#c.NGHTTP2_ERR_DEFERRED"title="NGHTTP2_ERR_DEFERRED"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_DEFERRED</span></tt></a> without reading
any data in this invocation. The library removes DATA frame from
the outgoing queue temporarily. To move back deferred DATA frame
to outgoing queue, call <aclass="reference internal"href="#c.nghttp2_session_resume_data"title="nghttp2_session_resume_data"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_resume_data()</span></tt></a>. In case
of error, there are 2 choices. Returning
<aclass="reference internal"href="#c.NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"title="NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE</span></tt></a> will close the stream
by issuing RST_STREAM with <aclass="reference internal"href="#c.NGHTTP2_INTERNAL_ERROR"title="NGHTTP2_INTERNAL_ERROR"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_INTERNAL_ERROR</span></tt></a>.
Returning <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> will signal the
<aclass="reference internal"href="#c.nghttp2_data_source"title="nghttp2_data_source">nghttp2_data_source</a><ttclass="descname">source</tt><aclass="headerlink"href="#c.nghttp2_data_provider.source"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_data_source_read_callback"title="nghttp2_data_source_read_callback">nghttp2_data_source_read_callback</a><ttclass="descname">read_callback</tt><aclass="headerlink"href="#c.nghttp2_data_provider.read_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_headers.hd"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_priority_spec"title="nghttp2_priority_spec">nghttp2_priority_spec</a><ttclass="descname">pri_spec</tt><aclass="headerlink"href="#c.nghttp2_headers.pri_spec"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv">nghttp2_nv</a> *<ttclass="descname">nva</tt><aclass="headerlink"href="#c.nghttp2_headers.nva"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_headers_category"title="nghttp2_headers_category">nghttp2_headers_category</a><ttclass="descname">cat</tt><aclass="headerlink"href="#c.nghttp2_headers.cat"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_priority.hd"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_priority_spec"title="nghttp2_priority_spec">nghttp2_priority_spec</a><ttclass="descname">pri_spec</tt><aclass="headerlink"href="#c.nghttp2_priority.pri_spec"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_rst_stream.hd"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code">nghttp2_error_code</a><ttclass="descname">error_code</tt><aclass="headerlink"href="#c.nghttp2_rst_stream.error_code"title="Permalink to this definition">¶</a></dt>
<dd><p>The error code. See <aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_error_code</span></tt></a>.</p>
int32_t <ttclass="descname">settings_id</tt><aclass="headerlink"href="#c.nghttp2_settings_entry.settings_id"title="Permalink to this definition">¶</a></dt>
<dd><p>The SETTINGS ID. See <aclass="reference internal"href="#c.nghttp2_settings_id"title="nghttp2_settings_id"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_settings_id</span></tt></a>.</p>
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_settings.hd"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_settings_entry"title="nghttp2_settings_entry">nghttp2_settings_entry</a> *<ttclass="descname">iv</tt><aclass="headerlink"href="#c.nghttp2_settings.iv"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_push_promise.hd"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv">nghttp2_nv</a> *<ttclass="descname">nva</tt><aclass="headerlink"href="#c.nghttp2_push_promise.nva"title="Permalink to this definition">¶</a></dt>
int32_t <ttclass="descname">promised_stream_id</tt><aclass="headerlink"href="#c.nghttp2_push_promise.promised_stream_id"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_ping.hd"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_goaway.hd"title="Permalink to this definition">¶</a></dt>
int32_t <ttclass="descname">last_stream_id</tt><aclass="headerlink"href="#c.nghttp2_goaway.last_stream_id"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code">nghttp2_error_code</a><ttclass="descname">error_code</tt><aclass="headerlink"href="#c.nghttp2_goaway.error_code"title="Permalink to this definition">¶</a></dt>
<dd><p>The error code. See <aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_error_code</span></tt></a>.</p>
size_t <ttclass="descname">opaque_data_len</tt><aclass="headerlink"href="#c.nghttp2_goaway.opaque_data_len"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_window_update.hd"title="Permalink to this definition">¶</a></dt>
int32_t <ttclass="descname">window_size_increment</tt><aclass="headerlink"href="#c.nghttp2_window_update.window_size_increment"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">nghttp2_altsvc</tt><aclass="headerlink"href="#c.nghttp2_altsvc"title="Permalink to this definition">¶</a></dt>
<dd><p>The ALTSVC frame. It has following members:</p>
<dlclass="member">
<dtid="c.nghttp2_altsvc.hd">
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_altsvc.hd"title="Permalink to this definition">¶</a></dt>
<dd><p>The frame header.</p>
</dd></dl>
<dlclass="member">
<dtid="c.nghttp2_altsvc.protocol_id">
uint8_t *<ttclass="descname">protocol_id</tt><aclass="headerlink"href="#c.nghttp2_altsvc.protocol_id"title="Permalink to this definition">¶</a></dt>
<dd><p>Protocol ID</p>
</dd></dl>
<dlclass="member">
<dtid="c.nghttp2_altsvc.host">
uint8_t *<ttclass="descname">host</tt><aclass="headerlink"href="#c.nghttp2_altsvc.host"title="Permalink to this definition">¶</a></dt>
<dd><p>Host</p>
</dd></dl>
<dlclass="member">
<dtid="c.nghttp2_altsvc.origin">
uint8_t *<ttclass="descname">origin</tt><aclass="headerlink"href="#c.nghttp2_altsvc.origin"title="Permalink to this definition">¶</a></dt>
<dd><p>Origin</p>
</dd></dl>
<dlclass="member">
<dtid="c.nghttp2_altsvc.protocol_id_len">
size_t <ttclass="descname">protocol_id_len</tt><aclass="headerlink"href="#c.nghttp2_altsvc.protocol_id_len"title="Permalink to this definition">¶</a></dt>
<dd><p>The length of <em>protocol_id</em></p>
</dd></dl>
<dlclass="member">
<dtid="c.nghttp2_altsvc.host_len">
size_t <ttclass="descname">host_len</tt><aclass="headerlink"href="#c.nghttp2_altsvc.host_len"title="Permalink to this definition">¶</a></dt>
<dd><p>The length of <em>host</em></p>
</dd></dl>
<dlclass="member">
<dtid="c.nghttp2_altsvc.origin_len">
size_t <ttclass="descname">origin_len</tt><aclass="headerlink"href="#c.nghttp2_altsvc.origin_len"title="Permalink to this definition">¶</a></dt>
<dd><p>The length of <em>origin</em></p>
</dd></dl>
<dlclass="member">
<dtid="c.nghttp2_altsvc.max_age">
uint32_t <ttclass="descname">max_age</tt><aclass="headerlink"href="#c.nghttp2_altsvc.max_age"title="Permalink to this definition">¶</a></dt>
<dd><p>Max-Age</p>
</dd></dl>
<dlclass="member">
<dtid="c.nghttp2_altsvc.port">
uint16_t <ttclass="descname">port</tt><aclass="headerlink"href="#c.nghttp2_altsvc.port"title="Permalink to this definition">¶</a></dt>
<ttclass="descname">nghttp2_blocked</tt><aclass="headerlink"href="#c.nghttp2_blocked"title="Permalink to this definition">¶</a></dt>
<dd><p>The BLOCKED frame. It has following members:</p>
<dlclass="member">
<dtid="c.nghttp2_blocked.hd">
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_blocked.hd"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_frame_hd"title="nghttp2_frame_hd">nghttp2_frame_hd</a><ttclass="descname">hd</tt><aclass="headerlink"href="#c.nghttp2_frame.hd"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_data"title="nghttp2_data">nghttp2_data</a><ttclass="descname">data</tt><aclass="headerlink"href="#c.nghttp2_frame.data"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_headers"title="nghttp2_headers">nghttp2_headers</a><ttclass="descname">headers</tt><aclass="headerlink"href="#c.nghttp2_frame.headers"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_priority"title="nghttp2_priority">nghttp2_priority</a><ttclass="descname">priority</tt><aclass="headerlink"href="#c.nghttp2_frame.priority"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_rst_stream"title="nghttp2_rst_stream">nghttp2_rst_stream</a><ttclass="descname">rst_stream</tt><aclass="headerlink"href="#c.nghttp2_frame.rst_stream"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_settings"title="nghttp2_settings">nghttp2_settings</a><ttclass="descname">settings</tt><aclass="headerlink"href="#c.nghttp2_frame.settings"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_push_promise"title="nghttp2_push_promise">nghttp2_push_promise</a><ttclass="descname">push_promise</tt><aclass="headerlink"href="#c.nghttp2_frame.push_promise"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_ping"title="nghttp2_ping">nghttp2_ping</a><ttclass="descname">ping</tt><aclass="headerlink"href="#c.nghttp2_frame.ping"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_goaway"title="nghttp2_goaway">nghttp2_goaway</a><ttclass="descname">goaway</tt><aclass="headerlink"href="#c.nghttp2_frame.goaway"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_window_update"title="nghttp2_window_update">nghttp2_window_update</a><ttclass="descname">window_update</tt><aclass="headerlink"href="#c.nghttp2_frame.window_update"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_altsvc"title="nghttp2_altsvc">nghttp2_altsvc</a><ttclass="descname">altsvc</tt><aclass="headerlink"href="#c.nghttp2_frame.altsvc"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_blocked"title="nghttp2_blocked">nghttp2_blocked</a><ttclass="descname">blocked</tt><aclass="headerlink"href="#c.nghttp2_frame.blocked"title="Permalink to this definition">¶</a></dt>
it must return <aclass="reference internal"href="#c.NGHTTP2_ERR_WOULDBLOCK"title="NGHTTP2_ERR_WOULDBLOCK"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a>. For other errors,
it must return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. The
<em>user_data</em> pointer is the third argument passed in to the call to
<aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or <aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>.</p>
<aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> to send data to the remote endpoint. If
the application uses solely <aclass="reference internal"href="#c.nghttp2_session_mem_send"title="nghttp2_session_mem_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_send()</span></tt></a> instead,
the remote peer. The implementation of this function must read at
most <em>length</em> bytes of data and store it in <em>buf</em>. The <em>flags</em> is
currently not used and always 0. It must return the number of
bytes written in <em>buf</em> if it succeeds. If it cannot read any
single byte without blocking, it must return
<aclass="reference internal"href="#c.NGHTTP2_ERR_WOULDBLOCK"title="NGHTTP2_ERR_WOULDBLOCK"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a>. If it gets EOF before it reads any
single byte, it must return <aclass="reference internal"href="#c.NGHTTP2_ERR_EOF"title="NGHTTP2_ERR_EOF"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_EOF</span></tt></a>. For other
errors, it must return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.
Returning 0 is treated as <aclass="reference internal"href="#c.NGHTTP2_ERR_WOULDBLOCK"title="NGHTTP2_ERR_WOULDBLOCK"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a>. The
<em>user_data</em> pointer is the third argument passed in to the call to
<aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or <aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>.</p>
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> to receive data from the remote endpoint.
If the application uses solely <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a>
typedef int <ttclass="descname">(*nghttp2_on_frame_recv_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <aclass="reference internal"href="#c.nghttp2_frame"title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_on_frame_recv_callback"title="Permalink to this definition">¶</a></dt>
<dd><p>Callback function invoked by <aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> when a frame
is received. The <em>user_data</em> pointer is the third argument passed
in to the call to <aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or
<aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>.</p>
<p>If frame is HEADERS or PUSH_PROMISE, the <ttclass="docutils literal"><spanclass="pre">nva</span></tt> and <ttclass="docutils literal"><spanclass="pre">nvlen</span></tt>
member of their data structure are always <ttclass="docutils literal"><spanclass="pre">NULL</span></tt> and 0
<aclass="reference internal"href="#c.nghttp2_on_stream_close_callback"title="nghttp2_on_stream_close_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_on_stream_close_callback</span></tt></a>). The application should
<p>Only HEADERS and DATA frame can signal the end of incoming data.
If <ttclass="docutils literal"><spanclass="pre">frame->hd.flags</span><spanclass="pre">&</span><spanclass="pre">NGHTTP2_FLAG_END_STREAM</span></tt> is nonzero, the
<p>The implementation of this function must return 0 if it succeeds.
If nonzero value is returned, it is treated as fatal error and
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a> functions
immediately return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
typedef int <ttclass="descname">(*nghttp2_on_invalid_frame_recv_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <aclass="reference internal"href="#c.nghttp2_frame"title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, <aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_on_invalid_frame_recv_callback"title="Permalink to this definition">¶</a></dt>
<dd><p>Callback function invoked by <aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> when an
invalid non-DATA frame is received. The <em>error_code</em> is one of the
<aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code"><ttclass="xref c c-macro docutils literal"><spanclass="pre">nghttp2_error_code</span></tt></a> and indicates the error. When this
<aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or <aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>.</p>
<p>If frame is HEADERS or PUSH_PROMISE, the <ttclass="docutils literal"><spanclass="pre">nva</span></tt> and <ttclass="docutils literal"><spanclass="pre">nvlen</span></tt>
member of their data structure are always <ttclass="docutils literal"><spanclass="pre">NULL</span></tt> and 0
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> functions
immediately return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
typedef int <ttclass="descname">(*nghttp2_on_data_chunk_recv_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, const uint8_t<em> *data</em>, size_t<em> len</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_on_data_chunk_recv_callback"title="Permalink to this definition">¶</a></dt>
received. The <em>stream_id</em> is the stream ID this DATA frame belongs
to. The <em>flags</em> is the flags of DATA frame which this data chunk
is contained. <ttclass="docutils literal"><spanclass="pre">(flags</span><spanclass="pre">&</span><spanclass="pre">NGHTTP2_FLAG_END_STREAM)</span><spanclass="pre">!=</span><spanclass="pre">0</span></tt> does not
necessarily mean this chunk of data is the last one in the stream.
You should use <aclass="reference internal"href="#c.nghttp2_on_frame_recv_callback"title="nghttp2_on_frame_recv_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_on_frame_recv_callback</span></tt></a> to know all
data frames are received. The <em>user_data</em> pointer is the third
argument passed in to the call to <aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or
<aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>.</p>
<p>If the application uses <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a>, it can return
<aclass="reference internal"href="#c.NGHTTP2_ERR_PAUSE"title="NGHTTP2_ERR_PAUSE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_PAUSE</span></tt></a> to make <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a>
<aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a> or <aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> is called.
The application must retain the input bytes which was used to
produce the <em>data</em> parameter, because it may refer to the memory
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a> functions
immediately return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
typedef int <ttclass="descname">(*nghttp2_before_frame_send_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <aclass="reference internal"href="#c.nghttp2_frame"title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_before_frame_send_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_session_get_stream_user_data"title="nghttp2_session_get_stream_user_data"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_get_stream_user_data()</span></tt></a>), which is not assigned
passed in to the call to <aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or
<aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>.</p>
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> functions
immediately return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
typedef int <ttclass="descname">(*nghttp2_on_frame_send_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <aclass="reference internal"href="#c.nghttp2_frame"title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_on_frame_send_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or <aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>.</p>
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> functions
immediately return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
typedef int <ttclass="descname">(*nghttp2_on_frame_not_send_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <aclass="reference internal"href="#c.nghttp2_frame"title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, int<em> lib_error_code</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_on_frame_not_send_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_error"title="nghttp2_error"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_error</span></tt></a>. The <em>user_data</em> pointer is the third
argument passed in to the call to <aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or
<aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>.</p>
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> functions
immediately return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
typedef int <ttclass="descname">(*nghttp2_on_stream_close_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em>, <aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_on_stream_close_callback"title="Permalink to this definition">¶</a></dt>
stream_user_data, which was specified in <aclass="reference internal"href="#c.nghttp2_submit_request"title="nghttp2_submit_request"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_request()</span></tt></a>
or <aclass="reference internal"href="#c.nghttp2_submit_headers"title="nghttp2_submit_headers"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_headers()</span></tt></a>, is still available in this function.
The <em>user_data</em> pointer is the third argument passed in to the call
to <aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> functions
immediately return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
typedef int <ttclass="descname">(*nghttp2_on_unknown_frame_recv_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const uint8_t<em> *head</em>, size_t<em> headlen</em>, const uint8_t<em> *payload</em>, size_t<em> payloadlen</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_on_unknown_frame_recv_callback"title="Permalink to this definition">¶</a></dt>
<dd><p>Callback function invoked when the received frame type is unknown.
The <em>head</em> is the pointer to the header of the received frame. The
<em>headlen</em> is the length of the <em>head</em>. According to the spec, the
<em>headlen</em> is always 8. In other words, the <em>head</em> is the first 8
bytes of the received frame. The <em>payload</em> is the pointer to the
data portion of the received frame. The <em>payloadlen</em> is the length
of the <em>payload</em>. This is the data after the length field. The
<em>user_data</em> pointer is the third argument passed in to the call to
<aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a> or <aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>.</p>
<p>The implementation of this function must return 0 if it succeeds.
If nonzero is returned, it is treated as fatal error and
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> functions
immediately return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
typedef int <ttclass="descname">(*nghttp2_on_begin_headers_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <aclass="reference internal"href="#c.nghttp2_frame"title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_on_begin_headers_callback"title="Permalink to this definition">¶</a></dt>
will be emitted by <aclass="reference internal"href="#c.nghttp2_on_header_callback"title="nghttp2_on_header_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_on_header_callback</span></tt></a>.</p>
<aclass="reference internal"href="#c.NGHTTP2_FLAG_END_HEADERS"title="NGHTTP2_FLAG_END_HEADERS"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_FLAG_END_HEADERS</span></tt></a> flag set, which indicates that one
<aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. If nonzero value other than
<aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> is returned, it is treated as
if <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> is returned. If
<aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> is returned,
<aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a> function will immediately return
<aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
for the <em>frame</em>. The <em>name</em> of length <em>namelen</em> is header name.
The <em>value</em> of length <em>valuelen</em> is header value. The <em>flags</em> is
bitwise OR of one or more of <aclass="reference internal"href="#c.nghttp2_nv_flag"title="nghttp2_nv_flag"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_nv_flag</span></tt></a>.</p>
<p>If <aclass="reference internal"href="#c.NGHTTP2_NV_FLAG_NO_INDEX"title="NGHTTP2_NV_FLAG_NO_INDEX"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_NV_FLAG_NO_INDEX</span></tt></a> is set in <em>flags</em>, the receiver
must not index this name/value pair when forwarding it to the next
hop.</p>
<p>When this callback is invoked, <ttclass="docutils literal"><spanclass="pre">frame->hd.type</span></tt> is either
<aclass="reference internal"href="#c.NGHTTP2_HEADERS"title="NGHTTP2_HEADERS"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_HEADERS</span></tt></a> or <aclass="reference internal"href="#c.NGHTTP2_PUSH_PROMISE"title="NGHTTP2_PUSH_PROMISE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_PUSH_PROMISE</span></tt></a>. After all
header name/value pairs are processed with this callback, and no
error has been detected, <aclass="reference internal"href="#c.nghttp2_on_frame_recv_callback"title="nghttp2_on_frame_recv_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_on_frame_recv_callback</span></tt></a>
will be invoked. If there is an error in decompression,
<aclass="reference internal"href="#c.nghttp2_on_frame_recv_callback"title="nghttp2_on_frame_recv_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_on_frame_recv_callback</span></tt></a> for the <em>frame</em> will not be
helper function <aclass="reference internal"href="#c.nghttp2_check_header_name"title="nghttp2_check_header_name"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_check_header_name()</span></tt></a> and
<aclass="reference internal"href="#c.nghttp2_check_header_value"title="nghttp2_check_header_value"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_check_header_value()</span></tt></a> provide simple validation against
<p>If the application uses <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a>, it can return
<aclass="reference internal"href="#c.NGHTTP2_ERR_PAUSE"title="NGHTTP2_ERR_PAUSE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_PAUSE</span></tt></a> to make <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a>
<aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a> or <aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> is called.
The application must retain the input bytes which was used to
produce these parameters, because it may refer to the memory region
<p>Returning <aclass="reference internal"href="#c.NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"title="NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE</span></tt></a> will close
<aclass="reference internal"href="#c.NGHTTP2_INTERNAL_ERROR"title="NGHTTP2_INTERNAL_ERROR"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_INTERNAL_ERROR</span></tt></a>. In this case,
<aclass="reference internal"href="#c.nghttp2_on_frame_recv_callback"title="nghttp2_on_frame_recv_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_on_frame_recv_callback</span></tt></a> will not be invoked.</p>
<p>The implementation of this function must return 0 if it succeeds.
It may return <aclass="reference internal"href="#c.NGHTTP2_ERR_PAUSE"title="NGHTTP2_ERR_PAUSE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_PAUSE</span></tt></a> or
<aclass="reference internal"href="#c.NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"title="NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE</span></tt></a>. For other critical
failures, it must return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. If
<aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. If
<aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> is returned,
<aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a> functions
immediately return <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
<aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> will make
<aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> function immediately return
<aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
typedef int <ttclass="descname">(*nghttp2_adjust_priority_callback)</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <aclass="reference internal"href="#c.nghttp2_frame"title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, <aclass="reference internal"href="#c.nghttp2_priority_spec"title="nghttp2_priority_spec">nghttp2_priority_spec</a><em> *pri_spec</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_adjust_priority_callback"title="Permalink to this definition">¶</a></dt>
<dd><p>Callback function invoked to adjust priority value for request
HEADERS. This callback is called only for request HEADERS (which
means, <ttclass="xref c c-func docutils literal"><spanclass="pre">frame->hd.type</span><spanclass="pre">==</span><spanclass="pre">NGHTTP2_HEADERS</span><spanclass="pre">&&</span><spanclass="pre">frame->headers.cat</span><spanclass="pre">==</span>
<spanclass="pre">NGHTTP2_HCAT_REQUEST()</span></tt> hold) and before
<ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_before_frame_send_callback()</span></tt>. The application can
adjust priority value <em>pri_spec</em>. Initially, <em>pri_spec</em> is filled
with the current priority value, which is equal to
<ttclass="xref c c-func docutils literal"><spanclass="pre">frame->headers.pri_spec()</span></tt>. If the application doesn’t alter
priority value, just return 0 without updating <em>pri_spec</em>.</p>
<p>Since the application doesn’t know stream ID when it submits
requests, it may not be able to add correct priority value to
HEADERS frame and forced to use follwing PRIORITY frame. The
purpose of this callback is give the chance to the application to
adjust priority value with the latest information it has just
before transmission so that correct priority is included in HEADERS
frame and it doesn’t have to send additional PRIORITY frame.</p>
<p>Returning <aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> will make
<aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> function immediately return
<aclass="reference internal"href="#c.NGHTTP2_ERR_CALLBACK_FAILURE"title="NGHTTP2_ERR_CALLBACK_FAILURE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
<ttclass="descname">nghttp2_session_callbacks</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_send_callback"title="nghttp2_send_callback">nghttp2_send_callback</a><ttclass="descname">send_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.send_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_recv_callback"title="nghttp2_recv_callback">nghttp2_recv_callback</a><ttclass="descname">recv_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.recv_callback"title="Permalink to this definition">¶</a></dt>
data from the remote peer. This callback is not necessary if the
application uses solely <aclass="reference internal"href="#c.nghttp2_session_mem_recv"title="nghttp2_session_mem_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_recv()</span></tt></a> to process
<aclass="reference internal"href="#c.nghttp2_on_frame_recv_callback"title="nghttp2_on_frame_recv_callback">nghttp2_on_frame_recv_callback</a><ttclass="descname">on_frame_recv_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.on_frame_recv_callback"title="Permalink to this definition">¶</a></dt>
<dd><p>Callback function invoked by <aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> when a
<aclass="reference internal"href="#c.nghttp2_on_invalid_frame_recv_callback"title="nghttp2_on_invalid_frame_recv_callback">nghttp2_on_invalid_frame_recv_callback</a><ttclass="descname">on_invalid_frame_recv_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.on_invalid_frame_recv_callback"title="Permalink to this definition">¶</a></dt>
<dd><p>Callback function invoked by <aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> when an
<aclass="reference internal"href="#c.nghttp2_on_data_chunk_recv_callback"title="nghttp2_on_data_chunk_recv_callback">nghttp2_on_data_chunk_recv_callback</a><ttclass="descname">on_data_chunk_recv_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.on_data_chunk_recv_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_before_frame_send_callback"title="nghttp2_before_frame_send_callback">nghttp2_before_frame_send_callback</a><ttclass="descname">before_frame_send_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.before_frame_send_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_on_frame_send_callback"title="nghttp2_on_frame_send_callback">nghttp2_on_frame_send_callback</a><ttclass="descname">on_frame_send_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.on_frame_send_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_on_frame_not_send_callback"title="nghttp2_on_frame_not_send_callback">nghttp2_on_frame_not_send_callback</a><ttclass="descname">on_frame_not_send_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.on_frame_not_send_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_on_stream_close_callback"title="nghttp2_on_stream_close_callback">nghttp2_on_stream_close_callback</a><ttclass="descname">on_stream_close_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.on_stream_close_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_on_unknown_frame_recv_callback"title="nghttp2_on_unknown_frame_recv_callback">nghttp2_on_unknown_frame_recv_callback</a><ttclass="descname">on_unknown_frame_recv_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.on_unknown_frame_recv_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_on_begin_headers_callback"title="nghttp2_on_begin_headers_callback">nghttp2_on_begin_headers_callback</a><ttclass="descname">on_begin_headers_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.on_begin_headers_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_on_header_callback"title="nghttp2_on_header_callback">nghttp2_on_header_callback</a><ttclass="descname">on_header_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.on_header_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_select_padding_callback"title="nghttp2_select_padding_callback">nghttp2_select_padding_callback</a><ttclass="descname">select_padding_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.select_padding_callback"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_adjust_priority_callback"title="nghttp2_adjust_priority_callback">nghttp2_adjust_priority_callback</a><ttclass="descname">adjust_priority_callback</tt><aclass="headerlink"href="#c.nghttp2_session_callbacks.adjust_priority_callback"title="Permalink to this definition">¶</a></dt>
<dd><p>Callback function invoked to adjust priority value just before
request HEADERS is serialized to the wire format.</p>
<ttclass="descname">nghttp2_option</tt><aclass="headerlink"href="#c.nghttp2_option"title="Permalink to this definition">¶</a></dt>
<dd><p>Configuration options for <aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_session</span></tt></a>. The details of
this structure are intentionally hidden from the public API.</p>
int <ttclass="descname">nghttp2_option_new</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_option"title="nghttp2_option">nghttp2_option</a><em> **option_ptr</em><big>)</big><aclass="headerlink"href="#c.nghttp2_option_new"title="Permalink to this definition">¶</a></dt>
<dd><p>Initializes <em>*option_ptr</em> with default values.</p>
<p>When the application finished using this object, it can use
<aclass="reference internal"href="#c.nghttp2_option_del"title="nghttp2_option_del"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_option_del()</span></tt></a> to free its memory.</p>
<p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p>
<dlclass="docutils">
<dt><aclass="reference internal"href="#c.NGHTTP2_ERR_NOMEM"title="NGHTTP2_ERR_NOMEM"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd>
</dl>
</dd></dl>
<dlclass="function">
<dtid="c.nghttp2_option_del">
void <ttclass="descname">nghttp2_option_del</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_option"title="nghttp2_option">nghttp2_option</a><em> *option</em><big>)</big><aclass="headerlink"href="#c.nghttp2_option_del"title="Permalink to this definition">¶</a></dt>
<dd><p>Frees any resources allocated for <em>option</em>. If <em>option</em> is
<ttclass="docutils literal"><spanclass="pre">NULL</span></tt>, this function does nothing.</p>
void <ttclass="descname">nghttp2_option_set_no_auto_stream_window_update</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_option"title="nghttp2_option">nghttp2_option</a><em> *option</em>, int<em> val</em><big>)</big><aclass="headerlink"href="#c.nghttp2_option_set_no_auto_stream_window_update"title="Permalink to this definition">¶</a></dt>
<dd><p>This option prevents the library from sending WINDOW_UPDATE for a
<aclass="reference internal"href="#c.nghttp2_submit_window_update"title="nghttp2_submit_window_update"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_window_update()</span></tt></a>. By default, this option is set to
void <ttclass="descname">nghttp2_option_set_no_auto_connection_window_update</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_option"title="nghttp2_option">nghttp2_option</a><em> *option</em>, int<em> val</em><big>)</big><aclass="headerlink"href="#c.nghttp2_option_set_no_auto_connection_window_update"title="Permalink to this definition">¶</a></dt>
<dd><p>This option prevents the library from sending WINDOW_UPDATE for a
application is responsible for sending WINDOW_UPDATE with stream ID
0 using <aclass="reference internal"href="#c.nghttp2_submit_window_update"title="nghttp2_submit_window_update"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_window_update()</span></tt></a>. By default, this option is
void <ttclass="descname">nghttp2_option_set_peer_max_concurrent_streams</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_option"title="nghttp2_option">nghttp2_option</a><em> *option</em>, uint32_t<em> val</em><big>)</big><aclass="headerlink"href="#c.nghttp2_option_set_peer_max_concurrent_streams"title="Permalink to this definition">¶</a></dt>
<dd><p>This option sets the SETTINGS_MAX_CONCURRENT_STREAMS value of
int <ttclass="descname">nghttp2_session_client_new</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> **session_ptr</em>, const <aclass="reference internal"href="#c.nghttp2_session_callbacks"title="nghttp2_session_callbacks">nghttp2_session_callbacks</a><em> *callbacks</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_client_new"title="Permalink to this definition">¶</a></dt>
<p>The <aclass="reference internal"href="#c.nghttp2_session_callbacks.send_callback"title="nghttp2_session_callbacks.send_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.send_callback</span></tt></a> must be
specified. If the application code uses <aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a>,
the <aclass="reference internal"href="#c.nghttp2_session_callbacks.recv_callback"title="nghttp2_session_callbacks.recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> must be
int <ttclass="descname">nghttp2_session_server_new</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> **session_ptr</em>, const <aclass="reference internal"href="#c.nghttp2_session_callbacks"title="nghttp2_session_callbacks">nghttp2_session_callbacks</a><em> *callbacks</em>, void<em> *user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_server_new"title="Permalink to this definition">¶</a></dt>
<p>The <aclass="reference internal"href="#c.nghttp2_session_callbacks.send_callback"title="nghttp2_session_callbacks.send_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.send_callback</span></tt></a> must be
specified. If the application code uses <aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a>,
the <aclass="reference internal"href="#c.nghttp2_session_callbacks.recv_callback"title="nghttp2_session_callbacks.recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> must be
int <ttclass="descname">nghttp2_session_client_new2</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> **session_ptr</em>, const <aclass="reference internal"href="#c.nghttp2_session_callbacks"title="nghttp2_session_callbacks">nghttp2_session_callbacks</a><em> *callbacks</em>, void<em> *user_data</em>, const <aclass="reference internal"href="#c.nghttp2_option"title="nghttp2_option">nghttp2_option</a><em> *option</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_client_new2"title="Permalink to this definition">¶</a></dt>
<dd><p>Like <aclass="reference internal"href="#c.nghttp2_session_client_new"title="nghttp2_session_client_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_client_new()</span></tt></a>, but with additional options
int <ttclass="descname">nghttp2_session_server_new2</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> **session_ptr</em>, const <aclass="reference internal"href="#c.nghttp2_session_callbacks"title="nghttp2_session_callbacks">nghttp2_session_callbacks</a><em> *callbacks</em>, void<em> *user_data</em>, const <aclass="reference internal"href="#c.nghttp2_option"title="nghttp2_option">nghttp2_option</a><em> *option</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_server_new2"title="Permalink to this definition">¶</a></dt>
<dd><p>Like <aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a>, but with additional options
void <ttclass="descname">nghttp2_session_del</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_del"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_session_send</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_send"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_session_callbacks.send_callback"title="nghttp2_session_callbacks.send_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.send_callback</span></tt></a> returns
<aclass="reference internal"href="#c.NGHTTP2_ERR_WOULDBLOCK"title="NGHTTP2_ERR_WOULDBLOCK"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a> or the outbound queue becomes empty.
<aclass="reference internal"href="#c.nghttp2_session_callbacks.adjust_priority_callback"title="nghttp2_session_callbacks.adjust_priority_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.adjust_priority_callback</span></tt></a> is
<li>If the frame is HEADERS, PUSH_PROMISE or DATA,
<aclass="reference internal"href="#c.nghttp2_session_callbacks.select_padding_callback"title="nghttp2_session_callbacks.select_padding_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.select_padding_callback</span></tt></a> is
invoked.</li>
<li>If the frame is request HEADERS, the stream is opened here.</li>
<li><aclass="reference internal"href="#c.nghttp2_session_callbacks.before_frame_send_callback"title="nghttp2_session_callbacks.before_frame_send_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.before_frame_send_callback</span></tt></a> is
<li><aclass="reference internal"href="#c.nghttp2_session_callbacks.send_callback"title="nghttp2_session_callbacks.send_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.send_callback</span></tt></a> is invoked one
<li><aclass="reference internal"href="#c.nghttp2_session_callbacks.on_frame_send_callback"title="nghttp2_session_callbacks.on_frame_send_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.on_frame_send_callback</span></tt></a> is
<aclass="reference internal"href="#c.nghttp2_session_callbacks.on_stream_close_callback"title="nghttp2_session_callbacks.on_stream_close_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.on_stream_close_callback</span></tt></a> is
ssize_t <ttclass="descname">nghttp2_session_mem_send</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const uint8_t<em> **data_ptr</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_mem_send"title="Permalink to this definition">¶</a></dt>
<p>This function behaves like <aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a> except that it
does not use <aclass="reference internal"href="#c.nghttp2_session_callbacks.send_callback"title="nghttp2_session_callbacks.send_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.send_callback</span></tt></a> to
transmit data. Instead, it assigns the pointer to the serialized
data to the <em>*data_ptr</em> and returns its length. The other
callbacks are called in the same way as they are in
<aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a>.</p>
<aclass="reference internal"href="#c.nghttp2_session_mem_send"title="nghttp2_session_mem_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_mem_send()</span></tt></a> or <aclass="reference internal"href="#c.nghttp2_session_send"title="nghttp2_session_send"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_send()</span></tt></a>.</p>
int <ttclass="descname">nghttp2_session_recv</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_recv"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.NGHTTP2_ERR_WOULDBLOCK"title="NGHTTP2_ERR_WOULDBLOCK"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a>. This function calls several
<li><aclass="reference internal"href="#c.nghttp2_session_callbacks.recv_callback"title="nghttp2_session_callbacks.recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked one
<li><aclass="reference internal"href="#c.nghttp2_session_callbacks.recv_callback"title="nghttp2_session_callbacks.recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked
<aclass="reference internal"href="#c.nghttp2_session_callbacks.on_frame_recv_callback"title="nghttp2_session_callbacks.on_frame_recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.on_frame_recv_callback</span></tt></a> is
<li><aclass="reference internal"href="#c.nghttp2_session_callbacks.recv_callback"title="nghttp2_session_callbacks.recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked
<aclass="reference internal"href="#c.nghttp2_session_callbacks.on_header_callback"title="nghttp2_session_callbacks.on_header_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.on_header_callback</span></tt></a> is
<aclass="reference internal"href="#c.nghttp2_session_callbacks.on_frame_recv_callback"title="nghttp2_session_callbacks.on_frame_recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.on_frame_recv_callback</span></tt></a> is
<aclass="reference internal"href="#c.nghttp2_session_callbacks.on_frame_recv_callback"title="nghttp2_session_callbacks.on_frame_recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.on_frame_recv_callback</span></tt></a> is
ssize_t <ttclass="descname">nghttp2_session_mem_recv</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const uint8_t<em> *in</em>, size_t<em> inlen</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_mem_recv"title="Permalink to this definition">¶</a></dt>
<p>This function behaves like <aclass="reference internal"href="#c.nghttp2_session_recv"title="nghttp2_session_recv"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_recv()</span></tt></a> except that it
does not use <aclass="reference internal"href="#c.nghttp2_session_callbacks.recv_callback"title="nghttp2_session_callbacks.recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> to
<aclass="reference internal"href="#c.NGHTTP2_ERR_PAUSE"title="NGHTTP2_ERR_PAUSE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_PAUSE</span></tt></a> is returned from
<aclass="reference internal"href="#c.nghttp2_session_callbacks.on_header_callback"title="nghttp2_session_callbacks.on_header_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.on_header_callback</span></tt></a> or
<aclass="reference internal"href="#c.nghttp2_session_callbacks.on_data_chunk_recv_callback"title="nghttp2_session_callbacks.on_data_chunk_recv_callback"><ttclass="xref c c-member docutils literal"><spanclass="pre">nghttp2_session_callbacks.on_data_chunk_recv_callback</span></tt></a>.
If <aclass="reference internal"href="#c.NGHTTP2_ERR_PAUSE"title="NGHTTP2_ERR_PAUSE"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_PAUSE</span></tt></a> is used, the return value includes the
int <ttclass="descname">nghttp2_session_resume_data</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_resume_data"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_session_want_read</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_want_read"title="Permalink to this definition">¶</a></dt>
<p>If both <aclass="reference internal"href="#c.nghttp2_session_want_read"title="nghttp2_session_want_read"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_want_read()</span></tt></a> and
<aclass="reference internal"href="#c.nghttp2_session_want_write"title="nghttp2_session_want_write"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_want_write()</span></tt></a> return 0, the application should
int <ttclass="descname">nghttp2_session_want_write</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_want_write"title="Permalink to this definition">¶</a></dt>
<p>If both <aclass="reference internal"href="#c.nghttp2_session_want_read"title="nghttp2_session_want_read"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_want_read()</span></tt></a> and
<aclass="reference internal"href="#c.nghttp2_session_want_write"title="nghttp2_session_want_write"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_want_write()</span></tt></a> return 0, the application should
void* <ttclass="descname">nghttp2_session_get_stream_user_data</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_get_stream_user_data"title="Permalink to this definition">¶</a></dt>
stream_user_data is provided by <aclass="reference internal"href="#c.nghttp2_submit_request"title="nghttp2_submit_request"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_request()</span></tt></a>,
<aclass="reference internal"href="#c.nghttp2_submit_headers"title="nghttp2_submit_headers"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_headers()</span></tt></a> or
<aclass="reference internal"href="#c.nghttp2_session_set_stream_user_data"title="nghttp2_session_set_stream_user_data"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_set_stream_user_data()</span></tt></a>. Unless it is set using
<aclass="reference internal"href="#c.nghttp2_session_set_stream_user_data"title="nghttp2_session_set_stream_user_data"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_set_stream_user_data()</span></tt></a>, if the stream is
int <ttclass="descname">nghttp2_session_set_stream_user_data</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em>, void<em> *stream_user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_set_stream_user_data"title="Permalink to this definition">¶</a></dt>
size_t <ttclass="descname">nghttp2_session_get_outbound_queue_size</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_get_outbound_queue_size"title="Permalink to this definition">¶</a></dt>
int32_t <ttclass="descname">nghttp2_session_get_stream_effective_recv_data_length</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_get_stream_effective_recv_data_length"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_submit_window_update"title="nghttp2_submit_window_update"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_window_update()</span></tt></a>. This function takes into account
that and returns effective data length. In particular, if the
window_size_increment with <aclass="reference internal"href="#c.nghttp2_submit_window_update"title="nghttp2_submit_window_update"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_window_update()</span></tt></a>, this
int32_t <ttclass="descname">nghttp2_session_get_stream_effective_local_window_size</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_get_stream_effective_local_window_size"title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the local (receive) window size for the stream <em>stream_id</em>.
The local window size can be adjusted by
<aclass="reference internal"href="#c.nghttp2_submit_window_update"title="nghttp2_submit_window_update"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_window_update()</span></tt></a>. This function takes into account
int32_t <ttclass="descname">nghttp2_session_get_effective_recv_data_length</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_get_effective_recv_data_length"title="Permalink to this definition">¶</a></dt>
WINDOW_UPDATE transmission for a connection. The local (receive)
window size can be adjusted by <aclass="reference internal"href="#c.nghttp2_submit_window_update"title="nghttp2_submit_window_update"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_window_update()</span></tt></a>.
This function takes into account that and returns effective data
length. In particular, if the local window size is reduced by
submitting negative window_size_increment with
<aclass="reference internal"href="#c.nghttp2_submit_window_update"title="nghttp2_submit_window_update"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_window_update()</span></tt></a>, this function returns the number
int32_t <ttclass="descname">nghttp2_session_get_effective_local_window_size</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_get_effective_local_window_size"title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the local (receive) window size for a connection. The
local window size can be adjusted by
<aclass="reference internal"href="#c.nghttp2_submit_window_update"title="nghttp2_submit_window_update"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_window_update()</span></tt></a>. This function takes into account
int32_t <ttclass="descname">nghttp2_session_get_stream_remote_window_size</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a>*<em> session</em>, int32_t<em> stream_id</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_get_stream_remote_window_size"title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the remote window size for a given stream <em>stream_id</em>.
This is the amount of flow-controlled payload (e.g., DATA) that the
local endpoint can send without WINDOW_UPDATE.</p>
int <ttclass="descname">nghttp2_session_terminate_session</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, <aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_terminate_session"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_session_want_read"title="nghttp2_session_want_read"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_want_read()</span></tt></a> and <aclass="reference internal"href="#c.nghttp2_session_want_write"title="nghttp2_session_want_write"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_want_write()</span></tt></a>
this function is invoked, <aclass="reference internal"href="#c.nghttp2_session_want_read"title="nghttp2_session_want_read"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_want_read()</span></tt></a> and
<aclass="reference internal"href="#c.nghttp2_session_want_write"title="nghttp2_session_want_write"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_want_write()</span></tt></a> returns 0 immediately after this
terminated after sending GOAWAY. If the remaining streams should
be processed after GOAWAY, use <aclass="reference internal"href="#c.nghttp2_submit_goaway"title="nghttp2_submit_goaway"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_goaway()</span></tt></a> instead.</p>
int <ttclass="descname">nghttp2_session_upgrade</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, const uint8_t<em> *settings_payload</em>, size_t<em> settings_payloadlen</em>, void<em> *stream_user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_session_upgrade"title="Permalink to this definition">¶</a></dt>
by base64url decoder. The <em>settings_payloadlen</em> is the length of
<em>settings_payload</em>. The <em>settings_payload</em> is unpacked and its
setting values will be submitted using <aclass="reference internal"href="#c.nghttp2_submit_settings"title="nghttp2_submit_settings"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_settings()</span></tt></a>.
This means that the client application code does not need to submit
SETTINGS by itself. The stream with stream ID=1 is opened and the
<em>stream_user_data</em> is used for its stream_user_data. The opened
ssize_t <ttclass="descname">nghttp2_pack_settings_payload</tt><big>(</big>uint8_t<em> *buf</em>, size_t<em> buflen</em>, const <aclass="reference internal"href="#c.nghttp2_settings_entry"title="nghttp2_settings_entry">nghttp2_settings_entry</a><em> *iv</em>, size_t<em> niv</em><big>)</big><aclass="headerlink"href="#c.nghttp2_pack_settings_payload"title="Permalink to this definition">¶</a></dt>
const char* <ttclass="descname">nghttp2_strerror</tt><big>(</big>int<em> lib_error_code</em><big>)</big><aclass="headerlink"href="#c.nghttp2_strerror"title="Permalink to this definition">¶</a></dt>
<em>lib_error_code</em> must be one of the <aclass="reference internal"href="#c.nghttp2_error"title="nghttp2_error"><ttclass="xref c c-macro docutils literal"><spanclass="pre">nghttp2_error</span></tt></a>.</p>
void <ttclass="descname">nghttp2_priority_spec_init</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_priority_spec"title="nghttp2_priority_spec">nghttp2_priority_spec</a><em> *pri_spec</em>, int32_t<em> stream_id</em>, int32_t<em> weight</em>, int<em> exclusive</em><big>)</big><aclass="headerlink"href="#c.nghttp2_priority_spec_init"title="Permalink to this definition">¶</a></dt>
<dd><p>Initializes <em>pri_spec</em> with the <em>stream_id</em> of the stream to depend
on with <em>weight</em> and its exclusive flag. If <em>exclusive</em> is
<p>The <em>weight</em> must be in [<aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>,
void <ttclass="descname">nghttp2_priority_spec_default_init</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_priority_spec"title="nghttp2_priority_spec">nghttp2_priority_spec</a><em> *pri_spec</em><big>)</big><aclass="headerlink"href="#c.nghttp2_priority_spec_default_init"title="Permalink to this definition">¶</a></dt>
<dd><p>Initializes <em>pri_spec</em> with the default values. The default values
are: stream_id = 0, weight = <aclass="reference internal"href="#c.NGHTTP2_DEFAULT_WEIGHT"title="NGHTTP2_DEFAULT_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_DEFAULT_WEIGHT</span></tt></a> and
exclusive = 0.</p>
</dd></dl>
<dlclass="function">
<dtid="c.nghttp2_priority_spec_check_default">
int <ttclass="descname">nghttp2_priority_spec_check_default</tt><big>(</big>const <aclass="reference internal"href="#c.nghttp2_priority_spec"title="nghttp2_priority_spec">nghttp2_priority_spec</a><em> *pri_spec</em><big>)</big><aclass="headerlink"href="#c.nghttp2_priority_spec_check_default"title="Permalink to this definition">¶</a></dt>
<dd><p>Returns nonzero if the <em>pri_spec</em> is filled with default values.</p>
<aclass="reference internal"href="#c.nghttp2_priority_spec_default_init"title="nghttp2_priority_spec_default_init"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_priority_spec_default_init()</span></tt></a>). To specify the priority,
use <aclass="reference internal"href="#c.nghttp2_priority_spec_init"title="nghttp2_priority_spec_init"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_priority_spec_init()</span></tt></a>. If <em>pri_spec</em> is not <ttclass="docutils literal"><spanclass="pre">NULL</span></tt>,
<p>The <ttclass="xref c c-func docutils literal"><spanclass="pre">pri_spec->weight()</span></tt> must be in [<aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>,
<aclass="reference internal"href="#c.NGHTTP2_MAX_WEIGHT"title="NGHTTP2_MAX_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MAX_WEIGHT</span></tt></a>], inclusive. If <ttclass="xref c c-func docutils literal"><spanclass="pre">pri_spec->weight()</span></tt> is
strictly less than <aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>, it becomes
<aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>. If it is strictly greater than
<aclass="reference internal"href="#c.NGHTTP2_MAX_WEIGHT"title="NGHTTP2_MAX_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MAX_WEIGHT</span></tt></a>, it becomes <aclass="reference internal"href="#c.NGHTTP2_MAX_WEIGHT"title="NGHTTP2_MAX_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MAX_WEIGHT</span></tt></a>.</p>
<p>The <em>nva</em> is an array of name/value pair <aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_nv</span></tt></a> with
(<aclass="reference external"href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9</a>) must
be specified with <ttclass="docutils literal"><spanclass="pre">:method</span></tt> key in <em>nva</em> (e.g. <ttclass="docutils literal"><spanclass="pre">POST</span></tt>). This
function does not take ownership of the <em>data_prd</em>. The function
copies the members of the <em>data_prd</em>. If <em>data_prd</em> is <ttclass="docutils literal"><spanclass="pre">NULL</span></tt>,
HEADERS have END_STREAM set. The <em>stream_user_data</em> is data
<aclass="reference internal"href="#c.nghttp2_session_get_stream_user_data"title="nghttp2_session_get_stream_user_data"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_get_stream_user_data()</span></tt></a> can be used to get
int <ttclass="descname">nghttp2_submit_response</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em>, const <aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv">nghttp2_nv</a><em> *nva</em>, size_t<em> nvlen</em>, const <aclass="reference internal"href="#c.nghttp2_data_provider"title="nghttp2_data_provider">nghttp2_data_provider</a><em> *data_prd</em><big>)</big><aclass="headerlink"href="#c.nghttp2_submit_response"title="Permalink to this definition">¶</a></dt>
<p>The <em>nva</em> is an array of name/value pair <aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_nv</span></tt></a> with
<p>This method can be used as normal HTTP response and push response.
When pushing a resource using this function, the <em>session</em> must be
configured using <aclass="reference internal"href="#c.nghttp2_session_server_new"title="nghttp2_session_server_new"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_server_new()</span></tt></a> or its variants and
the target stream denoted by the <em>stream_id</em> must be reserved using
<aclass="reference internal"href="#c.nghttp2_submit_push_promise"title="nghttp2_submit_push_promise"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_push_promise()</span></tt></a>.</p>
<p>If <em>flags</em> includes <aclass="reference internal"href="#c.NGHTTP2_FLAG_END_STREAM"title="NGHTTP2_FLAG_END_STREAM"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_FLAG_END_STREAM</span></tt></a>, this frame has
<aclass="reference internal"href="#c.nghttp2_priority_spec_default_init"title="nghttp2_priority_spec_default_init"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_priority_spec_default_init()</span></tt></a>). To specify the priority,
use <aclass="reference internal"href="#c.nghttp2_priority_spec_init"title="nghttp2_priority_spec_init"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_priority_spec_init()</span></tt></a>. If <em>pri_spec</em> is not <ttclass="docutils literal"><spanclass="pre">NULL</span></tt>,
<p>The <ttclass="xref c c-func docutils literal"><spanclass="pre">pri_spec->weight()</span></tt> must be in [<aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>,
<aclass="reference internal"href="#c.NGHTTP2_MAX_WEIGHT"title="NGHTTP2_MAX_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MAX_WEIGHT</span></tt></a>], inclusive. If <ttclass="xref c c-func docutils literal"><spanclass="pre">pri_spec->weight()</span></tt> is
strictly less than <aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>, it becomes
<aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>. If it is strictly greater than
<aclass="reference internal"href="#c.NGHTTP2_MAX_WEIGHT"title="NGHTTP2_MAX_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MAX_WEIGHT</span></tt></a>, it becomes <aclass="reference internal"href="#c.NGHTTP2_MAX_WEIGHT"title="NGHTTP2_MAX_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MAX_WEIGHT</span></tt></a>.</p>
<p>The <em>nva</em> is an array of name/value pair <aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_nv</span></tt></a> with
<aclass="reference internal"href="#c.nghttp2_submit_request"title="nghttp2_submit_request"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_submit_request()</span></tt></a> is useful.</p>
int <ttclass="descname">nghttp2_submit_data</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, const <aclass="reference internal"href="#c.nghttp2_data_provider"title="nghttp2_data_provider">nghttp2_data_provider</a><em> *data_prd</em><big>)</big><aclass="headerlink"href="#c.nghttp2_submit_data"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.NGHTTP2_FLAG_END_STREAM"title="NGHTTP2_FLAG_END_STREAM"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_FLAG_END_STREAM</span></tt></a>, the last DATA frame has END_STREAM
flag set. If <em>flags</em> contains <aclass="reference internal"href="#c.NGHTTP2_FLAG_END_SEGMENT"title="NGHTTP2_FLAG_END_SEGMENT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_FLAG_END_SEGMENT</span></tt></a>,
the last DATA frame has END_SEGMENT flag set.</p>
<p>This function does not take ownership of the <em>data_prd</em>. The
int <ttclass="descname">nghttp2_submit_priority</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, const <aclass="reference internal"href="#c.nghttp2_priority_spec"title="nghttp2_priority_spec">nghttp2_priority_spec</a><em> *pri_spec</em><big>)</big><aclass="headerlink"href="#c.nghttp2_submit_priority"title="Permalink to this definition">¶</a></dt>
is not allowed for this function. To specify the priority, use
<aclass="reference internal"href="#c.nghttp2_priority_spec_init"title="nghttp2_priority_spec_init"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_priority_spec_init()</span></tt></a>. This function will copy its data
members.</p>
<p>The <ttclass="xref c c-func docutils literal"><spanclass="pre">pri_spec->weight()</span></tt> must be in [<aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>,
<aclass="reference internal"href="#c.NGHTTP2_MAX_WEIGHT"title="NGHTTP2_MAX_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MAX_WEIGHT</span></tt></a>], inclusive. If <ttclass="xref c c-func docutils literal"><spanclass="pre">pri_spec->weight()</span></tt> is
strictly less than <aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>, it becomes
<aclass="reference internal"href="#c.NGHTTP2_MIN_WEIGHT"title="NGHTTP2_MIN_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MIN_WEIGHT</span></tt></a>. If it is strictly greater than
<aclass="reference internal"href="#c.NGHTTP2_MAX_WEIGHT"title="NGHTTP2_MAX_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MAX_WEIGHT</span></tt></a>, it becomes <aclass="reference internal"href="#c.NGHTTP2_MAX_WEIGHT"title="NGHTTP2_MAX_WEIGHT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_MAX_WEIGHT</span></tt></a>.</p>
int <ttclass="descname">nghttp2_submit_rst_stream</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, <aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em><big>)</big><aclass="headerlink"href="#c.nghttp2_submit_rst_stream"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_submit_settings</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, const <aclass="reference internal"href="#c.nghttp2_settings_entry"title="nghttp2_settings_entry">nghttp2_settings_entry</a><em> *iv</em>, size_t<em> niv</em><big>)</big><aclass="headerlink"href="#c.nghttp2_submit_settings"title="Permalink to this definition">¶</a></dt>
<dd><p>Stores local settings and submits SETTINGS frame. The <em>iv</em> is the
pointer to the array of <aclass="reference internal"href="#c.nghttp2_settings_entry"title="nghttp2_settings_entry"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_settings_entry</span></tt></a>. The <em>niv</em>
indicates the number of <aclass="reference internal"href="#c.nghttp2_settings_entry"title="nghttp2_settings_entry"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_settings_entry</span></tt></a>.</p>
<p>SETTINGS with <aclass="reference internal"href="#c.NGHTTP2_FLAG_ACK"title="NGHTTP2_FLAG_ACK"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_FLAG_ACK</span></tt></a> is automatically submitted
int <ttclass="descname">nghttp2_submit_push_promise</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, const <aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv">nghttp2_nv</a><em> *nva</em>, size_t<em> nvlen</em>, void<em> *promised_stream_user_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_submit_push_promise"title="Permalink to this definition">¶</a></dt>
<p>The <em>nva</em> is an array of name/value pair <aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_nv</span></tt></a> with
<aclass="reference internal"href="#c.nghttp2_session_get_stream_user_data"title="nghttp2_session_get_stream_user_data"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_session_get_stream_user_data()</span></tt></a>. The application can
access it in <aclass="reference internal"href="#c.nghttp2_before_frame_send_callback"title="nghttp2_before_frame_send_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_before_frame_send_callback</span></tt></a> and
<aclass="reference internal"href="#c.nghttp2_on_frame_send_callback"title="nghttp2_on_frame_send_callback"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_on_frame_send_callback</span></tt></a> of this frame.</p>
int <ttclass="descname">nghttp2_submit_ping</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, uint8_t<em> *opaque_data</em><big>)</big><aclass="headerlink"href="#c.nghttp2_submit_ping"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_submit_goaway</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, <aclass="reference internal"href="#c.nghttp2_error_code"title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em>, const uint8_t<em> *opaque_data</em>, size_t<em> opaque_data_len</em><big>)</big><aclass="headerlink"href="#c.nghttp2_submit_goaway"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_submit_window_update</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_session"title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, int32_t<em> window_size_increment</em><big>)</big><aclass="headerlink"href="#c.nghttp2_submit_window_update"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_nv_compare_name</tt><big>(</big>const <aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv">nghttp2_nv</a><em> *lhs</em>, const <aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv">nghttp2_nv</a><em> *rhs</em><big>)</big><aclass="headerlink"href="#c.nghttp2_nv_compare_name"title="Permalink to this definition">¶</a></dt>
<dd><p>Compares <ttclass="docutils literal"><spanclass="pre">lhs->name</span></tt> of length <ttclass="docutils literal"><spanclass="pre">lhs->namelen</span></tt> bytes and
<ttclass="docutils literal"><spanclass="pre">rhs->name</span></tt> of length <ttclass="docutils literal"><spanclass="pre">rhs->namelen</span></tt> bytes. Returns negative
integer if <ttclass="docutils literal"><spanclass="pre">lhs->name</span></tt> is found to be less than <ttclass="docutils literal"><spanclass="pre">rhs->name</span></tt>; or
returns positive integer if <ttclass="docutils literal"><spanclass="pre">lhs->name</span></tt> is found to be greater
than <ttclass="docutils literal"><spanclass="pre">rhs->name</span></tt>; or returns 0 otherwise.</p>
int <ttclass="descname">nghttp2_select_next_protocol</tt><big>(</big>unsigned char<em> **out</em>, unsigned char<em> *outlen</em>, const unsigned char<em> *in</em>, unsigned int<em> inlen</em><big>)</big><aclass="headerlink"href="#c.nghttp2_select_next_protocol"title="Permalink to this definition">¶</a></dt>
<p>Selecting <ttclass="docutils literal"><spanclass="pre">HTTP-draft-04/2.0</span></tt> means that <ttclass="docutils literal"><spanclass="pre">HTTP-draft-04/2.0</span></tt> is
<p>See <aclass="reference external"href="http://technotes.googlecode.com/git/nextprotoneg.html">http://technotes.googlecode.com/git/nextprotoneg.html</a> for more
int <ttclass="descname">nghttp2_gzip_inflate_new</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_gzip"title="nghttp2_gzip">nghttp2_gzip</a><em> **inflater_ptr</em><big>)</big><aclass="headerlink"href="#c.nghttp2_gzip_inflate_new"title="Permalink to this definition">¶</a></dt>
void <ttclass="descname">nghttp2_gzip_inflate_del</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_gzip"title="nghttp2_gzip">nghttp2_gzip</a><em> *inflater</em><big>)</big><aclass="headerlink"href="#c.nghttp2_gzip_inflate_del"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_gzip_inflate</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_gzip"title="nghttp2_gzip">nghttp2_gzip</a><em> *inflater</em>, uint8_t<em> *out</em>, size_t<em> *outlen_ptr</em>, const uint8_t<em> *in</em>, size_t<em> *inlen_ptr</em><big>)</big><aclass="headerlink"href="#c.nghttp2_gzip_inflate"title="Permalink to this definition">¶</a></dt>
<aclass="reference internal"href="#c.nghttp2_info"title="nghttp2_info">nghttp2_info</a> *<ttclass="descname">nghttp2_version</tt><big>(</big>int<em> least_version</em><big>)</big><aclass="headerlink"href="#c.nghttp2_version"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_is_fatal</tt><big>(</big>int<em> lib_error</em><big>)</big><aclass="headerlink"href="#c.nghttp2_is_fatal"title="Permalink to this definition">¶</a></dt>
<dd><p>Returns nonzero if the <aclass="reference internal"href="#c.nghttp2_error"title="nghttp2_error"><ttclass="xref c c-type docutils literal"><spanclass="pre">nghttp2_error</span></tt></a> library error code
int <ttclass="descname">nghttp2_check_header_name</tt><big>(</big>const uint8_t<em> *name</em>, size_t<em> len</em><big>)</big><aclass="headerlink"href="#c.nghttp2_check_header_name"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_check_header_value</tt><big>(</big>const uint8_t<em> *value</em>, size_t<em> len</em><big>)</big><aclass="headerlink"href="#c.nghttp2_check_header_value"title="Permalink to this definition">¶</a></dt>
int <ttclass="descname">nghttp2_hd_inflate_new</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_hd_inflater"title="nghttp2_hd_inflater">nghttp2_hd_inflater</a><em> **inflater_ptr</em><big>)</big><aclass="headerlink"href="#c.nghttp2_hd_inflate_new"title="Permalink to this definition">¶</a></dt>
<dd><p>Initializes <em>*inflater_ptr</em> for inflating name/values pairs.</p>
<p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p>
<dlclass="docutils">
<dt><aclass="reference internal"href="#c.NGHTTP2_ERR_NOMEM"title="NGHTTP2_ERR_NOMEM"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd>
</dl>
</dd></dl>
<dlclass="function">
<dtid="c.nghttp2_hd_inflate_del">
void <ttclass="descname">nghttp2_hd_inflate_del</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_hd_inflater"title="nghttp2_hd_inflater">nghttp2_hd_inflater</a><em> *inflater</em><big>)</big><aclass="headerlink"href="#c.nghttp2_hd_inflate_del"title="Permalink to this definition">¶</a></dt>
<dd><p>Deallocates any resources allocated for <em>inflater</em>.</p>
</dd></dl>
<dlclass="function">
<dtid="c.nghttp2_hd_inflate_change_table_size">
int <ttclass="descname">nghttp2_hd_inflate_change_table_size</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_hd_inflater"title="nghttp2_hd_inflater">nghttp2_hd_inflater</a><em> *inflater</em>, size_t<em> settings_hd_table_bufsize_max</em><big>)</big><aclass="headerlink"href="#c.nghttp2_hd_inflate_change_table_size"title="Permalink to this definition">¶</a></dt>
<dd><p>Changes header table size in the <em>inflater</em>. This may trigger
eviction in the dynamic table.</p>
<p>The <em>settings_hd_table_bufsize_max</em> should be the value transmitted
in SETTINGS_HEADER_TABLE_SIZE.</p>
<p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p>
<dlclass="docutils">
<dt><aclass="reference internal"href="#c.NGHTTP2_ERR_NOMEM"title="NGHTTP2_ERR_NOMEM"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd>
</dl>
</dd></dl>
<dlclass="function">
<dtid="c.nghttp2_hd_inflate_hd">
ssize_t <ttclass="descname">nghttp2_hd_inflate_hd</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_hd_inflater"title="nghttp2_hd_inflater">nghttp2_hd_inflater</a><em> *inflater</em>, <aclass="reference internal"href="#c.nghttp2_nv"title="nghttp2_nv">nghttp2_nv</a><em> *nv_out</em>, int<em> *inflate_flags</em>, uint8_t<em> *in</em>, size_t<em> inlen</em>, int<em> in_final</em><big>)</big><aclass="headerlink"href="#c.nghttp2_hd_inflate_hd"title="Permalink to this definition">¶</a></dt>
<dd><p>Inflates name/value block stored in <em>in</em> with length <em>inlen</em>. This
function performs decompression. For each successful emission of
header name/value pair, <aclass="reference internal"href="#c.NGHTTP2_HD_INFLATE_EMIT"title="NGHTTP2_HD_INFLATE_EMIT"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_HD_INFLATE_EMIT</span></tt></a> is set in
<em>*inflate_flags</em> and name/value pair is assigned to the <em>nv_out</em>
and the function returns. The caller must not free the members of
<em>nv_out</em>.</p>
<p>The <em>nv_out</em> may include pointers to the memory region in the
<em>in</em>. The caller must retain the <em>in</em> while the <em>nv_out</em> is used.</p>
<p>The application should call this function repeatedly until the
<ttclass="docutils literal"><spanclass="pre">(*inflate_flags)</span><spanclass="pre">&</span><spanclass="pre">NGHTTP2_HD_INFLATE_FINAL</span></tt> is nonzero and
return value is non-negative. This means the all input values are
processed successfully. Then the application must call
<aclass="reference internal"href="#c.nghttp2_hd_inflate_end_headers"title="nghttp2_hd_inflate_end_headers"><ttclass="xref c c-func docutils literal"><spanclass="pre">nghttp2_hd_inflate_end_headers()</span></tt></a> to prepare for the next header
block input.</p>
<p>The caller can feed complete compressed header block. It also can
feed it in several chunks. The caller must set <em>in_final</em> to
nonzero if the given input is the last block of the compressed
header.</p>
<p>This function returns the number of bytes processed if it succeeds,
or one of the following negative error codes:</p>
<dlclass="docutils">
<dt><aclass="reference internal"href="#c.NGHTTP2_ERR_NOMEM"title="NGHTTP2_ERR_NOMEM"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd>
<dt><aclass="reference internal"href="#c.NGHTTP2_ERR_HEADER_COMP"title="NGHTTP2_ERR_HEADER_COMP"><ttclass="xref c c-macro docutils literal"><spanclass="pre">NGHTTP2_ERR_HEADER_COMP</span></tt></a></dt>
<dd>Inflation process has failed.</dd>
</dl>
</dd></dl>
<dlclass="function">
<dtid="c.nghttp2_hd_inflate_end_headers">
int <ttclass="descname">nghttp2_hd_inflate_end_headers</tt><big>(</big><aclass="reference internal"href="#c.nghttp2_hd_inflater"title="nghttp2_hd_inflater">nghttp2_hd_inflater</a><em> *inflater</em><big>)</big><aclass="headerlink"href="#c.nghttp2_hd_inflate_end_headers"title="Permalink to this definition">¶</a></dt>
<dd><p>Signals the end of decompression for one header block.</p>
<p>This function returns 0 if it succeeds. Currently this function