Update doc

This commit is contained in:
Tatsuhiro Tsujikawa 2014-06-18 13:40:33 +09:00
parent 8a08654789
commit 5027d194af
14 changed files with 459 additions and 415 deletions

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>API Reference &mdash; nghttp2 0.4.1 documentation</title>
<title>API Reference &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<link rel="next" title="Python API Reference" href="python-apiref.html"/>
<link rel="prev" title="nghttpx - HOW-TO" href="nghttpx-howto.html"/>
@ -561,7 +561,7 @@ Indicates that this name/value pair must not be indexed.</p>
<dl class="type">
<dt id="c.nghttp2_frame_type">
<tt class="descname">nghttp2_frame_type</tt><a class="headerlink" href="#c.nghttp2_frame_type" title="Permalink to this definition"></a></dt>
<dd><p>The control frame types in HTTP/2.</p>
<dd><p>The frame types in HTTP/2 specification.</p>
<dl class="macro">
<dt id="c.NGHTTP2_DATA">
<tt class="descname">NGHTTP2_DATA</tt><a class="headerlink" href="#c.NGHTTP2_DATA" title="Permalink to this definition"></a></dt>
@ -632,18 +632,26 @@ The WINDOW_UPDATE frame.</p>
The CONTINUATION frame.</p>
</dd></dl>
</dd></dl>
<dl class="type">
<dt id="c.nghttp2_ext_frame_type">
<tt class="descname">nghttp2_ext_frame_type</tt><a class="headerlink" href="#c.nghttp2_ext_frame_type" title="Permalink to this definition"></a></dt>
<dd><p>The extension frame types.</p>
<p>TODO: The assigned frame types were carried from draft-12, and now
actually TBD.</p>
<dl class="macro">
<dt id="c.NGHTTP2_ALTSVC">
<tt class="descname">NGHTTP2_ALTSVC</tt><a class="headerlink" href="#c.NGHTTP2_ALTSVC" title="Permalink to this definition"></a></dt>
<dt id="c.NGHTTP2_EXT_ALTSVC">
<tt class="descname">NGHTTP2_EXT_ALTSVC</tt><a class="headerlink" href="#c.NGHTTP2_EXT_ALTSVC" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">0x0a</span></tt>)
The ALTSVC frame.</p>
The ALTSVC extension frame.</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_BLOCKED">
<tt class="descname">NGHTTP2_BLOCKED</tt><a class="headerlink" href="#c.NGHTTP2_BLOCKED" title="Permalink to this definition"></a></dt>
<dt id="c.NGHTTP2_EXT_BLOCKED">
<tt class="descname">NGHTTP2_EXT_BLOCKED</tt><a class="headerlink" href="#c.NGHTTP2_EXT_BLOCKED" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">0x0b</span></tt>)
The BLOCKED frame.</p>
The BLOCKED extension frame.</p>
</dd></dl>
</dd></dl>
@ -689,17 +697,10 @@ The END_SEGMENT flag.</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_FLAG_PAD_LOW">
<tt class="descname">NGHTTP2_FLAG_PAD_LOW</tt><a class="headerlink" href="#c.NGHTTP2_FLAG_PAD_LOW" title="Permalink to this definition"></a></dt>
<dt id="c.NGHTTP2_FLAG_PADDED">
<tt class="descname">NGHTTP2_FLAG_PADDED</tt><a class="headerlink" href="#c.NGHTTP2_FLAG_PADDED" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">0x08</span></tt>)
The PAD_LOW flag.</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_FLAG_PAD_HIGH">
<tt class="descname">NGHTTP2_FLAG_PAD_HIGH</tt><a class="headerlink" href="#c.NGHTTP2_FLAG_PAD_HIGH" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">0x10</span></tt>)
The PAD_HIGH flag.</p>
The PADDED flag.</p>
</dd></dl>
<dl class="macro">
@ -709,13 +710,6 @@ The PAD_HIGH flag.</p>
The PRIORITY flag.</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_FLAG_COMPRESSED">
<tt class="descname">NGHTTP2_FLAG_COMPRESSED</tt><a class="headerlink" href="#c.NGHTTP2_FLAG_COMPRESSED" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">0x20</span></tt>)
THE COMPRESSED flag.</p>
</dd></dl>
</dd></dl>
<dl class="type">
@ -725,45 +719,31 @@ THE COMPRESSED flag.</p>
<dl class="macro">
<dt id="c.NGHTTP2_SETTINGS_HEADER_TABLE_SIZE">
<tt class="descname">NGHTTP2_SETTINGS_HEADER_TABLE_SIZE</tt><a class="headerlink" href="#c.NGHTTP2_SETTINGS_HEADER_TABLE_SIZE" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">1</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x01</span></tt>)
SETTINGS_HEADER_TABLE_SIZE</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_SETTINGS_ENABLE_PUSH">
<tt class="descname">NGHTTP2_SETTINGS_ENABLE_PUSH</tt><a class="headerlink" href="#c.NGHTTP2_SETTINGS_ENABLE_PUSH" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">2</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x02</span></tt>)
SETTINGS_ENABLE_PUSH</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS">
<tt class="descname">NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS</tt><a class="headerlink" href="#c.NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">3</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x03</span></tt>)
SETTINGS_MAX_CONCURRENT_STREAMS</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE">
<tt class="descname">NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE</tt><a class="headerlink" href="#c.NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">4</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x04</span></tt>)
SETTINGS_INITIAL_WINDOW_SIZE</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_SETTINGS_COMPRESS_DATA">
<tt class="descname">NGHTTP2_SETTINGS_COMPRESS_DATA</tt><a class="headerlink" href="#c.NGHTTP2_SETTINGS_COMPRESS_DATA" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">5</span></tt>)
SETTINGS_COMPRESS_DATA</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_SETTINGS_MAX">
<tt class="descname">NGHTTP2_SETTINGS_MAX</tt><a class="headerlink" href="#c.NGHTTP2_SETTINGS_MAX" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">5</span></tt>)
Maximum ID of <a class="reference internal" href="#c.nghttp2_settings_id" title="nghttp2_settings_id"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_settings_id</span></tt></a>.</p>
</dd></dl>
</dd></dl>
<dl class="type">
@ -773,91 +753,91 @@ Maximum ID of <a class="reference internal" href="#c.nghttp2_settings_id" title=
<dl class="macro">
<dt id="c.NGHTTP2_NO_ERROR">
<tt class="descname">NGHTTP2_NO_ERROR</tt><a class="headerlink" href="#c.NGHTTP2_NO_ERROR" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">0</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x00</span></tt>)
No errors.</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_PROTOCOL_ERROR">
<tt class="descname">NGHTTP2_PROTOCOL_ERROR</tt><a class="headerlink" href="#c.NGHTTP2_PROTOCOL_ERROR" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">1</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x01</span></tt>)
PROTOCOL_ERROR</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_INTERNAL_ERROR">
<tt class="descname">NGHTTP2_INTERNAL_ERROR</tt><a class="headerlink" href="#c.NGHTTP2_INTERNAL_ERROR" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">2</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x02</span></tt>)
INTERNAL_ERROR</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_FLOW_CONTROL_ERROR">
<tt class="descname">NGHTTP2_FLOW_CONTROL_ERROR</tt><a class="headerlink" href="#c.NGHTTP2_FLOW_CONTROL_ERROR" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">3</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x03</span></tt>)
FLOW_CONTROL_ERROR</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_SETTINGS_TIMEOUT">
<tt class="descname">NGHTTP2_SETTINGS_TIMEOUT</tt><a class="headerlink" href="#c.NGHTTP2_SETTINGS_TIMEOUT" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">4</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x04</span></tt>)
SETTINGS_TIMEOUT</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_STREAM_CLOSED">
<tt class="descname">NGHTTP2_STREAM_CLOSED</tt><a class="headerlink" href="#c.NGHTTP2_STREAM_CLOSED" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">5</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x05</span></tt>)
STREAM_CLOSED</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_FRAME_SIZE_ERROR">
<tt class="descname">NGHTTP2_FRAME_SIZE_ERROR</tt><a class="headerlink" href="#c.NGHTTP2_FRAME_SIZE_ERROR" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">6</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x06</span></tt>)
FRAME_SIZE_ERROR</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_REFUSED_STREAM">
<tt class="descname">NGHTTP2_REFUSED_STREAM</tt><a class="headerlink" href="#c.NGHTTP2_REFUSED_STREAM" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">7</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x07</span></tt>)
REFUSED_STREAM</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_CANCEL">
<tt class="descname">NGHTTP2_CANCEL</tt><a class="headerlink" href="#c.NGHTTP2_CANCEL" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">8</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x08</span></tt>)
CANCEL</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_COMPRESSION_ERROR">
<tt class="descname">NGHTTP2_COMPRESSION_ERROR</tt><a class="headerlink" href="#c.NGHTTP2_COMPRESSION_ERROR" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">9</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x09</span></tt>)
COMPRESSION_ERROR</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_CONNECT_ERROR">
<tt class="descname">NGHTTP2_CONNECT_ERROR</tt><a class="headerlink" href="#c.NGHTTP2_CONNECT_ERROR" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">10</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x0a</span></tt>)
CONNECT_ERROR</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_ENHANCE_YOUR_CALM">
<tt class="descname">NGHTTP2_ENHANCE_YOUR_CALM</tt><a class="headerlink" href="#c.NGHTTP2_ENHANCE_YOUR_CALM" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">11</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x0b</span></tt>)
ENHANCE_YOUR_CALM</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_INADEQUATE_SECURITY">
<tt class="descname">NGHTTP2_INADEQUATE_SECURITY</tt><a class="headerlink" href="#c.NGHTTP2_INADEQUATE_SECURITY" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">12</span></tt>)
<dd><p>(<tt class="docutils literal"><span class="pre">0x0c</span></tt>)
INADEQUATE_SECURITY</p>
</dd></dl>
@ -882,13 +862,6 @@ No flag set.</p>
Indicates EOF was sensed.</p>
</dd></dl>
<dl class="macro">
<dt id="c.NGHTTP2_DATA_FLAG_COMPRESSED">
<tt class="descname">NGHTTP2_DATA_FLAG_COMPRESSED</tt><a class="headerlink" href="#c.NGHTTP2_DATA_FLAG_COMPRESSED" title="Permalink to this definition"></a></dt>
<dd><p>(<tt class="docutils literal"><span class="pre">0x02</span></tt>)
Indicates data was compressed by application.</p>
</dd></dl>
</dd></dl>
<dl class="type">
@ -1101,10 +1074,6 @@ The implementation of this function must read at most <em>length</em>
bytes of data from <em>source</em> (or possibly other places) and store
them in <em>buf</em> and return number of data stored in <em>buf</em>. If EOF is
reached, set <a class="reference internal" href="#c.NGHTTP2_DATA_FLAG_EOF" title="NGHTTP2_DATA_FLAG_EOF"><tt class="xref c c-macro docutils literal"><span class="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 <a class="reference internal" href="#c.NGHTTP2_DATA_FLAG_COMPRESSED" title="NGHTTP2_DATA_FLAG_COMPRESSED"><tt class="xref c c-macro docutils literal"><span class="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 <a class="reference internal" href="#c.NGHTTP2_ERR_DEFERRED" title="NGHTTP2_ERR_DEFERRED"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_DEFERRED</span></tt></a> without reading
@ -1407,73 +1376,78 @@ int32_t <tt class="descname">window_size_increment</tt><a class="headerlink" hre
</dd></dl>
<dl class="type">
<dt id="c.nghttp2_altsvc">
<tt class="descname">nghttp2_altsvc</tt><a class="headerlink" href="#c.nghttp2_altsvc" title="Permalink to this definition"></a></dt>
<dd><p>The ALTSVC frame. It has following members:</p>
<dt id="c.nghttp2_extension">
<tt class="descname">nghttp2_extension</tt><a class="headerlink" href="#c.nghttp2_extension" title="Permalink to this definition"></a></dt>
<dd><p>The extension frame. It has following members:</p>
<dl class="member">
<dt id="c.nghttp2_altsvc.hd">
<a class="reference internal" href="#c.nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#c.nghttp2_altsvc.hd" title="Permalink to this definition"></a></dt>
<dt id="c.nghttp2_extension.hd">
<a class="reference internal" href="#c.nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#c.nghttp2_extension.hd" title="Permalink to this definition"></a></dt>
<dd><p>The frame header.</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_altsvc.protocol_id">
uint8_t *<tt class="descname">protocol_id</tt><a class="headerlink" href="#c.nghttp2_altsvc.protocol_id" title="Permalink to this definition"></a></dt>
<dd><p>Protocol ID</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_altsvc.host">
uint8_t *<tt class="descname">host</tt><a class="headerlink" href="#c.nghttp2_altsvc.host" title="Permalink to this definition"></a></dt>
<dd><p>Host</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_altsvc.origin">
uint8_t *<tt class="descname">origin</tt><a class="headerlink" href="#c.nghttp2_altsvc.origin" title="Permalink to this definition"></a></dt>
<dd><p>Origin</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_altsvc.protocol_id_len">
size_t <tt class="descname">protocol_id_len</tt><a class="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>
<dl class="member">
<dt id="c.nghttp2_altsvc.host_len">
size_t <tt class="descname">host_len</tt><a class="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>
<dl class="member">
<dt id="c.nghttp2_altsvc.origin_len">
size_t <tt class="descname">origin_len</tt><a class="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>
<dl class="member">
<dt id="c.nghttp2_altsvc.max_age">
uint32_t <tt class="descname">max_age</tt><a class="headerlink" href="#c.nghttp2_altsvc.max_age" title="Permalink to this definition"></a></dt>
<dd><p>Max-Age</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_altsvc.port">
uint16_t <tt class="descname">port</tt><a class="headerlink" href="#c.nghttp2_altsvc.port" title="Permalink to this definition"></a></dt>
<dd><p>Port</p>
<dt id="c.nghttp2_extension.payload">
void *<tt class="descname">payload</tt><a class="headerlink" href="#c.nghttp2_extension.payload" title="Permalink to this definition"></a></dt>
<dd><p>The pointer to extension payload. The exact pointer type is
determined by hd.type.</p>
<p>If hd.type == <a class="reference internal" href="#c.NGHTTP2_EXT_ALTSVC" title="NGHTTP2_EXT_ALTSVC"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_EXT_ALTSVC</span></tt></a>, it is a pointer to
<a class="reference internal" href="#c.nghttp2_ext_altsvc" title="nghttp2_ext_altsvc"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_ext_altsvc</span></tt></a>.</p>
<p>If hd.type == <a class="reference internal" href="#c.NGHTTP2_EXT_BLOCKED" title="NGHTTP2_EXT_BLOCKED"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_EXT_BLOCKED</span></tt></a>, it points to <tt class="docutils literal"><span class="pre">NULL</span></tt>,
since BLOCKED extension frame has no payload.</p>
</dd></dl>
</dd></dl>
<dl class="type">
<dt id="c.nghttp2_blocked">
<tt class="descname">nghttp2_blocked</tt><a class="headerlink" href="#c.nghttp2_blocked" title="Permalink to this definition"></a></dt>
<dd><p>The BLOCKED frame. It has following members:</p>
<dt id="c.nghttp2_ext_altsvc">
<tt class="descname">nghttp2_ext_altsvc</tt><a class="headerlink" href="#c.nghttp2_ext_altsvc" title="Permalink to this definition"></a></dt>
<dd><p>The ALTSVC extension frame payload. It has following members:</p>
<dl class="member">
<dt id="c.nghttp2_blocked.hd">
<a class="reference internal" href="#c.nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#c.nghttp2_blocked.hd" title="Permalink to this definition"></a></dt>
<dd><p>The frame header.</p>
<dt id="c.nghttp2_ext_altsvc.protocol_id">
uint8_t *<tt class="descname">protocol_id</tt><a class="headerlink" href="#c.nghttp2_ext_altsvc.protocol_id" title="Permalink to this definition"></a></dt>
<dd><p>Protocol ID</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_ext_altsvc.host">
uint8_t *<tt class="descname">host</tt><a class="headerlink" href="#c.nghttp2_ext_altsvc.host" title="Permalink to this definition"></a></dt>
<dd><p>Host</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_ext_altsvc.origin">
uint8_t *<tt class="descname">origin</tt><a class="headerlink" href="#c.nghttp2_ext_altsvc.origin" title="Permalink to this definition"></a></dt>
<dd><p>Origin</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_ext_altsvc.protocol_id_len">
size_t <tt class="descname">protocol_id_len</tt><a class="headerlink" href="#c.nghttp2_ext_altsvc.protocol_id_len" title="Permalink to this definition"></a></dt>
<dd><p>The length of <em>protocol_id</em></p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_ext_altsvc.host_len">
size_t <tt class="descname">host_len</tt><a class="headerlink" href="#c.nghttp2_ext_altsvc.host_len" title="Permalink to this definition"></a></dt>
<dd><p>The length of <em>host</em></p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_ext_altsvc.origin_len">
size_t <tt class="descname">origin_len</tt><a class="headerlink" href="#c.nghttp2_ext_altsvc.origin_len" title="Permalink to this definition"></a></dt>
<dd><p>The length of <em>origin</em></p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_ext_altsvc.max_age">
uint32_t <tt class="descname">max_age</tt><a class="headerlink" href="#c.nghttp2_ext_altsvc.max_age" title="Permalink to this definition"></a></dt>
<dd><p>Max-Age</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_ext_altsvc.port">
uint16_t <tt class="descname">port</tt><a class="headerlink" href="#c.nghttp2_ext_altsvc.port" title="Permalink to this definition"></a></dt>
<dd><p>Port</p>
</dd></dl>
</dd></dl>
@ -1545,15 +1519,9 @@ from here because the library deals with it internally.</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_frame.altsvc">
<a class="reference internal" href="#c.nghttp2_altsvc" title="nghttp2_altsvc">nghttp2_altsvc</a> <tt class="descname">altsvc</tt><a class="headerlink" href="#c.nghttp2_frame.altsvc" title="Permalink to this definition"></a></dt>
<dd><p>The ALTSVC frame.</p>
</dd></dl>
<dl class="member">
<dt id="c.nghttp2_frame.blocked">
<a class="reference internal" href="#c.nghttp2_blocked" title="nghttp2_blocked">nghttp2_blocked</a> <tt class="descname">blocked</tt><a class="headerlink" href="#c.nghttp2_frame.blocked" title="Permalink to this definition"></a></dt>
<dd><p>The BLOCKED frame.</p>
<dt id="c.nghttp2_frame.ext">
<a class="reference internal" href="#c.nghttp2_extension" title="nghttp2_extension">nghttp2_extension</a> <tt class="descname">ext</tt><a class="headerlink" href="#c.nghttp2_frame.ext" title="Permalink to this definition"></a></dt>
<dd><p>The extension frame.</p>
</dd></dl>
</dd></dl>
@ -2213,9 +2181,6 @@ is invoked.</li>
invalid,
<a class="reference internal" href="#c.nghttp2_session_callbacks.on_invalid_frame_recv_callback" title="nghttp2_session_callbacks.on_invalid_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_invalid_frame_recv_callback</span></tt></a>
is invoked.</li>
<li>If the received frame type is unknown,
<a class="reference internal" href="#c.nghttp2_session_callbacks.on_unknown_frame_recv_callback" title="nghttp2_session_callbacks.on_unknown_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_unknown_frame_recv_callback</span></tt></a>
is invoked.</li>
</ol>
</li>
</ol>
@ -2395,13 +2360,11 @@ local endpoint can send without WINDOW_UPDATE.</p>
<dt id="c.nghttp2_session_terminate_session">
int <tt class="descname">nghttp2_session_terminate_session</tt><big>(</big><a class="reference internal" href="#c.nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, <a class="reference internal" href="#c.nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em>&nbsp;error_code</em><big>)</big><a class="headerlink" href="#c.nghttp2_session_terminate_session" title="Permalink to this definition"></a></dt>
<dd><p>Signals the session so that the connection should be terminated.</p>
<p>GOAWAY frame with the given <em>error_code</em> will be submitted if it
has not been transmitted. After the transmission, both
<a class="reference internal" href="#c.nghttp2_session_want_read" title="nghttp2_session_want_read"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_want_read()</span></tt></a> and <a class="reference internal" href="#c.nghttp2_session_want_write" title="nghttp2_session_want_write"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_want_write()</span></tt></a>
return 0. If GOAWAY frame has already transmitted at the time when
this function is invoked, <a class="reference internal" href="#c.nghttp2_session_want_read" title="nghttp2_session_want_read"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_want_read()</span></tt></a> and
<a class="reference internal" href="#c.nghttp2_session_want_write" title="nghttp2_session_want_write"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_want_write()</span></tt></a> returns 0 immediately after this
function succeeds.</p>
<p>The last stream ID is the ID of a stream for which
<a class="reference internal" href="#c.nghttp2_on_frame_recv_callback" title="nghttp2_on_frame_recv_callback"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_on_frame_recv_callback</span></tt></a> was called most recently.</p>
<p>The <em>error_code</em> is the error code of this GOAWAY frame.</p>
<p>After the transmission, both <a class="reference internal" href="#c.nghttp2_session_want_read" title="nghttp2_session_want_read"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_want_read()</span></tt></a> and
<a class="reference internal" href="#c.nghttp2_session_want_write" title="nghttp2_session_want_write"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_want_write()</span></tt></a> return 0.</p>
<p>This function should be called when the connection should be
terminated after sending GOAWAY. If the remaining streams should
be processed after GOAWAY, use <a class="reference internal" href="#c.nghttp2_submit_goaway" title="nghttp2_submit_goaway"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_goaway()</span></tt></a> instead.</p>
@ -2413,10 +2376,27 @@ negative error codes:</p>
</dl>
</dd></dl>
<dl class="function">
<dt id="c.nghttp2_session_terminate_session2">
int <tt class="descname">nghttp2_session_terminate_session2</tt><big>(</big><a class="reference internal" href="#c.nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, int32_t<em>&nbsp;last_stream_id</em>, <a class="reference internal" href="#c.nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em>&nbsp;error_code</em><big>)</big><a class="headerlink" href="#c.nghttp2_session_terminate_session2" title="Permalink to this definition"></a></dt>
<dd><p>Signals the session so that the connection should be terminated.</p>
<p>This function behaves like <a class="reference internal" href="#c.nghttp2_session_terminate_session" title="nghttp2_session_terminate_session"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_terminate_session()</span></tt></a>,
but the last stream ID can be specified by the application for fine
grained control of stream.</p>
<p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#c.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>
</dl>
</dd></dl>
<dl class="function">
<dt id="c.nghttp2_session_get_remote_settings">
uint32_t <tt class="descname">nghttp2_session_get_remote_settings</tt><big>(</big><a class="reference internal" href="#c.nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, <a class="reference internal" href="#c.nghttp2_settings_id" title="nghttp2_settings_id">nghttp2_settings_id</a><em>&nbsp;id</em><big>)</big><a class="headerlink" href="#c.nghttp2_session_get_remote_settings" title="Permalink to this definition"></a></dt>
<dd><p>Returns the value of SETTINGS <em>id</em> notified by a remote endpoint.</p>
<dd><p>Returns the value of SETTINGS <em>id</em> notified by a remote endpoint.
The <em>id</em> must be one of values defined in
<a class="reference internal" href="#c.nghttp2_settings_id" title="nghttp2_settings_id"><tt class="xref c c-macro docutils literal"><span class="pre">nghttp2_settings_id</span></tt></a>.</p>
</dd></dl>
<dl class="function">
@ -2590,6 +2570,8 @@ negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#c.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>
<dt><a class="reference internal" href="#c.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>stream_id</em> is 0.</dd>
</dl>
</dd></dl>
@ -2644,6 +2626,8 @@ succeeds, or one of the following negative error codes:</p>
<dt><a class="reference internal" href="#c.NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE" title="NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE</span></tt></a></dt>
<dd>No stream ID is available because maximum stream ID was
reached.</dd>
<dt><a class="reference internal" href="#c.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>stream_id</em> is 0.</dd>
</dl>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
@ -2672,6 +2656,8 @@ negative error codes:</p>
<dd>Out of memory.</dd>
<dt><a class="reference internal" href="#c.NGHTTP2_ERR_DATA_EXIST" title="NGHTTP2_ERR_DATA_EXIST"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_DATA_EXIST</span></tt></a></dt>
<dd>DATA has been already submitted and not fully processed yet.</dd>
<dt><a class="reference internal" href="#c.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>stream_id</em> is 0.</dd>
</dl>
</dd></dl>
@ -2697,7 +2683,8 @@ negative error codes:</p>
<dt><a class="reference internal" href="#c.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>
<dt><a class="reference internal" href="#c.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_spec</em> is NULL; or trying to depend on itself.</dd>
<dd>The <em>stream_id</em> is 0; or the <em>pri_spec</em> is NULL; or trying to
depend on itself.</dd>
</dl>
</dd></dl>
@ -2713,6 +2700,8 @@ negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#c.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>
<dt><a class="reference internal" href="#c.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>stream_id</em> is 0.</dd>
</dl>
</dd></dl>
@ -2780,6 +2769,8 @@ client.</dd>
<dt><a class="reference internal" href="#c.NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE" title="NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE</span></tt></a></dt>
<dd>No stream ID is available because maximum stream ID was
reached.</dd>
<dt><a class="reference internal" href="#c.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>stream_id</em> is 0.</dd>
</dl>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
@ -2813,8 +2804,9 @@ negative error codes:</p>
<dl class="function">
<dt id="c.nghttp2_submit_goaway">
int <tt class="descname">nghttp2_submit_goaway</tt><big>(</big><a class="reference internal" href="#c.nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, uint8_t<em>&nbsp;flags</em>, <a class="reference internal" href="#c.nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em>&nbsp;error_code</em>, const uint8_t<em>&nbsp;*opaque_data</em>, size_t<em>&nbsp;opaque_data_len</em><big>)</big><a class="headerlink" href="#c.nghttp2_submit_goaway" title="Permalink to this definition"></a></dt>
<dd><p>Submits GOAWAY frame with the error code <em>error_code</em>.</p>
int <tt class="descname">nghttp2_submit_goaway</tt><big>(</big><a class="reference internal" href="#c.nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, uint8_t<em>&nbsp;flags</em>, int32_t<em>&nbsp;last_stream_id</em>, <a class="reference internal" href="#c.nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em>&nbsp;error_code</em>, const uint8_t<em>&nbsp;*opaque_data</em>, size_t<em>&nbsp;opaque_data_len</em><big>)</big><a class="headerlink" href="#c.nghttp2_submit_goaway" title="Permalink to this definition"></a></dt>
<dd><p>Submits GOAWAY frame with the last stream ID <em>last_stream_id</em> and
the error code <em>error_code</em>.</p>
<p>The <em>flags</em> is currently ignored and should be
<a class="reference internal" href="#c.NGHTTP2_FLAG_NONE" title="NGHTTP2_FLAG_NONE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_NONE</span></tt></a>.</p>
<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
@ -2823,12 +2815,17 @@ library makes a copy of the memory region pointed by <em>opaque_data</em>
with the length <em>opaque_data_len</em>, so the caller does not need to
keep this memory after the return of this function. If the
<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>To shutdown gracefully, first send GOAWAY with <tt class="docutils literal"><span class="pre">last_stream_id</span> <span class="pre">=</span>
<span class="pre">(1u</span> <span class="pre">&lt;&lt;</span> <span class="pre">31)</span> <span class="pre">-</span> <span class="pre">1</span></tt>. After 1 RTT, call either
<a class="reference internal" href="#c.nghttp2_submit_goaway" title="nghttp2_submit_goaway"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_goaway()</span></tt></a>, <a class="reference internal" href="#c.nghttp2_session_terminate_session" title="nghttp2_session_terminate_session"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_terminate_session()</span></tt></a> or
<a class="reference internal" href="#c.nghttp2_session_terminate_session2" title="nghttp2_session_terminate_session2"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_terminate_session2()</span></tt></a>. The latter 2 will close
HTTP/2 session immediately after transmission of the frame.</p>
<p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#c.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>
<dt>NGHTTP2_ERR_INVALID_ARGUMENT</dt>
<dt><a class="reference internal" href="#c.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>opaque_data_len</em> is too large.</dd>
</dl>
</dd></dl>
@ -3229,7 +3226,7 @@ always succeeds.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

View File

@ -8,7 +8,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Index &mdash; nghttp2 0.4.1 documentation</title>
<title>Index &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -29,7 +29,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
@ -275,66 +275,10 @@
</dt>
<dt><a href="apiref.html#c.NGHTTP2_ALTSVC">NGHTTP2_ALTSVC (C macro)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc">nghttp2_altsvc (C type)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc.hd">nghttp2_altsvc.hd (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc.host">nghttp2_altsvc.host (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc.host_len">nghttp2_altsvc.host_len (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc.max_age">nghttp2_altsvc.max_age (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc.origin">nghttp2_altsvc.origin (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc.origin_len">nghttp2_altsvc.origin_len (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc.port">nghttp2_altsvc.port (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc.protocol_id">nghttp2_altsvc.protocol_id (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_altsvc.protocol_id_len">nghttp2_altsvc.protocol_id_len (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_before_frame_send_callback">nghttp2_before_frame_send_callback (C type)</a>
</dt>
<dt><a href="apiref.html#c.NGHTTP2_BLOCKED">NGHTTP2_BLOCKED (C macro)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_blocked">nghttp2_blocked (C type)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_blocked.hd">nghttp2_blocked.hd (C member)</a>
</dt>
<dt><a href="apiref.html#c.NGHTTP2_CANCEL">NGHTTP2_CANCEL (C macro)</a>
</dt>
@ -399,10 +343,6 @@
</dt>
<dt><a href="apiref.html#c.NGHTTP2_DATA_FLAG_COMPRESSED">NGHTTP2_DATA_FLAG_COMPRESSED (C macro)</a>
</dt>
<dt><a href="apiref.html#c.NGHTTP2_DATA_FLAG_EOF">NGHTTP2_DATA_FLAG_EOF (C macro)</a>
</dt>
@ -583,6 +523,66 @@
</dt>
<dt><a href="apiref.html#c.NGHTTP2_EXT_ALTSVC">NGHTTP2_EXT_ALTSVC (C macro)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_altsvc">nghttp2_ext_altsvc (C type)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_altsvc.host">nghttp2_ext_altsvc.host (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_altsvc.host_len">nghttp2_ext_altsvc.host_len (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_altsvc.max_age">nghttp2_ext_altsvc.max_age (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_altsvc.origin">nghttp2_ext_altsvc.origin (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_altsvc.origin_len">nghttp2_ext_altsvc.origin_len (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_altsvc.port">nghttp2_ext_altsvc.port (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_altsvc.protocol_id">nghttp2_ext_altsvc.protocol_id (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_altsvc.protocol_id_len">nghttp2_ext_altsvc.protocol_id_len (C member)</a>
</dt>
<dt><a href="apiref.html#c.NGHTTP2_EXT_BLOCKED">NGHTTP2_EXT_BLOCKED (C macro)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_ext_frame_type">nghttp2_ext_frame_type (C type)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_extension">nghttp2_extension (C type)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_extension.hd">nghttp2_extension.hd (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_extension.payload">nghttp2_extension.payload (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_flag">nghttp2_flag (C type)</a>
</dt>
@ -591,10 +591,6 @@
</dt>
<dt><a href="apiref.html#c.NGHTTP2_FLAG_COMPRESSED">NGHTTP2_FLAG_COMPRESSED (C macro)</a>
</dt>
<dt><a href="apiref.html#c.NGHTTP2_FLAG_END_HEADERS">NGHTTP2_FLAG_END_HEADERS (C macro)</a>
</dt>
@ -611,11 +607,7 @@
</dt>
<dt><a href="apiref.html#c.NGHTTP2_FLAG_PAD_HIGH">NGHTTP2_FLAG_PAD_HIGH (C macro)</a>
</dt>
<dt><a href="apiref.html#c.NGHTTP2_FLAG_PAD_LOW">NGHTTP2_FLAG_PAD_LOW (C macro)</a>
<dt><a href="apiref.html#c.NGHTTP2_FLAG_PADDED">NGHTTP2_FLAG_PADDED (C macro)</a>
</dt>
@ -631,18 +623,14 @@
</dt>
<dt><a href="apiref.html#c.nghttp2_frame.altsvc">nghttp2_frame.altsvc (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_frame.blocked">nghttp2_frame.blocked (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_frame.data">nghttp2_frame.data (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_frame.ext">nghttp2_frame.ext (C member)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_frame.goaway">nghttp2_frame.goaway (C member)</a>
</dt>
@ -862,12 +850,12 @@
<dt><a href="apiref.html#c.nghttp2_info">nghttp2_info (C type)</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="apiref.html#c.nghttp2_info.age">nghttp2_info.age (C member)</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="apiref.html#c.nghttp2_info.proto_str">nghttp2_info.proto_str (C member)</a>
</dt>
@ -1293,6 +1281,10 @@
</dt>
<dt><a href="apiref.html#c.nghttp2_session_terminate_session2">nghttp2_session_terminate_session2 (C function)</a>
</dt>
<dt><a href="apiref.html#c.nghttp2_session_upgrade">nghttp2_session_upgrade (C function)</a>
</dt>
@ -1325,10 +1317,6 @@
</dt>
<dt><a href="apiref.html#c.NGHTTP2_SETTINGS_COMPRESS_DATA">NGHTTP2_SETTINGS_COMPRESS_DATA (C macro)</a>
</dt>
<dt><a href="apiref.html#c.NGHTTP2_SETTINGS_ENABLE_PUSH">NGHTTP2_SETTINGS_ENABLE_PUSH (C macro)</a>
</dt>
@ -1357,10 +1345,6 @@
</dt>
<dt><a href="apiref.html#c.NGHTTP2_SETTINGS_MAX">NGHTTP2_SETTINGS_MAX (C macro)</a>
</dt>
<dt><a href="apiref.html#c.NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS">NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS (C macro)</a>
</dt>
@ -1561,7 +1545,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>nghttp2 - HTTP/2 C Library &mdash; nghttp2 0.4.1 documentation</title>
<title>nghttp2 - HTTP/2 C Library &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="#"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="#"/>
<link rel="next" title="nghttp2 - HTTP/2 C Library" href="package_README.html"/>
@ -210,8 +210,8 @@ version 2.</p>
<div class="section" id="resources">
<h2>Resources<a class="headerlink" href="#resources" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-http2-12">http://tools.ietf.org/html/draft-ietf-httpbis-http2-12</a></li>
<li><a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07">http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07</a></li>
<li><a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-http2-13">http://tools.ietf.org/html/draft-ietf-httpbis-http2-13</a></li>
<li><a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-08">http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-08</a></li>
</ul>
</div>
</div>
@ -252,7 +252,7 @@ version 2.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>nghttp2.h &mdash; nghttp2 0.4.1 documentation</title>
<title>nghttp2.h &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<link rel="next" title="nghttp2ver.h" href="nghttp2ver.h.html"/>
<link rel="prev" title="Python API Reference" href="python-apiref.html"/>
@ -184,7 +184,7 @@
<span class="cm"> * The protocol version identification string of this library</span>
<span class="cm"> * supports. This identifier is used if HTTP/2 is used over TLS.</span>
<span class="cm"> */</span>
<span class="cp">#define NGHTTP2_PROTO_VERSION_ID &quot;h2-12&quot;</span>
<span class="cp">#define NGHTTP2_PROTO_VERSION_ID &quot;h2-13&quot;</span>
<span class="cm">/**</span>
<span class="cm"> * @macro</span>
<span class="cm"> *</span>
@ -199,7 +199,7 @@
<span class="cm"> * supports. This identifier is used if HTTP/2 is used over cleartext</span>
<span class="cm"> * TCP.</span>
<span class="cm"> */</span>
<span class="cp">#define NGHTTP2_CLEARTEXT_PROTO_VERSION_ID &quot;h2c-12&quot;</span>
<span class="cp">#define NGHTTP2_CLEARTEXT_PROTO_VERSION_ID &quot;h2c-13&quot;</span>
<span class="cm">/**</span>
<span class="cm"> * @macro</span>
@ -539,7 +539,8 @@
<span class="cm">/**</span>
<span class="cm"> * @enum</span>
<span class="cm"> * The control frame types in HTTP/2.</span>
<span class="cm"> *</span>
<span class="cm"> * The frame types in HTTP/2 specification.</span>
<span class="cm"> */</span>
<span class="k">typedef</span> <span class="k">enum</span> <span class="p">{</span>
<span class="cm">/**</span>
@ -581,17 +582,28 @@
<span class="cm">/**</span>
<span class="cm"> * The CONTINUATION frame.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_CONTINUATION</span> <span class="o">=</span> <span class="mh">0x09</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The ALTSVC frame.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_ALTSVC</span> <span class="o">=</span> <span class="mh">0x0a</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The BLOCKED frame.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_BLOCKED</span> <span class="o">=</span> <span class="mh">0x0b</span>
<span class="n">NGHTTP2_CONTINUATION</span> <span class="o">=</span> <span class="mh">0x09</span>
<span class="p">}</span> <span class="n">nghttp2_frame_type</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * @enum</span>
<span class="cm"> *</span>
<span class="cm"> * The extension frame types.</span>
<span class="cm"> *</span>
<span class="cm"> * TODO: The assigned frame types were carried from draft-12, and now</span>
<span class="cm"> * actually TBD.</span>
<span class="cm"> */</span>
<span class="k">typedef</span> <span class="k">enum</span> <span class="p">{</span>
<span class="cm">/**</span>
<span class="cm"> * The ALTSVC extension frame.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_EXT_ALTSVC</span> <span class="o">=</span> <span class="mh">0x0a</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The BLOCKED extension frame.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_EXT_BLOCKED</span> <span class="o">=</span> <span class="mh">0x0b</span>
<span class="p">}</span> <span class="n">nghttp2_ext_frame_type</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * @enum</span>
<span class="cm"> *</span>
@ -620,21 +632,13 @@
<span class="cm"> */</span>
<span class="n">NGHTTP2_FLAG_END_SEGMENT</span> <span class="o">=</span> <span class="mh">0x02</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The PAD_LOW flag.</span>
<span class="cm"> * The PADDED flag.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_FLAG_PAD_LOW</span> <span class="o">=</span> <span class="mh">0x08</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The PAD_HIGH flag.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_FLAG_PAD_HIGH</span> <span class="o">=</span> <span class="mh">0x10</span><span class="p">,</span>
<span class="n">NGHTTP2_FLAG_PADDED</span> <span class="o">=</span> <span class="mh">0x08</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * The PRIORITY flag.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_FLAG_PRIORITY</span> <span class="o">=</span> <span class="mh">0x20</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * THE COMPRESSED flag.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_FLAG_COMPRESSED</span> <span class="o">=</span> <span class="mh">0x20</span>
<span class="n">NGHTTP2_FLAG_PRIORITY</span> <span class="o">=</span> <span class="mh">0x20</span>
<span class="p">}</span> <span class="n">nghttp2_flag</span><span class="p">;</span>
<span class="cm">/**</span>
@ -645,27 +649,19 @@
<span class="cm">/**</span>
<span class="cm"> * SETTINGS_HEADER_TABLE_SIZE</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_SETTINGS_HEADER_TABLE_SIZE</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">NGHTTP2_SETTINGS_HEADER_TABLE_SIZE</span> <span class="o">=</span> <span class="mh">0x01</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * SETTINGS_ENABLE_PUSH</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_SETTINGS_ENABLE_PUSH</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
<span class="n">NGHTTP2_SETTINGS_ENABLE_PUSH</span> <span class="o">=</span> <span class="mh">0x02</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * SETTINGS_MAX_CONCURRENT_STREAMS</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
<span class="n">NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS</span> <span class="o">=</span> <span class="mh">0x03</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * SETTINGS_INITIAL_WINDOW_SIZE</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * SETTINGS_COMPRESS_DATA</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_SETTINGS_COMPRESS_DATA</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Maximum ID of :type:`nghttp2_settings_id`.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_SETTINGS_MAX</span> <span class="o">=</span> <span class="mi">5</span>
<span class="n">NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE</span> <span class="o">=</span> <span class="mh">0x04</span>
<span class="p">}</span> <span class="n">nghttp2_settings_id</span><span class="p">;</span>
<span class="cm">/**</span>
@ -682,55 +678,55 @@
<span class="cm">/**</span>
<span class="cm"> * No errors.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_NO_ERROR</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="n">NGHTTP2_NO_ERROR</span> <span class="o">=</span> <span class="mh">0x00</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * PROTOCOL_ERROR</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_PROTOCOL_ERROR</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">NGHTTP2_PROTOCOL_ERROR</span> <span class="o">=</span> <span class="mh">0x01</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * INTERNAL_ERROR</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_INTERNAL_ERROR</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
<span class="n">NGHTTP2_INTERNAL_ERROR</span> <span class="o">=</span> <span class="mh">0x02</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * FLOW_CONTROL_ERROR</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_FLOW_CONTROL_ERROR</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
<span class="n">NGHTTP2_FLOW_CONTROL_ERROR</span> <span class="o">=</span> <span class="mh">0x03</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * SETTINGS_TIMEOUT</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_SETTINGS_TIMEOUT</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span>
<span class="n">NGHTTP2_SETTINGS_TIMEOUT</span> <span class="o">=</span> <span class="mh">0x04</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * STREAM_CLOSED</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_STREAM_CLOSED</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span>
<span class="n">NGHTTP2_STREAM_CLOSED</span> <span class="o">=</span> <span class="mh">0x05</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * FRAME_SIZE_ERROR</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_FRAME_SIZE_ERROR</span> <span class="o">=</span> <span class="mi">6</span><span class="p">,</span>
<span class="n">NGHTTP2_FRAME_SIZE_ERROR</span> <span class="o">=</span> <span class="mh">0x06</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * REFUSED_STREAM</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_REFUSED_STREAM</span> <span class="o">=</span> <span class="mi">7</span><span class="p">,</span>
<span class="n">NGHTTP2_REFUSED_STREAM</span> <span class="o">=</span> <span class="mh">0x07</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * CANCEL</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_CANCEL</span> <span class="o">=</span> <span class="mi">8</span><span class="p">,</span>
<span class="n">NGHTTP2_CANCEL</span> <span class="o">=</span> <span class="mh">0x08</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * COMPRESSION_ERROR</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_COMPRESSION_ERROR</span> <span class="o">=</span> <span class="mi">9</span><span class="p">,</span>
<span class="n">NGHTTP2_COMPRESSION_ERROR</span> <span class="o">=</span> <span class="mh">0x09</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * CONNECT_ERROR</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_CONNECT_ERROR</span> <span class="o">=</span> <span class="mi">10</span><span class="p">,</span>
<span class="n">NGHTTP2_CONNECT_ERROR</span> <span class="o">=</span> <span class="mh">0x0a</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * ENHANCE_YOUR_CALM</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_ENHANCE_YOUR_CALM</span> <span class="o">=</span> <span class="mi">11</span><span class="p">,</span>
<span class="n">NGHTTP2_ENHANCE_YOUR_CALM</span> <span class="o">=</span> <span class="mh">0x0b</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * INADEQUATE_SECURITY</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_INADEQUATE_SECURITY</span> <span class="o">=</span> <span class="mi">12</span>
<span class="n">NGHTTP2_INADEQUATE_SECURITY</span> <span class="o">=</span> <span class="mh">0x0c</span>
<span class="p">}</span> <span class="n">nghttp2_error_code</span><span class="p">;</span>
<span class="cm">/**</span>
@ -788,11 +784,7 @@
<span class="cm">/**</span>
<span class="cm"> * Indicates EOF was sensed.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_DATA_FLAG_EOF</span> <span class="o">=</span> <span class="mh">0x01</span><span class="p">,</span>
<span class="cm">/**</span>
<span class="cm"> * Indicates data was compressed by application.</span>
<span class="cm"> */</span>
<span class="n">NGHTTP2_DATA_FLAG_COMPRESSED</span> <span class="o">=</span> <span class="mh">0x02</span>
<span class="n">NGHTTP2_DATA_FLAG_EOF</span> <span class="o">=</span> <span class="mh">0x01</span>
<span class="p">}</span> <span class="n">nghttp2_data_flag</span><span class="p">;</span>
<span class="cm">/**</span>
@ -805,11 +797,6 @@
<span class="cm"> * them in |buf| and return number of data stored in |buf|. If EOF is</span>
<span class="cm"> * reached, set :enum:`NGHTTP2_DATA_FLAG_EOF` flag in |*data_flags|.</span>
<span class="cm"> *</span>
<span class="cm"> * To send compressed data payload without affecting content-length,</span>
<span class="cm"> * set :enum:`NGHTTP2_DATA_FLAG_COMPRESSED` flag in |*data_flags|.</span>
<span class="cm"> * Compression must be done by application prior to fill data in</span>
<span class="cm"> * |buf|.</span>
<span class="cm"> *</span>
<span class="cm"> * If the application wants to postpone DATA frames (e.g.,</span>
<span class="cm"> * asynchronous I/O, or reading data blocks for long time), it is</span>
<span class="cm"> * achieved by returning :enum:`NGHTTP2_ERR_DEFERRED` without reading</span>
@ -1105,7 +1092,7 @@
<span class="cm">/**</span>
<span class="cm"> * @struct</span>
<span class="cm"> *</span>
<span class="cm"> * The ALTSVC frame. It has following members:</span>
<span class="cm"> * The extension frame. It has following members:</span>
<span class="cm"> */</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
<span class="cm">/**</span>
@ -1113,6 +1100,25 @@
<span class="cm"> */</span>
<span class="n">nghttp2_frame_hd</span> <span class="n">hd</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * The pointer to extension payload. The exact pointer type is</span>
<span class="cm"> * determined by hd.type.</span>
<span class="cm"> *</span>
<span class="cm"> * If hd.type == :enum:`NGHTTP2_EXT_ALTSVC`, it is a pointer to</span>
<span class="cm"> * :type:`nghttp2_ext_altsvc`.</span>
<span class="cm"> *</span>
<span class="cm"> * If hd.type == :enum:`NGHTTP2_EXT_BLOCKED`, it points to ``NULL``,</span>
<span class="cm"> * since BLOCKED extension frame has no payload.</span>
<span class="cm"> */</span>
<span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">;</span>
<span class="p">}</span> <span class="n">nghttp2_extension</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * @struct</span>
<span class="cm"> *</span>
<span class="cm"> * The ALTSVC extension frame payload. It has following members:</span>
<span class="cm"> */</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
<span class="cm">/**</span>
<span class="cm"> * Protocol ID</span>
<span class="cm"> */</span>
<span class="kt">uint8_t</span> <span class="o">*</span><span class="n">protocol_id</span><span class="p">;</span>
@ -1144,19 +1150,7 @@
<span class="cm"> * Port</span>
<span class="cm"> */</span>
<span class="kt">uint16_t</span> <span class="n">port</span><span class="p">;</span>
<span class="p">}</span> <span class="n">nghttp2_altsvc</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * @struct</span>
<span class="cm"> *</span>
<span class="cm"> * The BLOCKED frame. It has following members:</span>
<span class="cm"> */</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
<span class="cm">/**</span>
<span class="cm"> * The frame header.</span>
<span class="cm"> */</span>
<span class="n">nghttp2_frame_hd</span> <span class="n">hd</span><span class="p">;</span>
<span class="p">}</span> <span class="n">nghttp2_blocked</span><span class="p">;</span>
<span class="p">}</span> <span class="n">nghttp2_ext_altsvc</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * @union</span>
@ -1207,13 +1201,9 @@
<span class="cm"> */</span>
<span class="n">nghttp2_window_update</span> <span class="n">window_update</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * The ALTSVC frame.</span>
<span class="cm"> * The extension frame.</span>
<span class="cm"> */</span>
<span class="n">nghttp2_altsvc</span> <span class="n">altsvc</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * The BLOCKED frame.</span>
<span class="cm"> */</span>
<span class="n">nghttp2_blocked</span> <span class="n">blocked</span><span class="p">;</span>
<span class="n">nghttp2_extension</span> <span class="n">ext</span><span class="p">;</span>
<span class="p">}</span> <span class="n">nghttp2_frame</span><span class="p">;</span>
<span class="cm">/**</span>
@ -1947,9 +1937,6 @@
<span class="cm"> * invalid,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_invalid_frame_recv_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 4. If the received frame type is unknown,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_unknown_frame_recv_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> *</span>
<span class="cm"> * This function returns 0 if it succeeds, or one of the following</span>
<span class="cm"> * negative error codes:</span>
@ -2159,13 +2146,13 @@
<span class="cm"> *</span>
<span class="cm"> * Signals the session so that the connection should be terminated.</span>
<span class="cm"> *</span>
<span class="cm"> * GOAWAY frame with the given |error_code| will be submitted if it</span>
<span class="cm"> * has not been transmitted. After the transmission, both</span>
<span class="cm"> * `nghttp2_session_want_read()` and `nghttp2_session_want_write()`</span>
<span class="cm"> * return 0. If GOAWAY frame has already transmitted at the time when</span>
<span class="cm"> * this function is invoked, `nghttp2_session_want_read()` and</span>
<span class="cm"> * `nghttp2_session_want_write()` returns 0 immediately after this</span>
<span class="cm"> * function succeeds.</span>
<span class="cm"> * The last stream ID is the ID of a stream for which</span>
<span class="cm"> * :type:`nghttp2_on_frame_recv_callback` was called most recently.</span>
<span class="cm"> *</span>
<span class="cm"> * The |error_code| is the error code of this GOAWAY frame.</span>
<span class="cm"> *</span>
<span class="cm"> * After the transmission, both `nghttp2_session_want_read()` and</span>
<span class="cm"> * `nghttp2_session_want_write()` return 0.</span>
<span class="cm"> *</span>
<span class="cm"> * This function should be called when the connection should be</span>
<span class="cm"> * terminated after sending GOAWAY. If the remaining streams should</span>
@ -2180,10 +2167,31 @@
<span class="kt">int</span> <span class="nf">nghttp2_session_terminate_session</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span>
<span class="n">nghttp2_error_code</span> <span class="n">error_code</span><span class="p">);</span>
<span class="cm">/**</span>
<span class="cm"> * @function</span>
<span class="cm"> *</span>
<span class="cm"> * Signals the session so that the connection should be terminated.</span>
<span class="cm"> *</span>
<span class="cm"> * This function behaves like `nghttp2_session_terminate_session()`,</span>
<span class="cm"> * but the last stream ID can be specified by the application for fine</span>
<span class="cm"> * grained control of stream.</span>
<span class="cm"> *</span>
<span class="cm"> * This function returns 0 if it succeeds, or one of the following</span>
<span class="cm"> * negative error codes:</span>
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_session_terminate_session2</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">last_stream_id</span><span class="p">,</span>
<span class="n">nghttp2_error_code</span> <span class="n">error_code</span><span class="p">);</span>
<span class="cm">/**</span>
<span class="cm"> * @function</span>
<span class="cm"> *</span>
<span class="cm"> * Returns the value of SETTINGS |id| notified by a remote endpoint.</span>
<span class="cm"> * The |id| must be one of values defined in</span>
<span class="cm"> * :enum:`nghttp2_settings_id`.</span>
<span class="cm"> */</span>
<span class="kt">uint32_t</span> <span class="nf">nghttp2_session_get_remote_settings</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span>
<span class="n">nghttp2_settings_id</span> <span class="n">id</span><span class="p">);</span>
@ -2395,6 +2403,8 @@
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |stream_id| is 0.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_response</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span>
@ -2461,6 +2471,8 @@
<span class="cm"> * :enum:`NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE`</span>
<span class="cm"> * No stream ID is available because maximum stream ID was</span>
<span class="cm"> * reached.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |stream_id| is 0.</span>
<span class="cm"> *</span>
<span class="cm"> * .. warning::</span>
<span class="cm"> *</span>
@ -2496,6 +2508,8 @@
<span class="cm"> * Out of memory.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_DATA_EXIST`</span>
<span class="cm"> * DATA has been already submitted and not fully processed yet.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |stream_id| is 0.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_data</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">flags</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span>
@ -2527,7 +2541,8 @@
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |pri_spec| is NULL; or trying to depend on itself.</span>
<span class="cm"> * The |stream_id| is 0; or the |pri_spec| is NULL; or trying to</span>
<span class="cm"> * depend on itself.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_priority</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">flags</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span>
@ -2547,6 +2562,8 @@
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |stream_id| is 0.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_rst_stream</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">flags</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span>
@ -2630,6 +2647,8 @@
<span class="cm"> * :enum:`NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE`</span>
<span class="cm"> * No stream ID is available because maximum stream ID was</span>
<span class="cm"> * reached.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |stream_id| is 0.</span>
<span class="cm"> *</span>
<span class="cm"> * .. warning::</span>
<span class="cm"> *</span>
@ -2672,7 +2691,8 @@
<span class="cm">/**</span>
<span class="cm"> * @function</span>
<span class="cm"> *</span>
<span class="cm"> * Submits GOAWAY frame with the error code |error_code|.</span>
<span class="cm"> * Submits GOAWAY frame with the last stream ID |last_stream_id| and</span>
<span class="cm"> * the error code |error_code|.</span>
<span class="cm"> *</span>
<span class="cm"> * The |flags| is currently ignored and should be</span>
<span class="cm"> * :enum:`NGHTTP2_FLAG_NONE`.</span>
@ -2684,15 +2704,22 @@
<span class="cm"> * keep this memory after the return of this function. If the</span>
<span class="cm"> * |opaque_data_len| is 0, the |opaque_data| could be ``NULL``.</span>
<span class="cm"> *</span>
<span class="cm"> * To shutdown gracefully, first send GOAWAY with ``last_stream_id =</span>
<span class="cm"> * (1u &lt;&lt; 31) - 1``. After 1 RTT, call either</span>
<span class="cm"> * `nghttp2_submit_goaway()`, `nghttp2_session_terminate_session()` or</span>
<span class="cm"> * `nghttp2_session_terminate_session2()`. The latter 2 will close</span>
<span class="cm"> * HTTP/2 session immediately after transmission of the frame.</span>
<span class="cm"> *</span>
<span class="cm"> * This function returns 0 if it succeeds, or one of the following</span>
<span class="cm"> * negative error codes:</span>
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> * NGHTTP2_ERR_INVALID_ARGUMENT</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |opaque_data_len| is too large.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_goaway</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">flags</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">last_stream_id</span><span class="p">,</span>
<span class="n">nghttp2_error_code</span> <span class="n">error_code</span><span class="p">,</span>
<span class="k">const</span> <span class="kt">uint8_t</span> <span class="o">*</span><span class="n">opaque_data</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">opaque_data_len</span><span class="p">);</span>
@ -3202,7 +3229,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>nghttp2ver.h &mdash; nghttp2 0.4.1 documentation</title>
<title>nghttp2ver.h &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<link rel="prev" title="nghttp2.h" href="nghttp2.h.html"/>
@ -171,7 +171,7 @@
<span class="cm"> * @macro</span>
<span class="cm"> * Version number of the nghttp2 library release</span>
<span class="cm"> */</span>
<span class="cp">#define NGHTTP2_VERSION &quot;0.4.1&quot;</span>
<span class="cp">#define NGHTTP2_VERSION &quot;0.4.2-DEV&quot;</span>
<span class="cm">/**</span>
<span class="cm"> * @macro</span>
@ -179,7 +179,7 @@
<span class="cm"> * release. This is a 24 bit number with 8 bits for major number, 8 bits</span>
<span class="cm"> * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.</span>
<span class="cm"> */</span>
<span class="cp">#define NGHTTP2_VERSION_NUM 0x000401</span>
<span class="cp">#define NGHTTP2_VERSION_NUM 0x000402</span>
<span class="cp">#endif </span><span class="cm">/* NGHTTP2VER_H */</span><span class="cp"></span>
</pre></div>
@ -222,7 +222,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>nghttpx - HOW-TO &mdash; nghttp2 0.4.1 documentation</title>
<title>nghttpx - HOW-TO &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<link rel="next" title="API Reference" href="apiref.html"/>
<link rel="prev" title="Tutorial: HTTP/2 server" href="tutorial-server.html"/>
@ -378,7 +378,7 @@ do with HTTP/2 flow control.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

Binary file not shown.

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>nghttp2 - HTTP/2 C Library &mdash; nghttp2 0.4.1 documentation</title>
<title>nghttp2 - HTTP/2 C Library &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<link rel="next" title="Tutorial: HTTP/2 client" href="tutorial-client.html"/>
<link rel="prev" title="nghttp2 - HTTP/2 C Library" href="index.html"/>
@ -141,37 +141,53 @@
<div class="section" id="nghttp2-http-2-c-library">
<h1>nghttp2 - HTTP/2 C Library<a class="headerlink" href="#nghttp2-http-2-c-library" title="Permalink to this headline"></a></h1>
<p>This is an experimental implementation of Hypertext Transfer Protocol
version 2.</p>
<p>This is an implementation of Hypertext Transfer Protocol version 2
in C.</p>
<p>The framing layer of HTTP/2 is implemented as form of reusable C
library. On top of that, we have implemented HTTP/2 client, server
and proxy. Also we have developed load test/benchmarking tool for
HTTP/2 and SPDY.</p>
<p>HPACK encoding and decoding are available as public API.</p>
<p>We didn&#8217;t cover everything, but we have Python binding of this libary.</p>
<div class="section" id="development-status">
<h2>Development Status<a class="headerlink" href="#development-status" title="Permalink to this headline"></a></h2>
<p>We started to implement h2-12
(<a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-http2-12">http://tools.ietf.org/html/draft-ietf-httpbis-http2-12</a>) and the
<p>We started to implement h2-13
(<a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-http2-13">http://tools.ietf.org/html/draft-ietf-httpbis-http2-13</a>) and the
header compression
(<a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07">http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07</a>).</p>
(<a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-08">http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-08</a>).</p>
<p>The nghttp2 code base was forked from spdylay project.</p>
<table border="1" class="docutils">
<colgroup>
<col width="84%" />
<col width="16%" />
<col width="79%" />
<col width="21%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Features</th>
<th class="head">h2-12</th>
<tr class="row-odd"><th class="head">HTTP/2 Features</th>
<th class="head">Support</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td>Dependency based priority</td>
<td>Done</td>
<tr class="row-even"><td>Core frames handling</td>
<td>Yes</td>
</tr>
<tr class="row-odd"><td>BLOCKED frame</td>
<td>Done</td>
<tr class="row-odd"><td>Dependency Tree</td>
<td>Yes</td>
</tr>
<tr class="row-even"><td>COMPRESSED DATA</td>
<td>Done</td>
<tr class="row-even"><td>Large header (CONTINUATION)</td>
<td>Yes</td>
</tr>
<tr class="row-odd"><td>BLOCKED extension</td>
<td>Yes *1</td>
</tr>
<tr class="row-even"><td>ALTSVC extension</td>
<td>Yes *2</td>
</tr>
</tbody>
</table>
<ul class="simple">
<li>*1 As described in draft-12.</li>
<li>*2 As described in draft-12, but reserved byte was removed.</li>
</ul>
</div>
<div class="section" id="public-test-server">
<h2>Public Test Server<a class="headerlink" href="#public-test-server" title="Permalink to this headline"></a></h2>
@ -179,11 +195,13 @@ header compression
implementation.</p>
<ul>
<li><p class="first"><a class="reference external" href="https://nghttp2.org/">https://nghttp2.org/</a> (TLS + NPN)</p>
<p>NPN offer <tt class="docutils literal"><span class="pre">h2-12</span></tt>, <tt class="docutils literal"><span class="pre">spdy/3.1</span></tt> and <tt class="docutils literal"><span class="pre">http/1.1</span></tt>.
<p>NPN offer <tt class="docutils literal"><span class="pre">h2-13</span></tt>, <tt class="docutils literal"><span class="pre">spdy/3.1</span></tt> and <tt class="docutils literal"><span class="pre">http/1.1</span></tt>.
ALPN is currently disabled.</p>
<p>This endpoint requires TLSv1.2 and DHE or EDCHE with GCM cipher
suite for HTTP/2 connection.</p>
</li>
<li><p class="first"><a class="reference external" href="http://nghttp2.org/">http://nghttp2.org/</a> (Upgrade / Direct)</p>
<p><tt class="docutils literal"><span class="pre">h2c-12</span></tt> and <tt class="docutils literal"><span class="pre">http/1.1</span></tt>. We configured this server to send
<p><tt class="docutils literal"><span class="pre">h2c-13</span></tt> and <tt class="docutils literal"><span class="pre">http/1.1</span></tt>. We configured this server to send
ALTSVC frame or Alt-Svc header field to announce that alternative
service is available at port 443.</p>
</li>
@ -303,10 +321,10 @@ with prior knowledge, HTTP Upgrade and NPN/ALPN TLS extension.</p>
output from <tt class="docutils literal"><span class="pre">nghttp</span></tt> client:</p>
<div class="highlight-c"><div class="highlight"><pre>$ src/nghttp -nv https://nghttp2.org
[ 0.033][NPN] server offers:
* h2-12
* h2-13
* spdy/3.1
* http/1.1
The negotiated protocol: h2-12
The negotiated protocol: h2-13
[ 0.068] send SETTINGS frame &lt;length=15, flags=0x00, stream_id=0&gt;
(niv=3)
[SETTINGS_MAX_CONCURRENT_STREAMS(3):100]
@ -375,7 +393,7 @@ The negotiated protocol: h2-12
GET / HTTP/1.1
Host: nghttp2.org
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c-12
Upgrade: h2c-13
HTTP2-Settings: AwAAAGQEAAD__wUAAAAB
Accept: */*
User-Agent: nghttp2/0.4.0-DEV
@ -384,7 +402,7 @@ User-Agent: nghttp2/0.4.0-DEV
[ 0.024] HTTP Upgrade response
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c-12
Upgrade: h2c-13
[ 0.024] HTTP Upgrade success
@ -398,7 +416,7 @@ Upgrade: h2c-12
[SETTINGS_MAX_CONCURRENT_STREAMS(3):100]
[SETTINGS_INITIAL_WINDOW_SIZE(4):65535]
[ 0.024] recv ALTSVC frame &lt;length=43, flags=0x00, stream_id=0&gt;
(max-age=86400, port=443, protocol_id=h2-12, host=nghttp2.org, origin=http://nghttp2.org)
(max-age=86400, port=443, protocol_id=h2-13, host=nghttp2.org, origin=http://nghttp2.org)
[ 0.024] send SETTINGS frame &lt;length=0, flags=0x01, stream_id=0&gt;
; ACK
(niv=0)
@ -503,8 +521,8 @@ IPv6: listen on port 8080
</div>
<div class="section" id="nghttpx-proxy">
<h3>nghttpx - proxy<a class="headerlink" href="#nghttpx-proxy" title="Permalink to this headline"></a></h3>
<p><tt class="docutils literal"><span class="pre">nghttpx</span></tt> is a multi-threaded reverse proxy for
<tt class="docutils literal"><span class="pre">h2-12</span></tt>, SPDY and HTTP/1.1. It has several operation modes:</p>
<p><tt class="docutils literal"><span class="pre">nghttpx</span></tt> is a multi-threaded reverse proxy for <tt class="docutils literal"><span class="pre">h2-13</span></tt>, SPDY and
HTTP/1.1 and powers nghttp2.org site. It has several operation modes:</p>
<table border="1" class="docutils">
<colgroup>
<col width="25%" />
@ -548,7 +566,7 @@ IPv6: listen on port 8080
</tbody>
</table>
<p>The interesting mode at the moment is the default mode. It works like
a reverse proxy and listens for <tt class="docutils literal"><span class="pre">h2-12</span></tt>, SPDY and HTTP/1.1 and can
a reverse proxy and listens for <tt class="docutils literal"><span class="pre">h2-13</span></tt>, SPDY and HTTP/1.1 and can
be deployed SSL/TLS terminator for existing web server.</p>
<p>The default mode, <tt class="docutils literal"><span class="pre">--http2-proxy</span></tt> and <tt class="docutils literal"><span class="pre">--http2-bridge</span></tt> modes use
SSL/TLS in the frontend connection by default. To disable SSL/TLS,
@ -1203,7 +1221,7 @@ BaseRequestHandler usage:</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Python Module Index &mdash; nghttp2 0.4.1 documentation</title>
<title>Python Module Index &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<script type="text/javascript">
@ -191,7 +191,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Python API Reference &mdash; nghttp2 0.4.1 documentation</title>
<title>Python API Reference &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<link rel="next" title="nghttp2.h" href="nghttp2.h.html"/>
<link rel="prev" title="API Reference" href="apiref.html"/>
@ -518,7 +518,7 @@ encoded using UTF-8.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Search &mdash; nghttp2 0.4.1 documentation</title>
<title>Search &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
@ -179,7 +179,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tutorial: HTTP/2 client &mdash; nghttp2 0.4.1 documentation</title>
<title>Tutorial: HTTP/2 client &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<link rel="next" title="Tutorial: HTTP/2 server" href="tutorial-server.html"/>
<link rel="prev" title="nghttp2 - HTTP/2 C Library" href="package_README.html"/>
@ -380,17 +380,22 @@ data is available to read in the bufferevent input buffer:</p>
<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">readcb</span><span class="p">(</span><span class="k">struct</span> <span class="n">bufferevent</span> <span class="o">*</span><span class="n">bev</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">http2_session_data</span> <span class="o">*</span><span class="n">session_data</span> <span class="o">=</span> <span class="p">(</span><span class="n">http2_session_data</span><span class="o">*</span><span class="p">)</span><span class="n">ptr</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">rv</span><span class="p">;</span>
<span class="kt">ssize_t</span> <span class="n">readlen</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">evbuffer</span> <span class="o">*</span><span class="n">input</span> <span class="o">=</span> <span class="n">bufferevent_get_input</span><span class="p">(</span><span class="n">bev</span><span class="p">);</span>
<span class="kt">size_t</span> <span class="n">datalen</span> <span class="o">=</span> <span class="n">evbuffer_get_length</span><span class="p">(</span><span class="n">input</span><span class="p">);</span>
<span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="n">evbuffer_pullup</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<span class="n">rv</span> <span class="o">=</span> <span class="n">nghttp2_session_mem_recv</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">session</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">datalen</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">rv</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: %s&quot;</span><span class="p">,</span> <span class="n">nghttp2_strerror</span><span class="p">(</span><span class="n">rv</span><span class="p">));</span>
<span class="n">readlen</span> <span class="o">=</span> <span class="n">nghttp2_session_mem_recv</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">session</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">datalen</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">readlen</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: %s&quot;</span><span class="p">,</span> <span class="n">nghttp2_strerror</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">readlen</span><span class="p">));</span>
<span class="n">delete_http2_session_data</span><span class="p">(</span><span class="n">session_data</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="n">evbuffer_drain</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="n">readlen</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: evbuffer_drain failed&quot;</span><span class="p">);</span>
<span class="n">delete_http2_session_data</span><span class="p">(</span><span class="n">session_data</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">evbuffer_drain</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="n">rv</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">session_send</span><span class="p">(</span><span class="n">session_data</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">delete_http2_session_data</span><span class="p">(</span><span class="n">session_data</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
@ -988,17 +993,22 @@ here.</p>
<span class="k">static</span> <span class="kt">void</span> <span class="nf">readcb</span><span class="p">(</span><span class="k">struct</span> <span class="n">bufferevent</span> <span class="o">*</span><span class="n">bev</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">http2_session_data</span> <span class="o">*</span><span class="n">session_data</span> <span class="o">=</span> <span class="p">(</span><span class="n">http2_session_data</span><span class="o">*</span><span class="p">)</span><span class="n">ptr</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">rv</span><span class="p">;</span>
<span class="kt">ssize_t</span> <span class="n">readlen</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">evbuffer</span> <span class="o">*</span><span class="n">input</span> <span class="o">=</span> <span class="n">bufferevent_get_input</span><span class="p">(</span><span class="n">bev</span><span class="p">);</span>
<span class="kt">size_t</span> <span class="n">datalen</span> <span class="o">=</span> <span class="n">evbuffer_get_length</span><span class="p">(</span><span class="n">input</span><span class="p">);</span>
<span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="n">evbuffer_pullup</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<span class="n">rv</span> <span class="o">=</span> <span class="n">nghttp2_session_mem_recv</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">session</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">datalen</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">rv</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: %s&quot;</span><span class="p">,</span> <span class="n">nghttp2_strerror</span><span class="p">(</span><span class="n">rv</span><span class="p">));</span>
<span class="n">readlen</span> <span class="o">=</span> <span class="n">nghttp2_session_mem_recv</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">session</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">datalen</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">readlen</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: %s&quot;</span><span class="p">,</span> <span class="n">nghttp2_strerror</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">readlen</span><span class="p">));</span>
<span class="n">delete_http2_session_data</span><span class="p">(</span><span class="n">session_data</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="n">evbuffer_drain</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="n">readlen</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: evbuffer_drain failed&quot;</span><span class="p">);</span>
<span class="n">delete_http2_session_data</span><span class="p">(</span><span class="n">session_data</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">evbuffer_drain</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="n">rv</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">session_send</span><span class="p">(</span><span class="n">session_data</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">delete_http2_session_data</span><span class="p">(</span><span class="n">session_data</span><span class="p">);</span>
<span class="k">return</span><span class="p">;</span>
@ -1178,7 +1188,7 @@ here.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tutorial: HTTP/2 server &mdash; nghttp2 0.4.1 documentation</title>
<title>Tutorial: HTTP/2 server &mdash; nghttp2 0.4.2-DEV documentation</title>
@ -28,7 +28,7 @@
<link rel="top" title="nghttp2 0.4.1 documentation" href="index.html"/>
<link rel="top" title="nghttp2 0.4.2-DEV documentation" href="index.html"/>
<link rel="next" title="nghttpx - HOW-TO" href="nghttpx-howto.html"/>
<link rel="prev" title="Tutorial: HTTP/2 client" href="tutorial-client.html"/>
@ -171,11 +171,10 @@ life time:</p>
<span class="kt">void</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
<span class="p">{</span>
<span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="n">next_proto_list</span><span class="p">;</span>
<span class="o">*</span><span class="n">len</span> <span class="o">=</span> <span class="n">next_proto_list_len</span><span class="p">;</span>
<span class="o">*</span><span class="n">len</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n">next_proto_list_len</span><span class="p">;</span>
<span class="k">return</span> <span class="n">SSL_TLSEXT_ERR_OK</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">static</span> <span class="n">SSL_CTX</span><span class="o">*</span> <span class="nf">create_ssl_ctx</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">key_file</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">cert_file</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">SSL_CTX</span> <span class="o">*</span><span class="n">ssl_ctx</span><span class="p">;</span>
@ -417,16 +416,20 @@ functions for these pending data. To process received data, we call
<tt class="docutils literal"><span class="pre">session_recv()</span></tt> function:</p>
<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">session_recv</span><span class="p">(</span><span class="n">http2_session_data</span> <span class="o">*</span><span class="n">session_data</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">int</span> <span class="n">rv</span><span class="p">;</span>
<span class="kt">ssize_t</span> <span class="n">readlen</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">evbuffer</span> <span class="o">*</span><span class="n">input</span> <span class="o">=</span> <span class="n">bufferevent_get_input</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">bev</span><span class="p">);</span>
<span class="kt">size_t</span> <span class="n">datalen</span> <span class="o">=</span> <span class="n">evbuffer_get_length</span><span class="p">(</span><span class="n">input</span><span class="p">);</span>
<span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="n">evbuffer_pullup</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<span class="n">rv</span> <span class="o">=</span> <span class="n">nghttp2_session_mem_recv</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">session</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">datalen</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">rv</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: %s&quot;</span><span class="p">,</span> <span class="n">nghttp2_strerror</span><span class="p">(</span><span class="n">rv</span><span class="p">));</span>
<span class="n">readlen</span> <span class="o">=</span> <span class="n">nghttp2_session_mem_recv</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">session</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">datalen</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">readlen</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: %s&quot;</span><span class="p">,</span> <span class="n">nghttp2_strerror</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">readlen</span><span class="p">));</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="n">evbuffer_drain</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="n">readlen</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: evbuffer_drain failed&quot;</span><span class="p">);</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">evbuffer_drain</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="n">rv</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">session_send</span><span class="p">(</span><span class="n">session_data</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
@ -799,7 +802,7 @@ stream is about to close and we no longer use that object.</p>
<span class="kt">void</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
<span class="p">{</span>
<span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="n">next_proto_list</span><span class="p">;</span>
<span class="o">*</span><span class="n">len</span> <span class="o">=</span> <span class="n">next_proto_list_len</span><span class="p">;</span>
<span class="o">*</span><span class="n">len</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n">next_proto_list_len</span><span class="p">;</span>
<span class="k">return</span> <span class="n">SSL_TLSEXT_ERR_OK</span><span class="p">;</span>
<span class="p">}</span>
@ -956,16 +959,20 @@ stream is about to close and we no longer use that object.</p>
<span class="cm"> function. */</span>
<span class="k">static</span> <span class="kt">int</span> <span class="nf">session_recv</span><span class="p">(</span><span class="n">http2_session_data</span> <span class="o">*</span><span class="n">session_data</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">int</span> <span class="n">rv</span><span class="p">;</span>
<span class="kt">ssize_t</span> <span class="n">readlen</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">evbuffer</span> <span class="o">*</span><span class="n">input</span> <span class="o">=</span> <span class="n">bufferevent_get_input</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">bev</span><span class="p">);</span>
<span class="kt">size_t</span> <span class="n">datalen</span> <span class="o">=</span> <span class="n">evbuffer_get_length</span><span class="p">(</span><span class="n">input</span><span class="p">);</span>
<span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="n">evbuffer_pullup</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<span class="n">rv</span> <span class="o">=</span> <span class="n">nghttp2_session_mem_recv</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">session</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">datalen</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">rv</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: %s&quot;</span><span class="p">,</span> <span class="n">nghttp2_strerror</span><span class="p">(</span><span class="n">rv</span><span class="p">));</span>
<span class="n">readlen</span> <span class="o">=</span> <span class="n">nghttp2_session_mem_recv</span><span class="p">(</span><span class="n">session_data</span><span class="o">-&gt;</span><span class="n">session</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">datalen</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">readlen</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: %s&quot;</span><span class="p">,</span> <span class="n">nghttp2_strerror</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">readlen</span><span class="p">));</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="n">evbuffer_drain</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="n">readlen</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">warnx</span><span class="p">(</span><span class="s">&quot;Fatal error: evbuffer_drain failed&quot;</span><span class="p">);</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">evbuffer_drain</span><span class="p">(</span><span class="n">input</span><span class="p">,</span> <span class="n">rv</span><span class="p">);</span>
<span class="k">if</span><span class="p">(</span><span class="n">session_send</span><span class="p">(</span><span class="n">session_data</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
@ -1082,6 +1089,7 @@ stream is about to close and we no longer use that object.</p>
<span class="n">http2_stream_data</span> <span class="o">*</span><span class="n">stream_data</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">int</span> <span class="n">rv</span><span class="p">;</span>
<span class="kt">ssize_t</span> <span class="n">writelen</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">pipefd</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
<span class="n">nghttp2_nv</span> <span class="n">hdrs</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
<span class="n">MAKE_NV</span><span class="p">(</span><span class="s">&quot;:status&quot;</span><span class="p">,</span> <span class="s">&quot;404&quot;</span><span class="p">)</span>
@ -1100,10 +1108,10 @@ stream is about to close and we no longer use that object.</p>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">rv</span> <span class="o">=</span> <span class="n">write</span><span class="p">(</span><span class="n">pipefd</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">ERROR_HTML</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">ERROR_HTML</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<span class="n">writelen</span> <span class="o">=</span> <span class="n">write</span><span class="p">(</span><span class="n">pipefd</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">ERROR_HTML</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">ERROR_HTML</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<span class="n">close</span><span class="p">(</span><span class="n">pipefd</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
<span class="k">if</span><span class="p">(</span><span class="n">rv</span> <span class="o">!=</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">ERROR_HTML</span><span class="p">))</span> <span class="p">{</span>
<span class="k">if</span><span class="p">(</span><span class="n">writelen</span> <span class="o">!=</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">ERROR_HTML</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="n">close</span><span class="p">(</span><span class="n">pipefd</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
@ -1513,7 +1521,7 @@ stream is about to close and we no longer use that object.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.4.1',
VERSION:'0.4.2-DEV',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false