Commit edd74208 authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

Update doc

parent 35a2e8ff
...@@ -402,10 +402,11 @@ Types (structs, unions and typedefs) ...@@ -402,10 +402,11 @@ Types (structs, unions and typedefs)
.. member:: uint8_t *name .. member:: uint8_t *name
The *name* byte string, which is not necessarily NULL terminated. The *name* byte string, which is not necessarily ``NULL``
terminated.
.. member:: uint8_t *value .. member:: uint8_t *value
The *value* byte string, which is not necessarily NULL The *value* byte string, which is not necessarily ``NULL``
terminated. terminated.
.. member:: uint16_t namelen .. member:: uint16_t namelen
...@@ -614,21 +615,6 @@ Types (structs, unions and typedefs) ...@@ -614,21 +615,6 @@ Types (structs, unions and typedefs)
The window size increment. The window size increment.
.. type:: nghttp2_mem_chunk
The structure to hold chunk of memory.
TODO Drop this if it is not used anymore.
.. member:: uint8_t *data
The pointer to the data.
.. member:: size_t length
The length of the data.
.. type:: nghttp2_frame .. type:: nghttp2_frame
...@@ -1134,24 +1120,24 @@ Functions ...@@ -1134,24 +1120,24 @@ Functions
different in each other. different in each other.
If called from client side, the *settings_payload* must be the If called from client side, the *settings_payload* must be the
value sent in HTTP2-Settings header field and must be decoded by value sent in ``HTTP2-Settings`` header field and must be decoded
base64url decoder. The *settings_payloadlen* is the length of by base64url decoder. The *settings_payloadlen* is the length of
*settings_payload*. The *settings_payload* is unpacked and its *settings_payload*. The *settings_payload* is unpacked and its
setting values will be submitted using setting values will be submitted using
nghttp2_submit_settings(). This means that the client application `nghttp2_submit_settings()`. This means that the client application
code does not need to submit SETTINGS by itself. The stream with code does not need to submit SETTINGS by itself. The stream with
stream ID=1 is opened and the *stream_user_data* is used for its stream ID=1 is opened and the *stream_user_data* is used for its
stream_user_data. The opened stream becomes half-closed (local) stream_user_data. The opened stream becomes half-closed (local)
state. state.
If called from server side, the *settings_payload* must be the If called from server side, the *settings_payload* must be the
value received in HTTP2-Settings header field and must be decoded value received in ``HTTP2-Settings`` header field and must be
by base64url decoder. The *settings_payloadlen* is the length of decoded by base64url decoder. The *settings_payloadlen* is the
*settings_payload*. It is treated as if the SETTINGS frame with length of *settings_payload*. It is treated as if the SETTINGS
that payload is received. Thus, callback functions for the frame with that payload is received. Thus, callback functions for
reception of SETTINGS frame will be invoked. The stream with stream the reception of SETTINGS frame will be invoked. The stream with
ID=1 is opened. The *stream_user_data* is ignored. The opened stream ID=1 is opened. The *stream_user_data* is ignored. The
stream becomes half-closed (remote). opened stream becomes half-closed (remote).
This function returns 0 if it succeeds, or one of the following This function returns 0 if it succeeds, or one of the following
negative error codes: negative error codes:
...@@ -1163,8 +1149,8 @@ Functions ...@@ -1163,8 +1149,8 @@ Functions
:macro:`NGHTTP2_ERR_PROTO` :macro:`NGHTTP2_ERR_PROTO`
The stream ID 1 is already used or closed; or is not available; The stream ID 1 is already used or closed; or is not available;
or the *settings_payload* does not include both or the *settings_payload* does not include both
NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS and :macro:`NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS` and
NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE. :macro:`NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE`.
.. function:: ssize_t nghttp2_pack_settings_payload(uint8_t *buf, nghttp2_settings_entry *iv, size_t niv) .. function:: ssize_t nghttp2_pack_settings_payload(uint8_t *buf, nghttp2_settings_entry *iv, size_t niv)
...@@ -1173,10 +1159,10 @@ Functions ...@@ -1173,10 +1159,10 @@ Functions
entry pointed by *iv* array is given by the *niv*. This function entry pointed by *iv* array is given by the *niv*. This function
may reorder the pointers in *iv*. The *buf* must have enough region may reorder the pointers in *iv*. The *buf* must have enough region
to hold serialized data. The required space for the *niv* entries to hold serialized data. The required space for the *niv* entries
are 8**niv* bytes. This function is used mainly for creating are ``8*niv`` bytes. This function is used mainly for creating
SETTINGS payload to be sent with HTTP2-Settings header field in SETTINGS payload to be sent with ``HTTP2-Settings`` header field in
HTTP Upgrade request. The data written in *buf* is not still HTTP Upgrade request. The data written in *buf* is not still
base64url encoded and the application is responsible to do that. base64url encoded and the application is responsible for encoding.
This function returns the number of bytes written in *buf*, or one This function returns the number of bytes written in *buf*, or one
of the following negative error codes: of the following negative error codes:
...@@ -1196,8 +1182,7 @@ Functions ...@@ -1196,8 +1182,7 @@ Functions
Submits HEADERS frame and optionally one or more DATA frames. Submits HEADERS frame and optionally one or more DATA frames.
The *pri* is priority of this request. 0 is the highest priority The *pri* is priority of this request. 0 is the highest priority
value. Use `nghttp2_session_get_pri_lowest()` to know the lowest value and :macro:`NGHTTP2_PRI_LOWEST` is the lowest value.
priority value for this *session*.
The *nv* contains the name/value pairs. For i >= 0, ``nv[2*i]`` The *nv* contains the name/value pairs. For i >= 0, ``nv[2*i]``
contains a pointer to the name string and ``nv[2*i+1]`` contains a contains a pointer to the name string and ``nv[2*i+1]`` contains a
...@@ -1250,8 +1235,8 @@ Functions ...@@ -1250,8 +1235,8 @@ Functions
negative error codes: negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT` :macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *pri* is invalid; or the *nv* includes empty name or NULL The *pri* is invalid; or the *nv* includes empty name or
value. ``NULL`` value.
:macro:`NGHTTP2_ERR_NOMEM` :macro:`NGHTTP2_ERR_NOMEM`
Out of memory. Out of memory.
...@@ -1285,7 +1270,7 @@ Functions ...@@ -1285,7 +1270,7 @@ Functions
negative error codes: negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT` :macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *nv* includes empty name or NULL value. The *nv* includes empty name or ``NULL`` value.
:macro:`NGHTTP2_ERR_NOMEM` :macro:`NGHTTP2_ERR_NOMEM`
Out of memory. Out of memory.
...@@ -1296,13 +1281,17 @@ Functions ...@@ -1296,13 +1281,17 @@ Functions
following values: following values:
* :macro:`NGHTTP2_FLAG_END_STREAM` * :macro:`NGHTTP2_FLAG_END_STREAM`
* :macro:`NGHTTP2_FLAG_END_HEADERS`
* :macro:`NGHTTP2_FLAG_PRIORITY` * :macro:`NGHTTP2_FLAG_PRIORITY`
If *flags* includes :macro:`NGHTTP2_FLAG_END_STREAM`, this frame has If *flags* includes :macro:`NGHTTP2_FLAG_END_STREAM`, this frame has
END_STREAM flag set. END_STREAM flag set. The library does not support header
continuation and the HEADERS frame always has
:macro:`NGHTTP2_FLAG_END_HEADERS` flag set regardless of the *flags*
value.
If the *stream_id* is -1, this frame is assumed as request (i.e., If the *stream_id* is -1, this frame is assumed as request (i.e.,
first HEADERS frame which opens new stream). In this case, the request HEADERS frame which opens new stream). In this case, the
actual stream ID is assigned just before the frame is sent. For actual stream ID is assigned just before the frame is sent. For
response, specify stream ID in *stream_id*. response, specify stream ID in *stream_id*.
...@@ -1323,15 +1312,15 @@ Functions ...@@ -1323,15 +1312,15 @@ Functions
state from idle or reserved to open. state from idle or reserved to open.
This function is low-level in a sense that the application code can This function is low-level in a sense that the application code can
specify flags and the Associated-To-Stream-ID directly. For usual specify flags directly. For usual HTTP request,
HTTP request, `nghttp2_submit_request()` is useful. `nghttp2_submit_request()` is useful.
This function returns 0 if it succeeds, or one of the following This function returns 0 if it succeeds, or one of the following
negative error codes: negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT` :macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *pri* is invalid; or the *assoc_stream_id* is invalid; or The *pri* is invalid; or the *nv* includes empty name or
the *nv* includes empty name or NULL value. ``NULL`` value.
:macro:`NGHTTP2_ERR_NOMEM` :macro:`NGHTTP2_ERR_NOMEM`
Out of memory. Out of memory.
...@@ -1383,9 +1372,7 @@ Functions ...@@ -1383,9 +1372,7 @@ Functions
Stores local settings and submits SETTINGS frame. The *iv* is the Stores local settings and submits SETTINGS frame. The *iv* is the
pointer to the array of :type:`nghttp2_settings_entry`. The *niv* pointer to the array of :type:`nghttp2_settings_entry`. The *niv*
indicates the number of :type:`nghttp2_settings_entry`. The *flags* indicates the number of :type:`nghttp2_settings_entry`.
is bitwise-OR of one or more values from
:type:`nghttp2_settings_flag`.
This function does not take ownership of the *iv*. This function This function does not take ownership of the *iv*. This function
copies all the elements in the *iv*. copies all the elements in the *iv*.
...@@ -1401,7 +1388,10 @@ Functions ...@@ -1401,7 +1388,10 @@ Functions
.. function:: int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags, int32_t stream_id, const char **nv) .. function:: int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags, int32_t stream_id, const char **nv)
Submits PUSH_PROMISE frame. The *flags* is currently ignored. Submits PUSH_PROMISE frame. The *flags* is currently ignored and
the resulting PUSH_PROMISE frame always has
:macro:`NGHTTP2_FLAG_END_PUSH_PROMISE` flag set due to the lack of
header continuation support in the library.
The *stream_id* must be client initiated stream ID. The *stream_id* must be client initiated stream ID.
...@@ -1419,7 +1409,7 @@ Functions ...@@ -1419,7 +1409,7 @@ Functions
stream ID must be strictly increasing, the promised stream ID stream ID must be strictly increasing, the promised stream ID
cannot be known until it is about to sent. To know the promised cannot be known until it is about to sent. To know the promised
stream ID, the application can use stream ID, the application can use
:member:`nghttp2_session_callbacks.before_ctrl_send_callback`. This :member:`nghttp2_session_callbacks.before_frame_send_callback`. This
callback is called just before the frame is sent. For PUSH_PROMISE callback is called just before the frame is sent. For PUSH_PROMISE
frame, the argument frame has the promised stream ID assigned. frame, the argument frame has the promised stream ID assigned.
...@@ -1427,7 +1417,7 @@ Functions ...@@ -1427,7 +1417,7 @@ Functions
negative error codes: negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT` :macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *nv* includes empty name or NULL value. The *nv* includes empty name or ``NULL`` value.
:macro:`NGHTTP2_ERR_NOMEM` :macro:`NGHTTP2_ERR_NOMEM`
Out of memory. Out of memory.
...@@ -1438,10 +1428,10 @@ Functions ...@@ -1438,10 +1428,10 @@ Functions
received PING frame. The library automatically submits PING frame received PING frame. The library automatically submits PING frame
in this case. in this case.
If the *opaque_data* is non NULL, then it should point to the 8 If the *opaque_data* is non ``NULL``, then it should point to the 8
bytes array of memory to specify opaque data to send with PING bytes array of memory to specify opaque data to send with PING
frame. If the *opaque_data* is NULL, 8 zero bytes will be sent as frame. If the *opaque_data* is ``NULL``, zero-cleared 8 bytes will
opaque data. be sent as opaque data.
This function returns 0 if it succeeds, or one of the following This function returns 0 if it succeeds, or one of the following
negative error codes: negative error codes:
...@@ -1454,12 +1444,12 @@ Functions ...@@ -1454,12 +1444,12 @@ Functions
Submits GOAWAY frame with the error code *error_code*. Submits GOAWAY frame with the error code *error_code*.
If the *opaque_data* is not NULL and opaque_data_len is not zero, If the *opaque_data* is not ``NULL`` and *opaque_data_len* is not
those data will be sent as additional debug data. The library zero, those data will be sent as additional debug data. The
makes a copy of the memory region pointed by *opaque_data* with the library makes a copy of the memory region pointed by *opaque_data*
length *opaque_data_len*, so the caller does not need to keep this with the length *opaque_data_len*, so the caller does not need to
memory after the return of this function. If the *opaque_data_len* keep this memory after the return of this function. If the
is 0, the *opaque_data* could be NULL. *opaque_data_len* is 0, the *opaque_data* could be ``NULL``.
This function returns 0 if it succeeds, or one of the following This function returns 0 if it succeeds, or one of the following
negative error codes: negative error codes:
...@@ -1473,8 +1463,8 @@ Functions ...@@ -1473,8 +1463,8 @@ Functions
Submits WINDOW_UPDATE frame. The effective range of the Submits WINDOW_UPDATE frame. The effective range of the
*window_size_increment* is [1, (1 << 31)-1], inclusive. But the *window_size_increment* is [1, (1 << 31)-1], inclusive. But the
application must be responsible to keep the resulting window size application must be responsible to keep the resulting window size
<= (1 << 31)-1. If NGHTTP2_FLAG_END_FLOW_CONTROL bit set in the <= (1 << 31)-1. If :macro:`NGHTTP2_FLAG_END_FLOW_CONTROL` bit set in
*flags*, 0 can be specified in the *window_size_increment*. In the *flags*, 0 can be specified in the *window_size_increment*. In
fact, if this flag is set, the value specified in the fact, if this flag is set, the value specified in the
*window_size_increment* is ignored. *window_size_increment* is ignored.
...@@ -1482,8 +1472,9 @@ Functions ...@@ -1482,8 +1472,9 @@ Functions
negative error codes: negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT` :macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *delta_window_size* is 0 or negative if The *delta_window_size* is 0 or negative and
NGHTTP2_FLAG_END_FLOW_CONTROL bit is not set in *flags*. :macro:`NGHTTP2_FLAG_END_FLOW_CONTROL` bit is not set in
*flags*.
:macro:`NGHTTP2_ERR_STREAM_CLOSED` :macro:`NGHTTP2_ERR_STREAM_CLOSED`
The stream is already closed or does not exist. The stream is already closed or does not exist.
:macro:`NGHTTP2_ERR_NOMEM` :macro:`NGHTTP2_ERR_NOMEM`
......
...@@ -21,3 +21,4 @@ Resources ...@@ -21,3 +21,4 @@ Resources
--------- ---------
* http://tools.ietf.org/html/draft-ietf-httpbis-http2-04 * http://tools.ietf.org/html/draft-ietf-httpbis-http2-04
* http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-01
...@@ -634,13 +634,14 @@ from the public API.</p> ...@@ -634,13 +634,14 @@ from the public API.</p>
<dl class="member"> <dl class="member">
<dt id="nghttp2_nv.name"> <dt id="nghttp2_nv.name">
uint8_t *<tt class="descname">name</tt><a class="headerlink" href="#nghttp2_nv.name" title="Permalink to this definition"></a></dt> uint8_t *<tt class="descname">name</tt><a class="headerlink" href="#nghttp2_nv.name" title="Permalink to this definition"></a></dt>
<dd><p>The <em>name</em> byte string, which is not necessarily NULL terminated.</p> <dd><p>The <em>name</em> byte string, which is not necessarily <tt class="docutils literal"><span class="pre">NULL</span></tt>
terminated.</p>
</dd></dl> </dd></dl>
<dl class="member"> <dl class="member">
<dt id="nghttp2_nv.value"> <dt id="nghttp2_nv.value">
uint8_t *<tt class="descname">value</tt><a class="headerlink" href="#nghttp2_nv.value" title="Permalink to this definition"></a></dt> uint8_t *<tt class="descname">value</tt><a class="headerlink" href="#nghttp2_nv.value" title="Permalink to this definition"></a></dt>
<dd><p>The <em>value</em> byte string, which is not necessarily NULL <dd><p>The <em>value</em> byte string, which is not necessarily <tt class="docutils literal"><span class="pre">NULL</span></tt>
terminated.</p> terminated.</p>
</dd></dl> </dd></dl>
...@@ -957,25 +958,6 @@ int32_t <tt class="descname">window_size_increment</tt><a class="headerlink" hre ...@@ -957,25 +958,6 @@ int32_t <tt class="descname">window_size_increment</tt><a class="headerlink" hre
</dd></dl> </dd></dl>
<dl class="type">
<dt id="nghttp2_mem_chunk">
<tt class="descname">nghttp2_mem_chunk</tt><a class="headerlink" href="#nghttp2_mem_chunk" title="Permalink to this definition"></a></dt>
<dd><p>The structure to hold chunk of memory.</p>
<p>TODO Drop this if it is not used anymore.</p>
<dl class="member">
<dt id="nghttp2_mem_chunk.data">
uint8_t *<tt class="descname">data</tt><a class="headerlink" href="#nghttp2_mem_chunk.data" title="Permalink to this definition"></a></dt>
<dd><p>The pointer to the data.</p>
</dd></dl>
<dl class="member">
<dt id="nghttp2_mem_chunk.length">
size_t <tt class="descname">length</tt><a class="headerlink" href="#nghttp2_mem_chunk.length" title="Permalink to this definition"></a></dt>
<dd><p>The length of the data.</p>
</dd></dl>
</dd></dl>
<dl class="type"> <dl class="type">
<dt id="nghttp2_frame"> <dt id="nghttp2_frame">
<tt class="descname">nghttp2_frame</tt><a class="headerlink" href="#nghttp2_frame" title="Permalink to this definition"></a></dt> <tt class="descname">nghttp2_frame</tt><a class="headerlink" href="#nghttp2_frame" title="Permalink to this definition"></a></dt>
...@@ -1573,23 +1555,23 @@ int <tt class="descname">nghttp2_session_upgrade</tt><big>(</big><a class="refer ...@@ -1573,23 +1555,23 @@ int <tt class="descname">nghttp2_session_upgrade</tt><big>(</big><a class="refer
called from both client and server, but the behavior is very called from both client and server, but the behavior is very
different in each other.</p> different in each other.</p>
<p>If called from client side, the <em>settings_payload</em> must be the <p>If called from client side, the <em>settings_payload</em> must be the
value sent in HTTP2-Settings header field and must be decoded by value sent in <tt class="docutils literal"><span class="pre">HTTP2-Settings</span></tt> header field and must be decoded
base64url decoder. The <em>settings_payloadlen</em> is the length of 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 <em>settings_payload</em>. The <em>settings_payload</em> is unpacked and its
setting values will be submitted using setting values will be submitted using
nghttp2_submit_settings(). This means that the client application <a class="reference internal" href="#nghttp2_submit_settings" title="nghttp2_submit_settings"><tt class="xref c c-func docutils literal"><span class="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 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 ID=1 is opened and the <em>stream_user_data</em> is used for its
stream_user_data. The opened stream becomes half-closed (local) stream_user_data. The opened stream becomes half-closed (local)
state.</p> state.</p>
<p>If called from server side, the <em>settings_payload</em> must be the <p>If called from server side, the <em>settings_payload</em> must be the
value received in HTTP2-Settings header field and must be decoded value received in <tt class="docutils literal"><span class="pre">HTTP2-Settings</span></tt> header field and must be
by base64url decoder. The <em>settings_payloadlen</em> is the length of decoded by base64url decoder. The <em>settings_payloadlen</em> is the
<em>settings_payload</em>. It is treated as if the SETTINGS frame with length of <em>settings_payload</em>. It is treated as if the SETTINGS
that payload is received. Thus, callback functions for the frame with that payload is received. Thus, callback functions for
reception of SETTINGS frame will be invoked. The stream with stream the reception of SETTINGS frame will be invoked. The stream with
ID=1 is opened. The <em>stream_user_data</em> is ignored. The opened stream ID=1 is opened. The <em>stream_user_data</em> is ignored. The
stream becomes half-closed (remote).</p> opened stream becomes half-closed (remote).</p>
<p>This function returns 0 if it succeeds, or one of the following <p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p> negative error codes:</p>
<dl class="docutils"> <dl class="docutils">
...@@ -1600,8 +1582,8 @@ negative error codes:</p> ...@@ -1600,8 +1582,8 @@ negative error codes:</p>
<dt><a class="reference internal" href="#NGHTTP2_ERR_PROTO" title="NGHTTP2_ERR_PROTO"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_PROTO</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_PROTO" title="NGHTTP2_ERR_PROTO"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_PROTO</span></tt></a></dt>
<dd>The stream ID 1 is already used or closed; or is not available; <dd>The stream ID 1 is already used or closed; or is not available;
or the <em>settings_payload</em> does not include both or the <em>settings_payload</em> does not include both
NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS and <a class="reference internal" href="#NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS" title="NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS</span></tt></a> and
NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE.</dd> <a class="reference internal" href="#NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE" title="NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE</span></tt></a>.</dd>
</dl> </dl>
</dd></dl> </dd></dl>
...@@ -1612,10 +1594,10 @@ ssize_t <tt class="descname">nghttp2_pack_settings_payload</tt><big>(</big>uint8 ...@@ -1612,10 +1594,10 @@ ssize_t <tt class="descname">nghttp2_pack_settings_payload</tt><big>(</big>uint8
entry pointed by <em>iv</em> array is given by the <em>niv</em>. This function entry pointed by <em>iv</em> array is given by the <em>niv</em>. This function
may reorder the pointers in <em>iv</em>. The <em>buf</em> must have enough region may reorder the pointers in <em>iv</em>. The <em>buf</em> must have enough region
to hold serialized data. The required space for the <em>niv</em> entries to hold serialized data. The required space for the <em>niv</em> entries
are 8**niv* bytes. This function is used mainly for creating are <tt class="docutils literal"><span class="pre">8*niv</span></tt> bytes. This function is used mainly for creating
SETTINGS payload to be sent with HTTP2-Settings header field in SETTINGS payload to be sent with <tt class="docutils literal"><span class="pre">HTTP2-Settings</span></tt> header field in
HTTP Upgrade request. The data written in <em>buf</em> is not still HTTP Upgrade request. The data written in <em>buf</em> is not still
base64url encoded and the application is responsible to do that.</p> base64url encoded and the application is responsible for encoding.</p>
<p>This function returns the number of bytes written in <em>buf</em>, or one <p>This function returns the number of bytes written in <em>buf</em>, or one
of the following negative error codes:</p> of the following negative error codes:</p>
<dl class="docutils"> <dl class="docutils">
...@@ -1636,8 +1618,7 @@ const char* <tt class="descname">nghttp2_strerror</tt><big>(</big>int<em>&nbsp;l ...@@ -1636,8 +1618,7 @@ const char* <tt class="descname">nghttp2_strerror</tt><big>(</big>int<em>&nbsp;l
int <tt class="descname">nghttp2_submit_request</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, int32_t<em>&nbsp;pri</em>, const char<em>&nbsp;**nv</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em>&nbsp;*data_prd</em>, void<em>&nbsp;*stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_request" title="Permalink to this definition"></a></dt> int <tt class="descname">nghttp2_submit_request</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, int32_t<em>&nbsp;pri</em>, const char<em>&nbsp;**nv</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em>&nbsp;*data_prd</em>, void<em>&nbsp;*stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_request" title="Permalink to this definition"></a></dt>
<dd><p>Submits HEADERS frame and optionally one or more DATA frames.</p> <dd><p>Submits HEADERS frame and optionally one or more DATA frames.</p>
<p>The <em>pri</em> is priority of this request. 0 is the highest priority <p>The <em>pri</em> is priority of this request. 0 is the highest priority
value. Use <tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_get_pri_lowest()</span></tt> to know the lowest value and <a class="reference internal" href="#NGHTTP2_PRI_LOWEST" title="NGHTTP2_PRI_LOWEST"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_PRI_LOWEST</span></tt></a> is the lowest value.</p>
priority value for this <em>session</em>.</p>
<p>The <em>nv</em> contains the name/value pairs. For i &gt;= 0, <tt class="docutils literal"><span class="pre">nv[2*i]</span></tt> <p>The <em>nv</em> contains the name/value pairs. For i &gt;= 0, <tt class="docutils literal"><span class="pre">nv[2*i]</span></tt>
contains a pointer to the name string and <tt class="docutils literal"><span class="pre">nv[2*i+1]</span></tt> contains a contains a pointer to the name string and <tt class="docutils literal"><span class="pre">nv[2*i+1]</span></tt> contains a
pointer to the value string. The one beyond last value must be pointer to the value string. The one beyond last value must be
...@@ -1685,8 +1666,8 @@ the stream is already opened, ...@@ -1685,8 +1666,8 @@ the stream is already opened,
negative error codes:</p> negative error codes:</p>
<dl class="docutils"> <dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>pri</em> is invalid; or the <em>nv</em> includes empty name or NULL <dd>The <em>pri</em> is invalid; or the <em>nv</em> includes empty name or
value.</dd> <tt class="docutils literal"><span class="pre">NULL</span></tt> value.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd> <dd>Out of memory.</dd>
</dl> </dl>
...@@ -1718,7 +1699,7 @@ END_STREAM flag set.</p> ...@@ -1718,7 +1699,7 @@ END_STREAM flag set.</p>
negative error codes:</p> negative error codes:</p>
<dl class="docutils"> <dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>nv</em> includes empty name or NULL value.</dd> <dd>The <em>nv</em> includes empty name or <tt class="docutils literal"><span class="pre">NULL</span></tt> value.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd> <dd>Out of memory.</dd>
</dl> </dl>
...@@ -1731,12 +1712,16 @@ int <tt class="descname">nghttp2_submit_headers</tt><big>(</big><a class="refere ...@@ -1731,12 +1712,16 @@ int <tt class="descname">nghttp2_submit_headers</tt><big>(</big><a class="refere
following values:</p> following values:</p>
<ul class="simple"> <ul class="simple">
<li><a class="reference internal" href="#NGHTTP2_FLAG_END_STREAM" title="NGHTTP2_FLAG_END_STREAM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_STREAM</span></tt></a></li> <li><a class="reference internal" href="#NGHTTP2_FLAG_END_STREAM" title="NGHTTP2_FLAG_END_STREAM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_STREAM</span></tt></a></li>
<li><a class="reference internal" href="#NGHTTP2_FLAG_END_HEADERS" title="NGHTTP2_FLAG_END_HEADERS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_HEADERS</span></tt></a></li>
<li><a class="reference internal" href="#NGHTTP2_FLAG_PRIORITY" title="NGHTTP2_FLAG_PRIORITY"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_PRIORITY</span></tt></a></li> <li><a class="reference internal" href="#NGHTTP2_FLAG_PRIORITY" title="NGHTTP2_FLAG_PRIORITY"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_PRIORITY</span></tt></a></li>
</ul> </ul>
<p>If <em>flags</em> includes <a class="reference internal" href="#NGHTTP2_FLAG_END_STREAM" title="NGHTTP2_FLAG_END_STREAM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_STREAM</span></tt></a>, this frame has <p>If <em>flags</em> includes <a class="reference internal" href="#NGHTTP2_FLAG_END_STREAM" title="NGHTTP2_FLAG_END_STREAM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_STREAM</span></tt></a>, this frame has
END_STREAM flag set.</p> END_STREAM flag set. The library does not support header
continuation and the HEADERS frame always has
<a class="reference internal" href="#NGHTTP2_FLAG_END_HEADERS" title="NGHTTP2_FLAG_END_HEADERS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_HEADERS</span></tt></a> flag set regardless of the <em>flags</em>
value.</p>
<p>If the <em>stream_id</em> is -1, this frame is assumed as request (i.e., <p>If the <em>stream_id</em> is -1, this frame is assumed as request (i.e.,
first HEADERS frame which opens new stream). In this case, the request HEADERS frame which opens new stream). In this case, the
actual stream ID is assigned just before the frame is sent. For actual stream ID is assigned just before the frame is sent. For
response, specify stream ID in <em>stream_id</em>.</p> response, specify stream ID in <em>stream_id</em>.</p>
<p>The <em>pri</em> is priority of this request.</p> <p>The <em>pri</em> is priority of this request.</p>
...@@ -1752,14 +1737,14 @@ associated to the stream this frame will open. Therefore it is only ...@@ -1752,14 +1737,14 @@ associated to the stream this frame will open. Therefore it is only
used if this frame opens streams, in other words, it changes stream used if this frame opens streams, in other words, it changes stream
state from idle or reserved to open.</p> state from idle or reserved to open.</p>
<p>This function is low-level in a sense that the application code can <p>This function is low-level in a sense that the application code can
specify flags and the Associated-To-Stream-ID directly. For usual specify flags directly. For usual HTTP request,
HTTP request, <a class="reference internal" href="#nghttp2_submit_request" title="nghttp2_submit_request"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_request()</span></tt></a> is useful.</p> <a class="reference internal" href="#nghttp2_submit_request" title="nghttp2_submit_request"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_request()</span></tt></a> is useful.</p>
<p>This function returns 0 if it succeeds, or one of the following <p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p> negative error codes:</p>
<dl class="docutils"> <dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>pri</em> is invalid; or the <em>assoc_stream_id</em> is invalid; or <dd>The <em>pri</em> is invalid; or the <em>nv</em> includes empty name or
the <em>nv</em> includes empty name or NULL value.</dd> <tt class="docutils literal"><span class="pre">NULL</span></tt> value.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd> <dd>Out of memory.</dd>
</dl> </dl>
...@@ -1815,9 +1800,7 @@ negative error codes:</p> ...@@ -1815,9 +1800,7 @@ negative error codes:</p>
int <tt class="descname">nghttp2_submit_settings</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, const <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry">nghttp2_settings_entry</a><em>&nbsp;*iv</em>, size_t<em>&nbsp;niv</em><big>)</big><a class="headerlink" href="#nghttp2_submit_settings" title="Permalink to this definition"></a></dt> int <tt class="descname">nghttp2_submit_settings</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, const <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry">nghttp2_settings_entry</a><em>&nbsp;*iv</em>, size_t<em>&nbsp;niv</em><big>)</big><a class="headerlink" href="#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 <dd><p>Stores local settings and submits SETTINGS frame. The <em>iv</em> is the
pointer to the array of <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_settings_entry</span></tt></a>. The <em>niv</em> pointer to the array of <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_settings_entry</span></tt></a>. The <em>niv</em>
indicates the number of <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_settings_entry</span></tt></a>. The <em>flags</em> indicates the number of <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_settings_entry</span></tt></a>.</p>
is bitwise-OR of one or more values from
<tt class="xref c c-type docutils literal"><span class="pre">nghttp2_settings_flag</span></tt>.</p>
<p>This function does not take ownership of the <em>iv</em>. This function <p>This function does not take ownership of the <em>iv</em>. This function
copies all the elements in the <em>iv</em>.</p> copies all the elements in the <em>iv</em>.</p>
<p>This function returns 0 if it succeeds, or one of the following <p>This function returns 0 if it succeeds, or one of the following
...@@ -1833,7 +1816,10 @@ negative error codes:</p> ...@@ -1833,7 +1816,10 @@ negative error codes:</p>
<dl class="function"> <dl class="function">
<dt id="nghttp2_submit_push_promise"> <dt id="nghttp2_submit_push_promise">
int <tt class="descname">nghttp2_submit_push_promise</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, uint8_t<em>&nbsp;flags</em>, int32_t<em>&nbsp;stream_id</em>, const char<em>&nbsp;**nv</em><big>)</big><a class="headerlink" href="#nghttp2_submit_push_promise" title="Permalink to this definition"></a></dt> int <tt class="descname">nghttp2_submit_push_promise</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, uint8_t<em>&nbsp;flags</em>, int32_t<em>&nbsp;stream_id</em>, const char<em>&nbsp;**nv</em><big>)</big><a class="headerlink" href="#nghttp2_submit_push_promise" title="Permalink to this definition"></a></dt>
<dd><p>Submits PUSH_PROMISE frame. The <em>flags</em> is currently ignored.</p> <dd><p>Submits PUSH_PROMISE frame. The <em>flags</em> is currently ignored and
the resulting PUSH_PROMISE frame always has
<a class="reference internal" href="#NGHTTP2_FLAG_END_PUSH_PROMISE" title="NGHTTP2_FLAG_END_PUSH_PROMISE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_PUSH_PROMISE</span></tt></a> flag set due to the lack of
header continuation support in the library.</p>
<p>The <em>stream_id</em> must be client initiated stream ID.</p> <p>The <em>stream_id</em> must be client initiated stream ID.</p>
<p>The <em>nv</em> contains the name/value pairs. For i &gt;= 0, <tt class="docutils literal"><span class="pre">nv[2*i]</span></tt> <p>The <em>nv</em> contains the name/value pairs. For i &gt;= 0, <tt class="docutils literal"><span class="pre">nv[2*i]</span></tt>
contains a pointer to the name string and <tt class="docutils literal"><span class="pre">nv[2*i+1]</span></tt> contains a contains a pointer to the name string and <tt class="docutils literal"><span class="pre">nv[2*i+1]</span></tt> contains a
...@@ -1847,14 +1833,14 @@ prioritized one first and the HTTP/2.0 specification requires the ...@@ -1847,14 +1833,14 @@ prioritized one first and the HTTP/2.0 specification requires the
stream ID must be strictly increasing, the promised stream ID stream ID must be strictly increasing, the promised stream ID
cannot be known until it is about to sent. To know the promised cannot be known until it is about to sent. To know the promised
stream ID, the application can use stream ID, the application can use
<tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.before_ctrl_send_callback</span></tt>. This <a class="reference internal" href="#nghttp2_session_callbacks.before_frame_send_callback" title="nghttp2_session_callbacks.before_frame_send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.before_frame_send_callback</span></tt></a>. This
callback is called just before the frame is sent. For PUSH_PROMISE callback is called just before the frame is sent. For PUSH_PROMISE
frame, the argument frame has the promised stream ID assigned.</p> frame, the argument frame has the promised stream ID assigned.</p>
<p>This function returns 0 if it succeeds, or one of the following <p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p> negative error codes:</p>
<dl class="docutils"> <dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>nv</em> includes empty name or NULL value.</dd> <dd>The <em>nv</em> includes empty name or <tt class="docutils literal"><span class="pre">NULL</span></tt> value.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd> <dd>Out of memory.</dd>
</dl> </dl>
...@@ -1866,10 +1852,10 @@ int <tt class="descname">nghttp2_submit_ping</tt><big>(</big><a class="reference ...@@ -1866,10 +1852,10 @@ int <tt class="descname">nghttp2_submit_ping</tt><big>(</big><a class="reference
<dd><p>Submits PING frame. You don&#8217;t have to send PING back when you <dd><p>Submits PING frame. You don&#8217;t have to send PING back when you
received PING frame. The library automatically submits PING frame received PING frame. The library automatically submits PING frame
in this case.</p> in this case.</p>
<p>If the <em>opaque_data</em> is non NULL, then it should point to the 8 <p>If the <em>opaque_data</em> is non <tt class="docutils literal"><span class="pre">NULL</span></tt>, then it should point to the 8
bytes array of memory to specify opaque data to send with PING bytes array of memory to specify opaque data to send with PING
frame. If the <em>opaque_data</em> is NULL, 8 zero bytes will be sent as frame. If the <em>opaque_data</em> is <tt class="docutils literal"><span class="pre">NULL</span></tt>, zero-cleared 8 bytes will
opaque data.</p> be sent as opaque data.</p>
<p>This function returns 0 if it succeeds, or one of the following <p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p> negative error codes:</p>
<dl class="docutils"> <dl class="docutils">
...@@ -1882,12 +1868,12 @@ negative error codes:</p> ...@@ -1882,12 +1868,12 @@ negative error codes:</p>
<dt id="nghttp2_submit_goaway"> <dt id="nghttp2_submit_goaway">
int <tt class="descname">nghttp2_submit_goaway</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, <a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em>&nbsp;error_code</em>, uint8_t<em>&nbsp;*opaque_data</em>, size_t<em>&nbsp;opaque_data_len</em><big>)</big><a class="headerlink" href="#nghttp2_submit_goaway" title="Permalink to this definition"></a></dt> int <tt class="descname">nghttp2_submit_goaway</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, <a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em>&nbsp;error_code</em>, uint8_t<em>&nbsp;*opaque_data</em>, size_t<em>&nbsp;opaque_data_len</em><big>)</big><a class="headerlink" href="#nghttp2_submit_goaway" title="Permalink to this definition"></a></dt>
<dd><p>Submits GOAWAY frame with the error code <em>error_code</em>.</p> <dd><p>Submits GOAWAY frame with the error code <em>error_code</em>.</p>
<p>If the <em>opaque_data</em> is not NULL and opaque_data_len is not zero, <p>If the <em>opaque_data</em> is not <tt class="docutils literal"><span class="pre">NULL</span></tt> and <em>opaque_data_len</em> is not
those data will be sent as additional debug data. The library zero, those data will be sent as additional debug data. The
makes a copy of the memory region pointed by <em>opaque_data</em> with the library makes a copy of the memory region pointed by <em>opaque_data</em>
length <em>opaque_data_len</em>, so the caller does not need to keep this with the length <em>opaque_data_len</em>, so the caller does not need to
memory after the return of this function. If the <em>opaque_data_len</em> keep this memory after the return of this function. If the
is 0, the <em>opaque_data</em> could be NULL.</p> <em>opaque_data_len</em> is 0, the <em>opaque_data</em> could be <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
<p>This function returns 0 if it succeeds, or one of the following <p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p> negative error codes:</p>
<dl class="docutils"> <dl class="docutils">
...@@ -1902,16 +1888,17 @@ int <tt class="descname">nghttp2_submit_window_update</tt><big>(</big><a class=" ...@@ -1902,16 +1888,17 @@ int <tt class="descname">nghttp2_submit_window_update</tt><big>(</big><a class="
<dd><p>Submits WINDOW_UPDATE frame. The effective range of the <dd><p>Submits WINDOW_UPDATE frame. The effective range of the
<em>window_size_increment</em> is [1, (1 &lt;&lt; 31)-1], inclusive. But the <em>window_size_increment</em> is [1, (1 &lt;&lt; 31)-1], inclusive. But the
application must be responsible to keep the resulting window size application must be responsible to keep the resulting window size
&lt;= (1 &lt;&lt; 31)-1. If NGHTTP2_FLAG_END_FLOW_CONTROL bit set in the &lt;= (1 &lt;&lt; 31)-1. If <a class="reference internal" href="#NGHTTP2_FLAG_END_FLOW_CONTROL" title="NGHTTP2_FLAG_END_FLOW_CONTROL"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_FLOW_CONTROL</span></tt></a> bit set in
<em>flags</em>, 0 can be specified in the <em>window_size_increment</em>. In the <em>flags</em>, 0 can be specified in the <em>window_size_increment</em>. In
fact, if this flag is set, the value specified in the fact, if this flag is set, the value specified in the
<em>window_size_increment</em> is ignored.</p> <em>window_size_increment</em> is ignored.</p>
<p>This function returns 0 if it succeeds, or one of the following <p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p> negative error codes:</p>
<dl class="docutils"> <dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>delta_window_size</em> is 0 or negative if <dd>The <em>delta_window_size</em> is 0 or negative and
NGHTTP2_FLAG_END_FLOW_CONTROL bit is not set in <em>flags</em>.</dd> <a class="reference internal" href="#NGHTTP2_FLAG_END_FLOW_CONTROL" title="NGHTTP2_FLAG_END_FLOW_CONTROL"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_FLOW_CONTROL</span></tt></a> bit is not set in
<em>flags</em>.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_STREAM_CLOSED" title="NGHTTP2_ERR_STREAM_CLOSED"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_STREAM_CLOSED</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_STREAM_CLOSED" title="NGHTTP2_ERR_STREAM_CLOSED"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_STREAM_CLOSED</span></tt></a></dt>
<dd>The stream is already closed or does not exist.</dd> <dd>The stream is already closed or does not exist.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt> <dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
......
...@@ -425,18 +425,6 @@ ...@@ -425,18 +425,6 @@
</dt> </dt>
<dt><a href="apiref.html#nghttp2_mem_chunk">nghttp2_mem_chunk (C type)</a>
</dt>
<dt><a href="apiref.html#nghttp2_mem_chunk.data">nghttp2_mem_chunk.data (C member)</a>
</dt>
<dt><a href="apiref.html#nghttp2_mem_chunk.length">nghttp2_mem_chunk.length (C member)</a>
</dt>
<dt><a href="apiref.html#NGHTTP2_NO_ERROR">NGHTTP2_NO_ERROR (C macro)</a> <dt><a href="apiref.html#NGHTTP2_NO_ERROR">NGHTTP2_NO_ERROR (C macro)</a>
</dt> </dt>
...@@ -460,8 +448,6 @@ ...@@ -460,8 +448,6 @@
<dt><a href="apiref.html#nghttp2_nv.valuelen">nghttp2_nv.valuelen (C member)</a> <dt><a href="apiref.html#nghttp2_nv.valuelen">nghttp2_nv.valuelen (C member)</a>
</dt> </dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="apiref.html#nghttp2_on_data_chunk_recv_callback">nghttp2_on_data_chunk_recv_callback (C type)</a> <dt><a href="apiref.html#nghttp2_on_data_chunk_recv_callback">nghttp2_on_data_chunk_recv_callback (C type)</a>
</dt> </dt>
...@@ -470,6 +456,8 @@ ...@@ -470,6 +456,8 @@
<dt><a href="apiref.html#nghttp2_on_data_recv_callback">nghttp2_on_data_recv_callback (C type)</a> <dt><a href="apiref.html#nghttp2_on_data_recv_callback">nghttp2_on_data_recv_callback (C type)</a>
</dt> </dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="apiref.html#nghttp2_on_data_send_callback">nghttp2_on_data_send_callback (C type)</a> <dt><a href="apiref.html#nghttp2_on_data_send_callback">nghttp2_on_data_send_callback (C type)</a>
</dt> </dt>
......
...@@ -78,6 +78,7 @@ version 2.0.</p> ...@@ -78,6 +78,7 @@ version 2.0.</p>
<h2>Resources<a class="headerlink" href="#resources" title="Permalink to this headline"></a></h2> <h2>Resources<a class="headerlink" href="#resources" title="Permalink to this headline"></a></h2>
<ul class="simple"> <ul class="simple">
<li><a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-http2-04">http://tools.ietf.org/html/draft-ietf-httpbis-http2-04</a></li> <li><a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-http2-04">http://tools.ietf.org/html/draft-ietf-httpbis-http2-04</a></li>
<li><a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-01">http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-01</a></li>
</ul> </ul>
</div> </div>
</div> </div>
......
No preview for this file type
...@@ -145,9 +145,8 @@ $ make</pre> ...@@ -145,9 +145,8 @@ $ make</pre>
<p>The src directory contains HTTP/2.0 client, server and proxy programs.</p> <p>The src directory contains HTTP/2.0 client, server and proxy programs.</p>
<div class="section" id="nghttp-client"> <div class="section" id="nghttp-client">
<h3>nghttp - client<a class="headerlink" href="#nghttp-client" title="Permalink to this headline"></a></h3> <h3>nghttp - client<a class="headerlink" href="#nghttp-client" title="Permalink to this headline"></a></h3>
<p><tt class="docutils literal"><span class="pre">nghttp</span></tt> is HTTP-default04/2.0 client. It can connect to the <p><tt class="docutils literal"><span class="pre">nghttp</span></tt> is a HTTP/2.0 client. It can connect to the HTTP/2.0 server
HTTP/2.0 server with prior knowledge, HTTP Upgrade and NPN TLS with prior knowledge, HTTP Upgrade and NPN TLS extension.</p>
extension.</p>
<p>By default, it uses SSL/TLS connection. Use <tt class="docutils literal"><span class="pre">--no-tls</span></tt> option to <p>By default, it uses SSL/TLS connection. Use <tt class="docutils literal"><span class="pre">--no-tls</span></tt> option to
disable it.</p> disable it.</p>
<p>It has verbose output mode for framing information. Here is sample <p>It has verbose output mode for framing information. Here is sample
......
Search.setIndex({objects:{"":{NGHTTP2_ERR_INVALID_STATE:[0,0,1,""],NGHTTP2_ERR_FRAME_TOO_LARGE:[0,0,1,""],NGHTTP2_ERR_HEADER_COMP:[0,0,1,""],nghttp2_settings_entry:[0,2,1,""],NGHTTP2_INTERNAL_ERROR:[0,0,1,""],NGHTTP2_PRI_LOWEST:[0,0,1,""],nghttp2_on_frame_recv_callback:[0,2,1,""],NGHTTP2_FLAG_PONG:[0,0,1,""],NGHTTP2_CLIENT_CONNECTION_HEADER_LEN:[0,0,1,""],nghttp2_goaway:[0,2,1,""],NGHTTP2_OPT_NO_AUTO_WINDOW_UPDATE:[0,0,1,""],nghttp2_submit_rst_stream:[0,3,1,""],NGHTTP2_ERR_INVALID_FRAME:[0,0,1,""],nghttp2_frame_type:[0,2,1,""],nghttp2_on_data_recv_callback:[0,2,1,""],nghttp2_select_next_protocol:[0,3,1,""],NGHTTP2_ERR_INVALID_HEADER_BLOCK:[0,0,1,""],nghttp2_session_callbacks:[0,2,1,""],NGHTTP2_ERR_PROTO:[0,0,1,""],NGHTTP2_FRAME_TOO_LARGE:[0,0,1,""],nghttp2_submit_window_update:[0,3,1,""],NGHTTP2_ERR_UNSUPPORTED_VERSION:[0,0,1,""],nghttp2_window_update:[0,2,1,""],NGHTTP2_DATA:[0,0,1,""],nghttp2_frame_hd:[0,2,1,""],NGHTTP2_ERR_INVALID_STREAM_STATE:[0,0,1,""],NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE:[0,0,1,""],NGHTTP2_STREAM_CLOSED:[0,0,1,""],NGHTTP2_SETTINGS_MAX:[0,0,1,""],nghttp2_headers_category:[0,2,1,""],nghttp2_error_code:[0,2,1,""],NGHTTP2_REFUSED_STREAM:[0,0,1,""],nghttp2_on_data_chunk_recv_callback:[0,2,1,""],NGHTTP2_ERR_START_STREAM_NOT_ALLOWED:[0,0,1,""],nghttp2_strerror:[0,3,1,""],nghttp2_gzip_inflate_del:[0,3,1,""],NGHTTP2_ERR_FATAL:[0,0,1,""],nghttp2_submit_goaway:[0,3,1,""],nghttp2_error:[0,2,1,""],NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE:[0,0,1,""],NGHTTP2_ERR_NOMEM:[0,0,1,""],NGHTTP2_NO_ERROR:[0,0,1,""],NGHTTP2_ERR_DEFERRED:[0,0,1,""],nghttp2_push_promise:[0,2,1,""],NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE:[0,0,1,""],nghttp2_session_get_outbound_queue_size:[0,3,1,""],nghttp2_rst_stream:[0,2,1,""],NGHTTP2_PROTO_VERSION_ID_LEN:[0,0,1,""],NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS:[0,0,1,""],nghttp2_data_source_read_callback:[0,2,1,""],NGHTTP2_ERR_WOULDBLOCK:[0,0,1,""],nghttp2_session_resume_data:[0,3,1,""],NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE:[0,0,1,""],NGHTTP2_PRI_DEFAULT:[0,0,1,""],nghttp2_session_server_new:[0,3,1,""],NGHTTP2_FLAG_END_PUSH_PROMISE:[0,0,1,""],NGHTTP2_ERR_INVALID_ARGUMENT:[0,0,1,""],nghttp2_submit_push_promise:[0,3,1,""],NGHTTP2_ERR_GOAWAY_ALREADY_SENT:[0,0,1,""],nghttp2_session_mem_recv:[0,3,1,""],nghttp2_flag:[0,2,1,""],NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS:[0,0,1,""],NGHTTP2_HCAT_REQUEST:[0,0,1,""],nghttp2_ping:[0,2,1,""],nghttp2_gzip:[0,2,1,""],NGHTTP2_FLAG_END_STREAM:[0,0,1,""],NGHTTP2_ERR_EOF:[0,0,1,""],NGHTTP2_HCAT_HEADERS:[0,0,1,""],NGHTTP2_SETTINGS:[0,0,1,""],nghttp2_frame:[0,2,1,""],NGHTTP2_ERR_DEFERRED_DATA_EXIST:[0,0,1,""],NGHTTP2_CANCEL:[0,0,1,""],nghttp2_send_callback:[0,2,1,""],NGHTTP2_ERR_INVALID_STREAM_ID:[0,0,1,""],nghttp2_on_frame_send_callback:[0,2,1,""],nghttp2_session_client_new:[0,3,1,""],NGHTTP2_VERSION:[0,0,1,""],nghttp2_session:[0,2,1,""],NGHTTP2_COMPRESSION_ERROR:[0,0,1,""],NGHTTP2_HCAT_PUSH_RESPONSE:[0,0,1,""],nghttp2_submit_headers:[0,3,1,""],nghttp2_recv_callback:[0,2,1,""],nghttp2_session_get_stream_user_data:[0,3,1,""],NGHTTP2_FLAG_PRIORITY:[0,0,1,""],nghttp2_on_data_send_callback:[0,2,1,""],nghttp2_nv:[0,2,1,""],NGHTTP2_FLAG_END_FLOW_CONTROL:[0,0,1,""],nghttp2_on_unknown_frame_recv_callback:[0,2,1,""],NGHTTP2_ERR_STREAM_CLOSED:[0,0,1,""],nghttp2_opt:[0,2,1,""],NGHTTP2_ERR_CALLBACK_FAILURE:[0,0,1,""],nghttp2_on_invalid_frame_recv_callback:[0,2,1,""],NGHTTP2_FLOW_CONTROL_ERROR:[0,0,1,""],nghttp2_session_set_option:[0,3,1,""],NGHTTP2_ERR_STREAM_CLOSING:[0,0,1,""],nghttp2_session_fail_session:[0,3,1,""],NGHTTP2_PROTO_VERSION_ID:[0,0,1,""],nghttp2_settings_id:[0,2,1,""],NGHTTP2_HEADERS:[0,0,1,""],nghttp2_session_send:[0,3,1,""],NGHTTP2_PROTOCOL_ERROR:[0,0,1,""],nghttp2_gzip_inflate:[0,3,1,""],nghttp2_session_upgrade:[0,3,1,""],nghttp2_session_del:[0,3,1,""],nghttp2_settings:[0,2,1,""],nghttp2_on_frame_not_send_callback:[0,2,1,""],nghttp2_submit_data:[0,3,1,""],nghttp2_submit_response:[0,3,1,""],NGHTTP2_CLIENT_CONNECTION_HEADER:[0,0,1,""],NGHTTP2_FLAG_NONE:[0,0,1,""],NGHTTP2_FLAG_END_HEADERS:[0,0,1,""],nghttp2_on_frame_recv_parse_error_callback:[0,2,1,""],nghttp2_submit_settings:[0,3,1,""],NGHTTP2_HCAT_RESPONSE:[0,0,1,""],nghttp2_mem_chunk:[0,2,1,""],nghttp2_priority:[0,2,1,""],nghttp2_session_want_read:[0,3,1,""],NGHTTP2_RST_STREAM:[0,0,1,""],nghttp2_on_stream_close_callback:[0,2,1,""],NGHTTP2_PUSH_PROMISE:[0,0,1,""],nghttp2_data_provider:[0,2,1,""],nghttp2_on_request_recv_callback:[0,2,1,""],nghttp2_session_recv:[0,3,1,""],NGHTTP2_INITIAL_WINDOW_SIZE:[0,0,1,""],NGHTTP2_WINDOW_UPDATE:[0,0,1,""],NGHTTP2_SETTINGS_FLOW_CONTROL_OPTIONS:[0,0,1,""],nghttp2_session_want_write:[0,3,1,""],nghttp2_submit_priority:[0,3,1,""],nghttp2_headers:[0,2,1,""],nghttp2_before_frame_send_callback:[0,2,1,""],NGHTTP2_PING:[0,0,1,""],NGHTTP2_GOAWAY:[0,0,1,""],NGHTTP2_ERR_GZIP:[0,0,1,""],nghttp2_submit_ping:[0,3,1,""],nghttp2_data_source:[0,2,1,""],NGHTTP2_ERR_STREAM_SHUT_WR:[0,0,1,""],NGHTTP2_PRIORITY:[0,0,1,""],nghttp2_submit_request:[0,3,1,""],nghttp2_pack_settings_payload:[0,3,1,""],nghttp2_gzip_inflate_new:[0,3,1,""]},nghttp2_session_callbacks:{on_invalid_frame_recv_callback:[0,1,1,""],before_frame_send_callback:[0,1,1,""],on_stream_close_callback:[0,1,1,""],on_data_chunk_recv_callback:[0,1,1,""],on_unknown_frame_recv_callback:[0,1,1,""],send_callback:[0,1,1,""],nghttp2_on_frame_recv_parse_error_callback:[0,1,1,""],on_frame_send_callback:[0,1,1,""],on_frame_recv_callback:[0,1,1,""],on_data_send_callback:[0,1,1,""],on_frame_not_send_callback:[0,1,1,""],on_request_recv_callback:[0,1,1,""],on_data_recv_callback:[0,1,1,""],recv_callback:[0,1,1,""]},nghttp2_frame:{push_promise:[0,1,1,""],settings:[0,1,1,""],ping:[0,1,1,""],rst_stream:[0,1,1,""],priority:[0,1,1,""],headers:[0,1,1,""],goaway:[0,1,1,""],window_update:[0,1,1,""],hd:[0,1,1,""]},nghttp2_mem_chunk:{length:[0,1,1,""],data:[0,1,1,""]},nghttp2_data_provider:{source:[0,1,1,""],read_callback:[0,1,1,""]},nghttp2_priority:{pri:[0,1,1,""],hd:[0,1,1,""]},nghttp2_settings_entry:{settings_id:[0,1,1,""],value:[0,1,1,""]},nghttp2_window_update:{hd:[0,1,1,""],window_size_increment:[0,1,1,""]},nghttp2_frame_hd:{stream_id:[0,1,1,""],length:[0,1,1,""],type:[0,1,1,""],flags:[0,1,1,""]},nghttp2_ping:{hd:[0,1,1,""]},nghttp2_rst_stream:{error_code:[0,1,1,""],hd:[0,1,1,""]},nghttp2_nv:{valuelen:[0,1,1,""],namelen:[0,1,1,""],name:[0,1,1,""],value:[0,1,1,""]},nghttp2_headers:{nvlen:[0,1,1,""],pri:[0,1,1,""],hd:[0,1,1,""],nva:[0,1,1,""]},nghttp2_goaway:{opaque_data:[0,1,1,""],error_code:[0,1,1,""],opaque_data_len:[0,1,1,""],hd:[0,1,1,""],last_stream_id:[0,1,1,""]},nghttp2_data_source:{fd:[0,1,1,""],ptr:[0,1,1,""]},nghttp2_push_promise:{promised_stream_id:[0,1,1,""],nvlen:[0,1,1,""],nva:[0,1,1,""],hd:[0,1,1,""]},nghttp2_settings:{niv:[0,1,1,""],hd:[0,1,1,""],iv:[0,1,1,""]}},terms:{all:0,code:[0,1],on_unknown_frame_recv_callback:0,illustr:1,nghttp2_err_start_stream_not_allow:0,my_obj:0,lack:1,nghttp2_frame_hd:0,nghttp2_cancel:0,prefix:0,overlap:0,follow:[0,1],ptr:0,categori:0,"const":0,uint8_t:0,unpack:0,indirectli:0,specif:0,send:[0,1],program:[2,1],under:[0,1],sens:0,fatal:0,spec:0,sent:0,sourc:0,string:0,nul:0,"void":0,nghttp2_flag_end_push_promis:0,nghttp2_submit_p:0,failur:0,veri:0,retriev:0,tri:0,nghttp2_on_frame_recv_callback:0,foo:0,level:0,did:0,list:0,nghttp2_headers_categori:0,settings_id:0,concurr:0,optlen:0,refer:[0,2],prepar:0,pleas:1,prevent:0,on_stream_close_callback:0,"0x1":0,direct:1,"0x4":0,zero:0,pass:0,download:1,further:0,port:1,settings_flow_control_opt:0,neg:0,invok:0,current:[0,1],version:[0,1,2],base64url:0,"new":[0,1],net:1,on_invalid_ctrl_recv_callback:0,"public":0,nghttp2_session_resume_data:0,on_ctrl_recv_callback:0,abov:[0,1],gener:[0,1],onli:[0,1],here:[0,1],closur:0,met:0,nghttp2_rst_stream:0,ubuntu:1,nghttp2_opt_no_auto_window_upd:0,depend:0,becom:0,modifi:1,sinc:0,valu:0,nextprotoneg:0,incom:[0,1],remark:[0,2],aug:1,anymor:0,host:[0,1],autoreconf:1,queue:0,prior:1,behav:0,nghttp2_submit_prior:0,aka:[0,1],nghttp2_err_gzip:0,nghttp2_frame:0,nghttp2_err_goaway_already_s:0,appli:0,transit:0,prefer:0,put:0,api:[0,2],org:[0,1,2],instal:1,should:0,"byte":[0,1],select:[0,1],from:[0,1,2],describ:0,would:0,memori:0,upgrad:[0,1],next:[0,1],call:[0,1],asset:1,nghttp2_nv:0,nghttp2_on_invalid_frame_recv_callback:0,nghttp2_version:0,type:[0,1,2],until:0,reorder:0,more:0,goawai:[0,1],nghttp2_set:0,nghttp2_pri_default:0,rst_stream:0,inflater_ptr:0,user_data:0,flag:[0,1],accept:1,nghttp2_submit_window_upd:0,known:0,hold:0,nghttp2_err_wouldblock:0,must:0,endpoint:0,word:0,tunnel:1,nghttp2_settings_id:0,work:1,stream_user_data:0,dev:1,nghttp2_session_fail_sess:0,remain:0,can:[0,1],http2:[0,1,2],could:0,control:0,defer:0,stream:[0,1],give:0,process:0,pad:1,indic:0,abort:0,want:0,onlin:1,nghttp2_header:0,pong:0,nghttp2_err_invalid_stream_st:0,unsign:0,occur:0,nghttp2_settings_flow_control_opt:0,alwai:0,multipl:0,secur:1,nghttp2_session_want_read:0,charset:1,ping:0,nghttp2_flag_non:0,write:1,nghttp2_err_fat:0,pair:0,sever:[0,1],serveraddr:1,reject:0,sec9:0,instead:[0,1],simpl:0,updat:0,nghttp2_on_request_recv_callback:0,npn:[0,1],resourc:[0,2],default04:1,after:0,spdylai:1,nghttp2_session_get_pri_lowest:0,badli:0,mai:0,nghttp2_compression_error:0,alloc:0,autotool:1,nghttp2_err_frame_too_larg:0,opaqu:0,nvlen:0,element:0,issu:0,nghttp2_flag_prior:0,"switch":1,ssize_t:0,anoth:0,order:0,talk:1,includ:[0,2],frontend:1,nghttp2_err_stream_shut_wr:0,hypertext:[2,1],move:0,becaus:0,libcunit1:1,through:1,untouch:0,size_t:0,nghttp2_err_unsupported_vers:0,still:[0,1],mainli:0,paramet:0,typedef:[0,2],fix:1,precondit:0,max_outlen:0,nghttp2_hcat_push_respons:0,window:0,pend:0,nghttp2_err_eof:0,hidden:0,therefor:0,nghttp2_session_send:0,inlen:0,valuelen:0,recept:0,them:0,"return":[0,1],thei:[0,1],nghttp2_push_promis:0,nghttp2_goawai:0,initi:0,"break":0,nghttp2_initial_max_concurrent_stream:0,nghttp2_submit_head:0,promis:0,half:0,nov:1,choic:0,document:[2,1],name:[0,1],nghttp2_err_callback_failur:0,nghttp2_send_callback:0,nghttp2_frame_typ:0,no_error:1,drop:0,achiev:0,nghttp2_flow_control_error:0,mode:1,each:0,debug:0,fulli:0,side:0,trailer:0,mean:0,protocol_error:0,chunk:0,continu:1,nghttp2_err_temporal_callback_failur:0,"static":[0,1],connect:[0,1],http:[0,1,2],beyond:0,todo:0,out:0,space:0,goe:1,req:0,payload:0,end_flow_control:[0,1],etag:1,suitabl:0,on_ctrl_not_send_callback:0,nghttp2_client_connection_header_len:0,got:0,on_frame_not_send_callback:0,recv_callback:0,end_stream:[0,1],proxi:[2,1],state:0,differ:0,free:0,reason:0,base:1,inflat:0,usual:0,releas:0,nghttp2_session_mem_recv:0,nghttp2_flag:0,recv:1,spdy:[0,1],thread:1,befor:0,syn_repli:0,omit:0,openssl:1,keep:0,length:[0,1],place:0,outsid:[0,1],enough:0,assign:0,optval:0,first:[0,1],oper:[0,1],rang:[0,1],directli:0,arrai:0,number:0,yourself:1,nghttp2_protocol_error:0,alreadi:0,messag:0,nghttp2_on_frame_send_callback:0,opaque_data:[0,1],on_frame_recv_callback:0,open:[0,1],primari:0,size:0,prioriti:0,given:0,"long":0,script:1,unknown:0,data_prd:0,nghttp2_session_get_stream_user_data:0,least:[0,1],on_unknown_ctrl_recv_callback:0,necessarili:0,draft:[0,1,2],too:0,similarli:0,nghttp2_frame_too_larg:0,internal_error:0,conveni:0,"final":0,store:0,on_ctrl_send_callback:0,ssl_ctx:0,option:[0,1],tool:[2,1],copi:0,nghttp2_proto_version_id_len:0,specifi:[0,1],nghttp2_client_connection_head:0,github:1,pars:0,termin:[0,1],kind:0,scheme:[0,1],provid:0,remov:0,see:[0,1],structur:0,charact:0,project:1,defat:1,entri:0,nghttp2_session_del:0,read_callback:0,nghttp2_error:0,"function":[0,1,2],window_size_incr:[0,1],respons:[0,1],pri:0,argument:[0,1],packag:1,increment:0,reserv:0,need:[0,1],exclud:0,nghttp2_on_frame_recv_parse_error_callback:0,sat:1,bitwis:0,outbound:0,unexpect:0,callback:0,"0x04":1,"0x00":1,payloadlen:0,note:[0,1],nghttp2_refused_stream:0,exampl:[0,1],take:0,which:[0,1],noth:0,singl:[0,1],opaque_data_len:0,sure:1,unless:0,allow:0,"enum":[0,2],though:1,aaaabaaaagqaaaahaad__w:1,compress:1,settings_max_concurrent_stream:0,nghttp2_hcat_request:0,most:0,nghttp2_flag_pong:0,thi:[0,1,2],nghttp2_before_frame_send_callback:0,nghttp2_error_cod:0,nghttp2_err_stream_id_not_avail:0,don:0,http2_select:0,url:1,doc:1,later:0,request:[0,1],uri:[0,1],doe:0,nghttp2_pack_settings_payload:0,nghttp2_gzip_inflate_new:0,fact:0,on_invalid_frame_recv_callback:0,text:1,hostnam:1,verbos:1,session:0,pkg:1,protocol:[0,1,2],data:[0,1],absolut:0,nghttp2_submit_push_promis:0,nghttp2_submit_rst_stream:0,refused_stream:0,configur:[0,1],apach:1,figur:1,before_ctrl_send_callback:0,nghttp2_err_invalid_stream_id:0,experiment:[2,1],queu:0,local:0,over:1,nghttp2_err_proto:0,syn_stream:0,variou:0,get:[0,1],window_upd:[0,1],outlen:0,end_head:[0,1],ssl:[0,1],settings_initial_window_s:0,cannot:0,nghttp2_data:0,optnam:0,increas:0,utf:1,tatsuhiro:1,requir:[0,1,2],before_frame_send_callback:0,nghttp2_no_error:0,nghttp2_submit_respons:0,bar:0,enabl:1,ietf:[2,1],possibl:0,push_promis:0,method:[0,1],nghttp2_err_header_comp:0,stuff:0,nghttp2_strerror:0,contain:[0,1],nghttp2_window_upd:0,nghttp2_gzip_inflate_del:0,user:[0,1],certif:1,set:[0,1],frame:[0,1],knowledg:1,nghttp2_submit_goawai:0,temporarili:0,result:0,arg:0,fail:0,close:[0,1],analog:0,statu:[0,1,2],correctli:0,vari:[0,1],someth:0,below:0,written:0,bridg:1,nghttp2_flag_end_flow_control:0,assoc_stream_id:0,nghttp2_on_data_chunk_recv_callback:0,nghttp2_initial_connection_window_s:0,accord:0,kei:0,flow:0,extens:1,entir:0,len:0,last_stream_id:[0,1],nghttp2_ping:0,tue:1,addit:0,bodi:0,cf405c:1,last:[0,1],nghttp2_proto_version_id:0,region:0,nghttp2_session_want_writ:0,against:0,tempor:0,etc:[0,1],agent:1,compression_error:0,on_request_recv_callback:0,browser:1,whole:0,nghttp2_data_provid:0,point:0,color:1,int32_t:0,address:1,rfc2616:0,header:[0,1],nghttp2_prioriti:0,non:[0,1],shutdown:0,path:[0,1],cancel:0,nghttp2_on_frame_not_send_callback:0,nghttp2_session:0,assum:0,backend:1,nghttp2_recv_callback:0,union:[0,2],due:0,been:0,nghttp2_on_data_send_callback:0,trigger:0,interpret:0,interest:1,nghttp2_hcat_head:0,date:1,nghttp2_on_unknown_frame_recv_callback:0,nghttp2_err_nomem:0,nghttp2_session_server_new:0,both:0,nghttp2_opt:0,lib_error_cod:0,ani:[0,1],repres:0,those:0,"case":0,multi:1,subsequ:0,nghttp2_settings_initial_window_s:0,zlib:1,sourceforg:1,defin:0,"while":0,behavior:0,error:0,nghttp2_flag_end_stream:0,invoc:0,listen:1,on_data_chunk_recv_callback:0,nghttp2_session_callback:0,helper:0,libxml2:1,squid:1,select_next_proto_cb:0,promised_stream_id:0,itself:0,conf:1,crash:0,flow_control_error:0,ascii:0,pointer:0,frame_too_larg:0,"null":0,develop:[2,1],perform:[0,1],make:[0,1],belong:0,same:0,member:0,pac:1,headlen:0,nghttp2_on_stream_close_callback:0,start:[0,1],complet:0,nghttp2_session_recv:0,context:0,mytyp:0,effect:0,on_ctrl_recv_parse_error_callback:0,nghttp2_err_deferred_data_exist:0,remot:[0,1],moment:1,zlib1g:1,ownership:0,mani:0,build:[2,1],postpon:0,nghttp2_submit_syn_stream:0,niv:[0,1],implement:[0,1,2],"45adabdf282c0":1,lower:0,com:0,thu:0,nghttp:1,without:[0,1],client:[0,1,2],uint32_t:0,resouc:1,error_cod:[0,1],nghttp2_data_sourc:0,left:0,end_push_promis:0,nghttp2_err_def:0,nghttp2_submit_set:0,identifi:0,just:[0,1],nghttp2_on_data_recv_callback:0,send_callback:0,"0x01":1,nghttp2_gzip_infl:0,via:1,multiplex:1,config:1,on_frame_send_callback:0,previous:0,web:1,"0x8":0,struct:[0,2],easi:1,also:0,priorit:0,except:0,identif:0,haz:0,other:0,input:0,on_data_send_callback:0,nghttp2_select_next_protocol:0,gmt:1,applic:[0,1],nvu:1,format:0,read:0,caller:0,period:0,outlen_ptr:0,nghttp2_session_set_opt:0,know:0,nva:0,step:0,bit:0,associ:0,delta_window_s:0,like:[0,1],success:1,arbitrari:0,uint16_t:0,signal:0,manual:1,html:[0,1,2],nghttp2_pri_lowest:0,server:[0,1,2],nghttp2_flag_end_head:0,tlen:0,have:0,output:1,stream_clos:0,www:0,revers:1,settings_payload:0,deal:0,hostport:0,nghttp2_session_client_new:0,some:0,back:0,sampl:1,integ:0,librari:[0,1,2],transmiss:0,nonzero:0,lead:0,nghttp2_data_source_read_callback:0,octet:0,per:0,outgo:0,larg:0,unit:1,condit:0,nghttp2_session_upgrad:0,duplic:0,localhost:1,either:0,machin:1,object:0,run:1,post:0,reach:0,inspect:0,chart:0,settings_payloadlen:0,found:1,peer:0,major:0,nghttp2_session_get_outbound_queue_s:0,src:1,about:0,actual:0,socket:1,commun:1,inlen_ptr:0,nghttp2_gzip:0,chrome:1,idl:0,nghttp2_submit_data:0,nghttp2_settings_max_concurrent_stream:0,ssl_tlsext_err_ok:0,disabl:1,block:[0,1],on_data_recv_callback:0,nghttp2_settings_entri:0,nghttp2_err_invalid_fram:0,deploi:1,encod:[0,1],automat:0,ssl_ctx_set_next_proto_select_cb:0,automak:1,stream_id:[0,1],empti:0,chang:0,inclus:0,git:[0,1,2],nghttp2_hcat_respons:0,wai:[0,1],transfer:[0,1,2],support:[0,1],submit:0,avail:[0,1],intention:0,nghttp2:[0,1,2],nghttp2_err_stream_clos:0,low:0,ipv6:1,forward:1,findproxyforurl:1,strictli:0,ipv4:1,treat:0,lowest:0,head:0,session_ptr:0,gzip:[0,1],form:0,offer:1,jul:1,nghttp2_err_invalid_st:0,content:[2,1],taken:0,link:1,highest:0,buf:0,bug:1,suppli:0,succe:0,nghttp2_internal_error:0,nghttp2_stream_clos:0,"default":[0,1],nghttp2_settings_max:0,access:1,googlecod:0,maximum:0,tell:0,asynchron:0,deafult:1,nghttpx:1,nghttpd:1,inform:1,autoconf:1,libev:1,expect:1,nghttp2_initial_window_s:0,featur:1,shrpx:1,creat:[0,1],"int":0,httpbi:[2,1],descriptor:0,"char":0,incomplet:1,exist:[0,1],file:[0,1],nghttp2_err_invalid_header_block:0,macro:[0,2],nghttp2_mem_chunk:0,googl:1,when:0,detail:0,invalid:0,field:0,valid:[0,1],role:0,nghttp2_err_invalid_argu:0,test:1,you:[0,1],libssl:1,sequenc:0,decod:0,technot:0,libtool:1,alpn:[0,1],debian:1,serial:0,receiv:0,cunit:1,eof:0,algorithm:0,directori:1,reliabl:0,mask:0,nghttp2_settings_flag:0,nghttp2_submit_request:0,namelen:0,portion:0,ignor:0,time:[0,1],push:0,deflat:[0,1],avoid:1},objtypes:{"0":"c:macro","1":"c:member","2":"c:type","3":"c:function"},titles:["API Reference","nghttp2 - HTTP/2.0 C Library","nghttp2 - HTTP/2.0 C Library"],objnames:{"0":["c","macro","C macro"],"1":["c","member","C member"],"2":["c","type","C type"],"3":["c","function","C function"]},filenames:["apiref","package_README","index"]}) Search.setIndex({objects:{"":{NGHTTP2_ERR_INVALID_STATE:[0,0,1,""],NGHTTP2_ERR_FRAME_TOO_LARGE:[0,0,1,""],NGHTTP2_ERR_HEADER_COMP:[0,0,1,""],nghttp2_settings_entry:[0,2,1,""],NGHTTP2_INTERNAL_ERROR:[0,0,1,""],NGHTTP2_PRI_LOWEST:[0,0,1,""],nghttp2_on_frame_recv_callback:[0,2,1,""],NGHTTP2_FLAG_PONG:[0,0,1,""],NGHTTP2_CLIENT_CONNECTION_HEADER_LEN:[0,0,1,""],nghttp2_goaway:[0,2,1,""],NGHTTP2_OPT_NO_AUTO_WINDOW_UPDATE:[0,0,1,""],nghttp2_submit_rst_stream:[0,3,1,""],NGHTTP2_ERR_INVALID_FRAME:[0,0,1,""],nghttp2_frame_type:[0,2,1,""],nghttp2_on_data_recv_callback:[0,2,1,""],nghttp2_select_next_protocol:[0,3,1,""],NGHTTP2_ERR_INVALID_HEADER_BLOCK:[0,0,1,""],nghttp2_session_callbacks:[0,2,1,""],NGHTTP2_ERR_PROTO:[0,0,1,""],NGHTTP2_FRAME_TOO_LARGE:[0,0,1,""],nghttp2_submit_window_update:[0,3,1,""],NGHTTP2_ERR_UNSUPPORTED_VERSION:[0,0,1,""],nghttp2_window_update:[0,2,1,""],NGHTTP2_DATA:[0,0,1,""],nghttp2_frame_hd:[0,2,1,""],NGHTTP2_ERR_INVALID_STREAM_STATE:[0,0,1,""],NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE:[0,0,1,""],NGHTTP2_STREAM_CLOSED:[0,0,1,""],NGHTTP2_SETTINGS_MAX:[0,0,1,""],nghttp2_headers_category:[0,2,1,""],nghttp2_error_code:[0,2,1,""],NGHTTP2_REFUSED_STREAM:[0,0,1,""],nghttp2_on_data_chunk_recv_callback:[0,2,1,""],NGHTTP2_ERR_START_STREAM_NOT_ALLOWED:[0,0,1,""],nghttp2_strerror:[0,3,1,""],nghttp2_gzip_inflate_del:[0,3,1,""],NGHTTP2_ERR_FATAL:[0,0,1,""],nghttp2_submit_goaway:[0,3,1,""],nghttp2_error:[0,2,1,""],NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE:[0,0,1,""],NGHTTP2_ERR_NOMEM:[0,0,1,""],NGHTTP2_NO_ERROR:[0,0,1,""],NGHTTP2_ERR_DEFERRED:[0,0,1,""],nghttp2_push_promise:[0,2,1,""],NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE:[0,0,1,""],nghttp2_session_get_outbound_queue_size:[0,3,1,""],nghttp2_rst_stream:[0,2,1,""],NGHTTP2_PROTO_VERSION_ID_LEN:[0,0,1,""],NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS:[0,0,1,""],nghttp2_data_source_read_callback:[0,2,1,""],NGHTTP2_ERR_WOULDBLOCK:[0,0,1,""],nghttp2_session_resume_data:[0,3,1,""],NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE:[0,0,1,""],NGHTTP2_PRI_DEFAULT:[0,0,1,""],nghttp2_session_server_new:[0,3,1,""],NGHTTP2_FLAG_END_PUSH_PROMISE:[0,0,1,""],NGHTTP2_ERR_INVALID_ARGUMENT:[0,0,1,""],nghttp2_submit_push_promise:[0,3,1,""],NGHTTP2_ERR_GOAWAY_ALREADY_SENT:[0,0,1,""],nghttp2_session_mem_recv:[0,3,1,""],nghttp2_flag:[0,2,1,""],NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS:[0,0,1,""],NGHTTP2_HCAT_REQUEST:[0,0,1,""],nghttp2_ping:[0,2,1,""],nghttp2_gzip:[0,2,1,""],NGHTTP2_FLAG_END_STREAM:[0,0,1,""],NGHTTP2_ERR_EOF:[0,0,1,""],NGHTTP2_HCAT_HEADERS:[0,0,1,""],NGHTTP2_SETTINGS:[0,0,1,""],nghttp2_frame:[0,2,1,""],NGHTTP2_ERR_DEFERRED_DATA_EXIST:[0,0,1,""],NGHTTP2_CANCEL:[0,0,1,""],nghttp2_send_callback:[0,2,1,""],NGHTTP2_ERR_INVALID_STREAM_ID:[0,0,1,""],nghttp2_on_frame_send_callback:[0,2,1,""],nghttp2_session_client_new:[0,3,1,""],NGHTTP2_VERSION:[0,0,1,""],nghttp2_session:[0,2,1,""],NGHTTP2_COMPRESSION_ERROR:[0,0,1,""],NGHTTP2_HCAT_PUSH_RESPONSE:[0,0,1,""],nghttp2_submit_headers:[0,3,1,""],nghttp2_recv_callback:[0,2,1,""],nghttp2_session_get_stream_user_data:[0,3,1,""],NGHTTP2_FLAG_PRIORITY:[0,0,1,""],nghttp2_on_data_send_callback:[0,2,1,""],nghttp2_nv:[0,2,1,""],NGHTTP2_FLAG_END_FLOW_CONTROL:[0,0,1,""],nghttp2_on_unknown_frame_recv_callback:[0,2,1,""],NGHTTP2_ERR_STREAM_CLOSED:[0,0,1,""],nghttp2_opt:[0,2,1,""],NGHTTP2_ERR_CALLBACK_FAILURE:[0,0,1,""],nghttp2_on_invalid_frame_recv_callback:[0,2,1,""],NGHTTP2_FLOW_CONTROL_ERROR:[0,0,1,""],nghttp2_session_set_option:[0,3,1,""],NGHTTP2_ERR_STREAM_CLOSING:[0,0,1,""],nghttp2_session_fail_session:[0,3,1,""],NGHTTP2_PROTO_VERSION_ID:[0,0,1,""],nghttp2_settings_id:[0,2,1,""],NGHTTP2_HEADERS:[0,0,1,""],nghttp2_session_send:[0,3,1,""],NGHTTP2_PROTOCOL_ERROR:[0,0,1,""],nghttp2_gzip_inflate:[0,3,1,""],nghttp2_session_upgrade:[0,3,1,""],nghttp2_session_del:[0,3,1,""],nghttp2_settings:[0,2,1,""],nghttp2_on_frame_not_send_callback:[0,2,1,""],nghttp2_submit_data:[0,3,1,""],nghttp2_submit_response:[0,3,1,""],NGHTTP2_CLIENT_CONNECTION_HEADER:[0,0,1,""],NGHTTP2_FLAG_NONE:[0,0,1,""],NGHTTP2_FLAG_END_HEADERS:[0,0,1,""],nghttp2_on_frame_recv_parse_error_callback:[0,2,1,""],nghttp2_submit_settings:[0,3,1,""],NGHTTP2_HCAT_RESPONSE:[0,0,1,""],NGHTTP2_PING:[0,0,1,""],nghttp2_priority:[0,2,1,""],nghttp2_session_want_read:[0,3,1,""],NGHTTP2_RST_STREAM:[0,0,1,""],nghttp2_on_stream_close_callback:[0,2,1,""],NGHTTP2_PUSH_PROMISE:[0,0,1,""],nghttp2_data_provider:[0,2,1,""],nghttp2_on_request_recv_callback:[0,2,1,""],nghttp2_session_recv:[0,3,1,""],NGHTTP2_INITIAL_WINDOW_SIZE:[0,0,1,""],NGHTTP2_WINDOW_UPDATE:[0,0,1,""],NGHTTP2_SETTINGS_FLOW_CONTROL_OPTIONS:[0,0,1,""],nghttp2_session_want_write:[0,3,1,""],nghttp2_submit_priority:[0,3,1,""],nghttp2_headers:[0,2,1,""],nghttp2_before_frame_send_callback:[0,2,1,""],NGHTTP2_GOAWAY:[0,0,1,""],NGHTTP2_ERR_GZIP:[0,0,1,""],nghttp2_submit_ping:[0,3,1,""],nghttp2_data_source:[0,2,1,""],NGHTTP2_ERR_STREAM_SHUT_WR:[0,0,1,""],NGHTTP2_PRIORITY:[0,0,1,""],nghttp2_submit_request:[0,3,1,""],nghttp2_pack_settings_payload:[0,3,1,""],nghttp2_gzip_inflate_new:[0,3,1,""]},nghttp2_session_callbacks:{before_frame_send_callback:[0,1,1,""],on_invalid_frame_recv_callback:[0,1,1,""],on_stream_close_callback:[0,1,1,""],on_data_chunk_recv_callback:[0,1,1,""],on_unknown_frame_recv_callback:[0,1,1,""],send_callback:[0,1,1,""],nghttp2_on_frame_recv_parse_error_callback:[0,1,1,""],on_frame_send_callback:[0,1,1,""],on_frame_recv_callback:[0,1,1,""],on_data_send_callback:[0,1,1,""],on_frame_not_send_callback:[0,1,1,""],on_request_recv_callback:[0,1,1,""],on_data_recv_callback:[0,1,1,""],recv_callback:[0,1,1,""]},nghttp2_frame:{push_promise:[0,1,1,""],settings:[0,1,1,""],ping:[0,1,1,""],rst_stream:[0,1,1,""],priority:[0,1,1,""],headers:[0,1,1,""],goaway:[0,1,1,""],window_update:[0,1,1,""],hd:[0,1,1,""]},nghttp2_ping:{hd:[0,1,1,""]},nghttp2_data_provider:{source:[0,1,1,""],read_callback:[0,1,1,""]},nghttp2_priority:{pri:[0,1,1,""],hd:[0,1,1,""]},nghttp2_settings_entry:{settings_id:[0,1,1,""],value:[0,1,1,""]},nghttp2_window_update:{hd:[0,1,1,""],window_size_increment:[0,1,1,""]},nghttp2_frame_hd:{stream_id:[0,1,1,""],length:[0,1,1,""],type:[0,1,1,""],flags:[0,1,1,""]},nghttp2_rst_stream:{error_code:[0,1,1,""],hd:[0,1,1,""]},nghttp2_nv:{valuelen:[0,1,1,""],namelen:[0,1,1,""],name:[0,1,1,""],value:[0,1,1,""]},nghttp2_headers:{nvlen:[0,1,1,""],pri:[0,1,1,""],hd:[0,1,1,""],nva:[0,1,1,""]},nghttp2_goaway:{opaque_data:[0,1,1,""],error_code:[0,1,1,""],opaque_data_len:[0,1,1,""],hd:[0,1,1,""],last_stream_id:[0,1,1,""]},nghttp2_data_source:{fd:[0,1,1,""],ptr:[0,1,1,""]},nghttp2_push_promise:{promised_stream_id:[0,1,1,""],nvlen:[0,1,1,""],nva:[0,1,1,""],hd:[0,1,1,""]},nghttp2_settings:{niv:[0,1,1,""],hd:[0,1,1,""],iv:[0,1,1,""]}},terms:{all:0,code:[0,1],on_unknown_frame_recv_callback:0,illustr:1,nghttp2_err_start_stream_not_allow:0,my_obj:0,lack:[0,1],nghttp2_frame_hd:0,nghttp2_cancel:0,prefix:0,overlap:0,follow:[0,1],ptr:0,categori:0,"const":0,uint8_t:0,unpack:0,specif:0,send:[0,1],program:[2,1],under:[0,1],sens:0,fatal:0,spec:0,sent:0,sourc:0,string:0,nul:0,"void":0,nghttp2_flag_end_push_promis:0,nghttp2_submit_p:0,failur:0,veri:0,retriev:0,tri:0,nghttp2_on_frame_recv_callback:0,foo:0,level:0,did:0,list:0,nghttp2_headers_categori:0,settings_id:0,concurr:0,optlen:0,refer:[0,2],prepar:0,pleas:1,prevent:0,on_stream_close_callback:0,"0x1":0,direct:1,"0x4":0,zero:0,pass:0,download:1,further:0,port:1,settings_flow_control_opt:0,neg:0,invok:0,current:[0,1],version:[0,1,2],base64url:0,"new":[0,1],net:1,on_invalid_ctrl_recv_callback:0,"public":0,nghttp2_session_resume_data:0,on_ctrl_recv_callback:0,abov:[0,1],gener:[0,1],onli:[0,1],here:[0,1],closur:0,met:0,nghttp2_rst_stream:0,ubuntu:1,nghttp2_opt_no_auto_window_upd:0,depend:0,becom:0,modifi:1,sinc:0,valu:0,nextprotoneg:0,incom:[0,1],remark:[0,2],aug:1,host:[0,1],autoreconf:1,queue:0,prior:1,behav:0,nghttp2_submit_prior:0,aka:[0,1],nghttp2_err_gzip:0,nghttp2_frame:0,nghttp2_err_goaway_already_s:0,regardless:0,appli:0,transit:0,prefer:0,put:0,api:[0,2],org:[0,1,2],instal:1,should:0,"byte":[0,1],select:[0,1],from:[0,1,2],describ:0,would:0,memori:0,upgrad:[0,1],next:[0,1],call:[0,1],asset:1,nghttp2_nv:0,nghttp2_on_invalid_frame_recv_callback:0,nghttp2_version:0,type:[0,1,2],until:0,reorder:0,more:0,goawai:[0,1],nghttp2_set:0,nghttp2_pri_default:0,rst_stream:0,inflater_ptr:0,user_data:0,flag:[0,1],accept:1,nghttp2_submit_window_upd:0,known:0,hold:0,nghttp2_err_wouldblock:0,must:0,endpoint:0,word:0,tunnel:1,nghttp2_settings_id:0,work:1,stream_user_data:0,dev:1,nghttp2_session_fail_sess:0,remain:0,can:[0,1],http2:[0,1,2],syn_repli:0,control:0,defer:0,stream:[0,1],give:0,process:0,pad:1,indic:0,abort:0,want:0,onlin:1,nghttp2_header:0,pong:0,nghttp2_err_invalid_stream_st:0,unsign:0,occur:0,nghttp2_settings_flow_control_opt:0,alwai:0,multipl:0,secur:1,nghttp2_session_want_read:0,charset:1,ping:0,nghttp2_flag_non:0,write:1,nghttp2_err_fat:0,pair:0,sever:[0,1],serveraddr:1,reject:0,sec9:0,instead:[0,1],simpl:0,updat:0,nghttp2_on_request_recv_callback:0,npn:[0,1],resourc:[0,2],after:0,spdylai:1,badli:0,mai:0,nghttp2_compression_error:0,alloc:0,autotool:1,nghttp2_err_frame_too_larg:0,opaqu:0,nvlen:0,element:0,issu:0,nghttp2_flag_prior:0,"switch":1,ssize_t:0,anoth:0,order:0,talk:1,includ:[0,2],frontend:1,nghttp2_err_stream_shut_wr:0,hypertext:[2,1],move:0,becaus:0,libcunit1:1,through:1,untouch:0,size_t:0,nghttp2_err_unsupported_vers:0,still:[0,1],mainli:0,paramet:0,typedef:[0,2],fix:1,precondit:0,max_outlen:0,nghttp2_hcat_push_respons:0,window:0,pend:0,nghttp2_err_eof:0,hidden:0,therefor:0,nghttp2_session_send:0,inlen:0,valuelen:0,recept:0,them:0,"return":[0,1],thei:[0,1],nghttp2_push_promis:0,nghttp2_goawai:0,initi:0,"break":0,nghttp2_initial_max_concurrent_stream:0,nghttp2_submit_head:0,promis:0,half:0,nov:1,choic:0,document:[2,1],name:[0,1],nghttp2_err_callback_failur:0,nghttp2_send_callback:0,nghttp2_frame_typ:0,no_error:1,drop:0,achiev:0,nghttp2_flow_control_error:0,mode:1,each:0,debug:0,fulli:0,side:0,trailer:0,mean:0,protocol_error:0,chunk:0,continu:[0,1],nghttp2_err_temporal_callback_failur:0,"static":[0,1],connect:[0,1],http:[0,1,2],beyond:0,out:0,space:0,goe:1,req:0,payload:0,end_flow_control:[0,1],etag:1,suitabl:0,on_ctrl_not_send_callback:0,nghttp2_client_connection_header_len:0,got:0,on_frame_not_send_callback:0,recv_callback:0,end_stream:[0,1],proxi:[2,1],state:0,differ:0,free:0,reason:0,base:1,inflat:0,usual:0,releas:0,nghttp2_session_mem_recv:0,nghttp2_flag:0,recv:1,spdy:[0,1],thread:1,befor:0,could:0,omit:0,openssl:1,keep:0,length:[0,1],place:0,outsid:[0,1],enough:0,assign:0,optval:0,first:[0,1],oper:[0,1],rang:[0,1],directli:0,arrai:0,number:0,yourself:1,nghttp2_protocol_error:0,alreadi:0,least:[0,1],nghttp2_on_frame_send_callback:0,opaque_data:[0,1],on_frame_recv_callback:0,open:[0,1],primari:0,size:0,prioriti:0,given:0,"long":0,script:1,unknown:0,data_prd:0,nghttp2_session_get_stream_user_data:0,messag:0,on_unknown_ctrl_recv_callback:0,necessarili:0,draft:[0,1,2],too:0,similarli:0,nghttp2_frame_too_larg:0,internal_error:0,conveni:0,"final":0,store:0,on_ctrl_send_callback:0,ssl_ctx:0,option:[0,1],tool:[2,1],copi:0,nghttp2_proto_version_id_len:0,specifi:[0,1],nghttp2_client_connection_head:0,github:1,pars:0,termin:[0,1],kind:0,scheme:[0,1],provid:0,remov:0,see:[0,1],structur:0,charact:0,project:1,defat:1,entri:0,nghttp2_session_del:0,read_callback:0,nghttp2_error:0,"function":[0,1,2],window_size_incr:[0,1],respons:[0,1],pri:0,argument:[0,1],packag:1,increment:0,reserv:0,need:[0,1],exclud:0,nghttp2_on_frame_recv_parse_error_callback:0,sat:1,bitwis:0,outbound:0,unexpect:0,callback:0,"0x04":1,"0x00":1,payloadlen:0,note:[0,1],nghttp2_refused_stream:0,exampl:[0,1],take:0,which:[0,1],noth:0,singl:[0,1],opaque_data_len:0,sure:1,unless:0,allow:0,"enum":[0,2],though:1,aaaabaaaagqaaaahaad__w:1,compress:[2,1],settings_max_concurrent_stream:0,nghttp2_hcat_request:0,most:0,nghttp2_flag_pong:0,thi:[0,1,2],nghttp2_before_frame_send_callback:0,nghttp2_error_cod:0,nghttp2_err_stream_id_not_avail:0,don:0,http2_select:0,url:1,doc:1,clear:0,later:0,request:[0,1],uri:[0,1],doe:0,nghttp2_pack_settings_payload:0,nghttp2_gzip_inflate_new:0,fact:0,on_invalid_frame_recv_callback:0,text:1,hostnam:1,verbos:1,session:0,pkg:1,protocol:[0,1,2],data:[0,1],absolut:0,nghttp2_submit_push_promis:0,nghttp2_submit_rst_stream:0,refused_stream:0,configur:[0,1],apach:1,figur:1,before_ctrl_send_callback:0,nghttp2_err_invalid_stream_id:0,experiment:[2,1],queu:0,local:0,over:1,nghttp2_err_proto:0,syn_stream:0,variou:0,get:[0,1],window_upd:[0,1],outlen:0,end_head:[0,1],ssl:[0,1],settings_initial_window_s:0,cannot:0,nghttp2_data:0,optnam:0,increas:0,utf:1,tatsuhiro:1,requir:[0,1,2],before_frame_send_callback:0,nghttp2_no_error:0,nghttp2_submit_respons:0,bar:0,enabl:1,ietf:[2,1],possibl:0,push_promis:0,method:[0,1],nghttp2_err_header_comp:0,stuff:0,nghttp2_strerror:0,contain:[0,1],nghttp2_window_upd:0,nghttp2_gzip_inflate_del:0,user:[0,1],certif:1,set:[0,1],frame:[0,1],knowledg:1,nghttp2_submit_goawai:0,temporarili:0,result:0,arg:0,fail:0,close:[0,1],analog:0,statu:[0,1,2],correctli:0,vari:[0,1],someth:0,below:0,written:0,bridg:1,nghttp2_flag_end_flow_control:0,nghttp2_on_data_chunk_recv_callback:0,nghttp2_initial_connection_window_s:0,accord:0,kei:0,flow:0,extens:1,entir:0,len:0,last_stream_id:[0,1],nghttp2_ping:0,tue:1,addit:0,bodi:0,cf405c:1,last:[0,1],nghttp2_proto_version_id:0,region:0,nghttp2_session_want_writ:0,against:0,tempor:0,etc:[0,1],agent:1,compression_error:0,on_request_recv_callback:0,browser:1,whole:0,nghttp2_data_provid:0,point:0,color:1,int32_t:0,address:1,rfc2616:0,header:[0,1,2],nghttp2_prioriti:0,non:[0,1],shutdown:0,path:[0,1],cancel:0,nghttp2_on_frame_not_send_callback:0,nghttp2_session:0,assum:0,backend:1,nghttp2_recv_callback:0,union:[0,2],due:0,been:0,nghttp2_on_data_send_callback:0,trigger:0,interpret:0,interest:1,nghttp2_hcat_head:0,date:1,nghttp2_on_unknown_frame_recv_callback:0,nghttp2_err_nomem:0,nghttp2_session_server_new:0,both:0,nghttp2_opt:0,lib_error_cod:0,ani:[0,1],repres:0,those:0,"case":0,multi:1,subsequ:0,nghttp2_settings_initial_window_s:0,zlib:1,sourceforg:1,defin:0,"while":0,behavior:0,error:0,nghttp2_flag_end_stream:0,invoc:0,listen:1,on_data_chunk_recv_callback:0,nghttp2_session_callback:0,helper:0,libxml2:1,squid:1,select_next_proto_cb:0,promised_stream_id:0,itself:0,conf:1,crash:0,flow_control_error:0,ascii:0,pointer:0,frame_too_larg:0,"null":0,develop:[2,1],perform:[0,1],make:[0,1],belong:0,same:0,member:0,pac:1,headlen:0,nghttp2_on_stream_close_callback:0,start:[0,1],complet:0,nghttp2_session_recv:0,context:0,mytyp:0,effect:0,on_ctrl_recv_parse_error_callback:0,nghttp2_err_deferred_data_exist:0,remot:[0,1],moment:1,zlib1g:1,ownership:0,mani:0,build:[2,1],postpon:0,nghttp2_submit_syn_stream:0,niv:[0,1],implement:[0,1,2],"45adabdf282c0":1,lower:0,com:0,thu:0,nghttp:1,without:[0,1],client:[0,1,2],uint32_t:0,resouc:1,error_cod:[0,1],nghttp2_data_sourc:0,left:0,end_push_promis:0,nghttp2_err_def:0,nghttp2_submit_set:0,identifi:0,just:[0,1],nghttp2_on_data_recv_callback:0,send_callback:0,"0x01":1,nghttp2_gzip_infl:0,via:1,multiplex:1,config:1,on_frame_send_callback:0,previous:0,web:1,"0x8":0,struct:[0,2],easi:1,also:0,priorit:0,except:0,identif:0,haz:0,other:0,input:0,on_data_send_callback:0,nghttp2_select_next_protocol:0,gmt:1,applic:[0,1],nvu:1,format:0,read:0,caller:0,period:0,outlen_ptr:0,nghttp2_session_set_opt:0,know:0,nva:0,step:0,bit:0,associ:0,delta_window_s:0,like:[0,1],success:1,arbitrari:0,uint16_t:0,signal:0,manual:1,html:[0,1,2],nghttp2_pri_lowest:0,server:[0,1,2],nghttp2_flag_end_head:0,tlen:0,have:0,output:1,stream_clos:0,www:0,revers:1,settings_payload:0,deal:0,hostport:0,nghttp2_session_client_new:0,some:0,back:0,sampl:1,integ:0,librari:[0,1,2],transmiss:0,nonzero:0,lead:0,nghttp2_data_source_read_callback:0,octet:0,per:0,outgo:0,larg:0,unit:1,condit:0,nghttp2_session_upgrad:0,duplic:0,localhost:1,either:0,machin:1,object:0,run:1,post:0,reach:0,inspect:0,chart:0,settings_payloadlen:0,found:1,peer:0,major:0,nghttp2_session_get_outbound_queue_s:0,src:1,about:0,actual:0,socket:1,commun:1,inlen_ptr:0,nghttp2_gzip:0,chrome:1,idl:0,nghttp2_submit_data:0,nghttp2_settings_max_concurrent_stream:0,ssl_tlsext_err_ok:0,disabl:1,block:[0,1],on_data_recv_callback:0,nghttp2_settings_entri:0,nghttp2_err_invalid_fram:0,deploi:1,encod:[0,1],automat:0,ssl_ctx_set_next_proto_select_cb:0,automak:1,stream_id:[0,1],empti:0,chang:0,inclus:0,git:[0,1,2],nghttp2_hcat_respons:0,wai:[0,1],transfer:[0,1,2],support:[0,1],submit:0,avail:[0,1],intention:0,nghttp2:[0,1,2],nghttp2_err_stream_clos:0,low:0,ipv6:1,forward:1,findproxyforurl:1,strictli:0,ipv4:1,treat:0,lowest:0,head:0,session_ptr:0,gzip:[0,1],form:0,offer:1,jul:1,nghttp2_err_invalid_st:0,content:[2,1],taken:0,link:1,highest:0,buf:0,bug:1,suppli:0,succe:0,nghttp2_internal_error:0,nghttp2_stream_clos:0,"default":[0,1],nghttp2_settings_max:0,access:1,googlecod:0,maximum:0,tell:0,asynchron:0,deafult:1,nghttpx:1,nghttpd:1,inform:1,autoconf:1,libev:1,expect:1,nghttp2_initial_window_s:0,featur:1,shrpx:1,creat:[0,1],"int":0,httpbi:[2,1],descriptor:0,"char":0,incomplet:1,exist:[0,1],file:[0,1],nghttp2_err_invalid_header_block:0,macro:[0,2],googl:1,when:0,detail:0,invalid:0,field:0,valid:[0,1],role:0,nghttp2_err_invalid_argu:0,test:1,you:[0,1],libssl:1,sequenc:0,decod:0,technot:0,libtool:1,alpn:[0,1],debian:1,serial:0,receiv:0,cunit:1,eof:0,algorithm:0,directori:1,reliabl:0,mask:0,indirectli:0,nghttp2_submit_request:0,namelen:0,portion:0,ignor:0,time:[0,1],push:0,deflat:[0,1],avoid:1},objtypes:{"0":"c:macro","1":"c:member","2":"c:type","3":"c:function"},titles:["API Reference","nghttp2 - HTTP/2.0 C Library","nghttp2 - HTTP/2.0 C Library"],objnames:{"0":["c","macro","C macro"],"1":["c","member","C member"],"2":["c","type","C type"],"3":["c","function","C function"]},filenames:["apiref","package_README","index"]})
\ No newline at end of file \ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment