2714 lines
202 KiB
HTML
2714 lines
202 KiB
HTML
|
|
|
|
|
|
<!DOCTYPE html>
|
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<title>API Reference — nghttp2 0.4.0-DEV documentation</title>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
var DOCUMENTATION_OPTIONS = {
|
|
URL_ROOT:'',
|
|
VERSION:'0.4.0-DEV',
|
|
COLLAPSE_INDEX:false,
|
|
FILE_SUFFIX:'.html',
|
|
HAS_SOURCE: false
|
|
};
|
|
</script>
|
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
|
<script type="text/javascript" src="_static/js/theme.js"></script>
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
jQuery(function () {
|
|
SphinxRtdTheme.StickyNav.enable();
|
|
});
|
|
</script>
|
|
|
|
|
|
|
|
<link rel="top" title="nghttp2 0.4.0-DEV documentation" href="index.html"/>
|
|
<link rel="next" title="nghttp2.h" href="nghttp2.h.html"/>
|
|
<link rel="prev" title="Tutorial: HTTP/2.0 server" href="tutorial-server.html"/>
|
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
|
|
|
|
</head>
|
|
|
|
<body class="wy-body-for-nav" role="document">
|
|
|
|
<div class="wy-grid-for-nav">
|
|
|
|
|
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
<div class="wy-side-nav-search">
|
|
<a href="index.html" class="fa fa-home"> nghttp2</a>
|
|
<div role="search">
|
|
<form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
|
|
<input type="text" name="q" placeholder="Search docs" />
|
|
<input type="hidden" name="check_keywords" value="yes" />
|
|
<input type="hidden" name="area" value="default" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
|
|
|
|
|
<ul class="current">
|
|
<li class="toctree-l1"><a class="reference internal" href="package_README.html">nghttp2 - HTTP/2.0 C Library</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="package_README.html#development-status">Development Status</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="package_README.html#public-test-server">Public Test Server</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="package_README.html#requirements">Requirements</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="package_README.html#build-from-git">Build from git</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="package_README.html#building-documentation">Building documentation</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="package_README.html#client-server-and-proxy-programs">Client, Server and Proxy programs</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="package_README.html#hpack-tools">HPACK tools</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="package_README.html#python-bindings">Python bindings</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="tutorial-client.html">Tutorial: HTTP/2.0 client</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="tutorial-client.html#libevent-client-c">libevent-client.c</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="tutorial-server.html">Tutorial: HTTP/2.0 server</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="tutorial-server.html#libevent-server-c">libevent-server.c</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1 current"><a class="current reference internal" href="">API Reference</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="#includes">Includes</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#remarks">Remarks</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#macros">Macros</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#enums">Enums</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#types-structs-unions-and-typedefs">Types (structs, unions and typedefs)</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#functions">Functions</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="nghttp2.h.html">nghttp2.h</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="nghttp2ver.h.html">nghttp2ver.h</a></li>
|
|
<li class="toctree-l1"><a class="reference external" href="https://github.com/tatsuhiro-t/nghttp2">Source</a></li>
|
|
<li class="toctree-l1"><a class="reference external" href="https://github.com/tatsuhiro-t/nghttp2/issues">Issues</a></li>
|
|
</ul>
|
|
|
|
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
|
|
|
|
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
<a href="index.html">nghttp2</a>
|
|
</nav>
|
|
|
|
|
|
|
|
<div class="wy-nav-content">
|
|
<div class="rst-content">
|
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
|
<ul class="wy-breadcrumbs">
|
|
<li><a href="index.html">Docs</a> »</li>
|
|
|
|
<li>API Reference</li>
|
|
<li class="wy-breadcrumbs-aside">
|
|
|
|
</li>
|
|
</ul>
|
|
<hr/>
|
|
</div>
|
|
<div role="main">
|
|
|
|
<div class="section" id="api-reference">
|
|
<h1>API Reference<a class="headerlink" href="#api-reference" title="Permalink to this headline">¶</a></h1>
|
|
<div class="section" id="includes">
|
|
<h2>Includes<a class="headerlink" href="#includes" title="Permalink to this headline">¶</a></h2>
|
|
<p>To use the public APIs, include <tt class="docutils literal"><span class="pre">nghttp2/nghttp2.h</span></tt>:</p>
|
|
<div class="highlight-c"><div class="highlight"><pre><span class="cp">#include <nghttp2/nghttp2.h></span>
|
|
</pre></div>
|
|
</div>
|
|
<p>The header files are also available online: <a class="reference internal" href="nghttp2.h.html"><em>nghttp2.h</em></a> and
|
|
<a class="reference internal" href="nghttp2ver.h.html"><em>nghttp2ver.h</em></a>.</p>
|
|
</div>
|
|
<div class="section" id="remarks">
|
|
<h2>Remarks<a class="headerlink" href="#remarks" title="Permalink to this headline">¶</a></h2>
|
|
<p>Do not call <a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a>, <a class="reference internal" href="#nghttp2_session_mem_send" title="nghttp2_session_mem_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_send()</span></tt></a>,
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> or <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a> from the nghttp2
|
|
callback functions directly or indirectly. It will lead to the
|
|
crash. You can submit requests or frames in the callbacks then call
|
|
these functions outside the callbacks.</p>
|
|
</div>
|
|
<div class="section" id="macros">
|
|
<h2>Macros<a class="headerlink" href="#macros" title="Permalink to this headline">¶</a></h2>
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_VERSION">
|
|
<tt class="descname">NGHTTP2_VERSION</tt><a class="headerlink" href="#NGHTTP2_VERSION" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Version number of the nghttp2 library release</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_VERSION_NUM">
|
|
<tt class="descname">NGHTTP2_VERSION_NUM</tt><a class="headerlink" href="#NGHTTP2_VERSION_NUM" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Numerical representation of the version number of the nghttp2 library
|
|
release. This is a 24 bit number with 8 bits for major number, 8 bits
|
|
for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_PROTO_VERSION_ID">
|
|
<tt class="descname">NGHTTP2_PROTO_VERSION_ID</tt><a class="headerlink" href="#NGHTTP2_PROTO_VERSION_ID" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The protocol version identification of this library supports.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_PROTO_VERSION_ID_LEN">
|
|
<tt class="descname">NGHTTP2_PROTO_VERSION_ID_LEN</tt><a class="headerlink" href="#NGHTTP2_PROTO_VERSION_ID_LEN" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The length of <a class="reference internal" href="#NGHTTP2_PROTO_VERSION_ID" title="NGHTTP2_PROTO_VERSION_ID"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_PROTO_VERSION_ID</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_VERSION_AGE">
|
|
<tt class="descname">NGHTTP2_VERSION_AGE</tt><a class="headerlink" href="#NGHTTP2_VERSION_AGE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The age of <a class="reference internal" href="#nghttp2_info" title="nghttp2_info"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_info</span></tt></a></p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_PRI_DEFAULT">
|
|
<tt class="descname">NGHTTP2_PRI_DEFAULT</tt><a class="headerlink" href="#NGHTTP2_PRI_DEFAULT" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The default priority value</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_PRI_LOWEST">
|
|
<tt class="descname">NGHTTP2_PRI_LOWEST</tt><a class="headerlink" href="#NGHTTP2_PRI_LOWEST" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The lowest priority value</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_MAX_WINDOW_SIZE">
|
|
<tt class="descname">NGHTTP2_MAX_WINDOW_SIZE</tt><a class="headerlink" href="#NGHTTP2_MAX_WINDOW_SIZE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The maximum window size</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_INITIAL_WINDOW_SIZE">
|
|
<tt class="descname">NGHTTP2_INITIAL_WINDOW_SIZE</tt><a class="headerlink" href="#NGHTTP2_INITIAL_WINDOW_SIZE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The initial window size for stream level flow control.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE">
|
|
<tt class="descname">NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE</tt><a class="headerlink" href="#NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The initial window size for connection level flow control.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_MAX_HEADER_TABLE_SIZE">
|
|
<tt class="descname">NGHTTP2_MAX_HEADER_TABLE_SIZE</tt><a class="headerlink" href="#NGHTTP2_MAX_HEADER_TABLE_SIZE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The maximum header table size.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_CLIENT_CONNECTION_HEADER">
|
|
<tt class="descname">NGHTTP2_CLIENT_CONNECTION_HEADER</tt><a class="headerlink" href="#NGHTTP2_CLIENT_CONNECTION_HEADER" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The client connection header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_CLIENT_CONNECTION_HEADER_LEN">
|
|
<tt class="descname">NGHTTP2_CLIENT_CONNECTION_HEADER_LEN</tt><a class="headerlink" href="#NGHTTP2_CLIENT_CONNECTION_HEADER_LEN" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The length of <a class="reference internal" href="#NGHTTP2_CLIENT_CONNECTION_HEADER" title="NGHTTP2_CLIENT_CONNECTION_HEADER"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_CLIENT_CONNECTION_HEADER</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS">
|
|
<tt class="descname">NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS</tt><a class="headerlink" href="#NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Default maximum concurrent streams.</p>
|
|
</dd></dl>
|
|
|
|
</div>
|
|
<div class="section" id="enums">
|
|
<h2>Enums<a class="headerlink" href="#enums" title="Permalink to this headline">¶</a></h2>
|
|
<dl class="type">
|
|
<dt id="nghttp2_error">
|
|
<tt class="descname">nghttp2_error</tt><a class="headerlink" href="#nghttp2_error" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Error codes used in this library. The code range is [-999, -500],
|
|
inclusive. The following values are defined:</p>
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_INVALID_ARGUMENT">
|
|
<tt class="descname">NGHTTP2_ERR_INVALID_ARGUMENT</tt><a class="headerlink" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-501</span></tt>)
|
|
Invalid argument passed.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_UNSUPPORTED_VERSION">
|
|
<tt class="descname">NGHTTP2_ERR_UNSUPPORTED_VERSION</tt><a class="headerlink" href="#NGHTTP2_ERR_UNSUPPORTED_VERSION" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-503</span></tt>)
|
|
The specified protocol version is not supported.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_WOULDBLOCK">
|
|
<tt class="descname">NGHTTP2_ERR_WOULDBLOCK</tt><a class="headerlink" href="#NGHTTP2_ERR_WOULDBLOCK" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-504</span></tt>)
|
|
Used as a return value from <a class="reference internal" href="#nghttp2_send_callback" title="nghttp2_send_callback"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_send_callback</span></tt></a> and
|
|
<a class="reference internal" href="#nghttp2_recv_callback" title="nghttp2_recv_callback"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_recv_callback</span></tt></a> to indicate that the operation
|
|
would block.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_PROTO">
|
|
<tt class="descname">NGHTTP2_ERR_PROTO</tt><a class="headerlink" href="#NGHTTP2_ERR_PROTO" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-505</span></tt>)
|
|
General protocol error</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_INVALID_FRAME">
|
|
<tt class="descname">NGHTTP2_ERR_INVALID_FRAME</tt><a class="headerlink" href="#NGHTTP2_ERR_INVALID_FRAME" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-506</span></tt>)
|
|
The frame is invalid.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_EOF">
|
|
<tt class="descname">NGHTTP2_ERR_EOF</tt><a class="headerlink" href="#NGHTTP2_ERR_EOF" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-507</span></tt>)
|
|
The peer performed a shutdown on the connection.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_DEFERRED">
|
|
<tt class="descname">NGHTTP2_ERR_DEFERRED</tt><a class="headerlink" href="#NGHTTP2_ERR_DEFERRED" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-508</span></tt>)
|
|
Used as a return value from
|
|
<a class="reference internal" href="#nghttp2_data_source_read_callback" title="nghttp2_data_source_read_callback"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_data_source_read_callback()</span></tt></a> to indicate that data
|
|
transfer is postponed. See
|
|
<a class="reference internal" href="#nghttp2_data_source_read_callback" title="nghttp2_data_source_read_callback"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_data_source_read_callback()</span></tt></a> for details.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE">
|
|
<tt class="descname">NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE</tt><a class="headerlink" href="#NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-509</span></tt>)
|
|
Stream ID has reached the maximum value. Therefore no stream ID
|
|
is available.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_STREAM_CLOSED">
|
|
<tt class="descname">NGHTTP2_ERR_STREAM_CLOSED</tt><a class="headerlink" href="#NGHTTP2_ERR_STREAM_CLOSED" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-510</span></tt>)
|
|
The stream is already closed; or the stream ID is invalid.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_STREAM_CLOSING">
|
|
<tt class="descname">NGHTTP2_ERR_STREAM_CLOSING</tt><a class="headerlink" href="#NGHTTP2_ERR_STREAM_CLOSING" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-511</span></tt>)
|
|
RST_STREAM has been added to the outbound queue. The stream is in
|
|
closing state.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_STREAM_SHUT_WR">
|
|
<tt class="descname">NGHTTP2_ERR_STREAM_SHUT_WR</tt><a class="headerlink" href="#NGHTTP2_ERR_STREAM_SHUT_WR" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-512</span></tt>)
|
|
The transmission is not allowed for this stream (e.g., a frame
|
|
with END_STREAM flag set has already sent).</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_INVALID_STREAM_ID">
|
|
<tt class="descname">NGHTTP2_ERR_INVALID_STREAM_ID</tt><a class="headerlink" href="#NGHTTP2_ERR_INVALID_STREAM_ID" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-513</span></tt>)
|
|
The stream ID is invalid.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_INVALID_STREAM_STATE">
|
|
<tt class="descname">NGHTTP2_ERR_INVALID_STREAM_STATE</tt><a class="headerlink" href="#NGHTTP2_ERR_INVALID_STREAM_STATE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-514</span></tt>)
|
|
The state of the stream is not valid (e.g., DATA cannot be sent
|
|
to the stream if response HEADERS has not been sent).</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_DEFERRED_DATA_EXIST">
|
|
<tt class="descname">NGHTTP2_ERR_DEFERRED_DATA_EXIST</tt><a class="headerlink" href="#NGHTTP2_ERR_DEFERRED_DATA_EXIST" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-515</span></tt>)
|
|
Another DATA frame has already been deferred.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_START_STREAM_NOT_ALLOWED">
|
|
<tt class="descname">NGHTTP2_ERR_START_STREAM_NOT_ALLOWED</tt><a class="headerlink" href="#NGHTTP2_ERR_START_STREAM_NOT_ALLOWED" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-516</span></tt>)
|
|
Starting new stream is not allowed. (e.g., GOAWAY has been sent
|
|
and/or received.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_GOAWAY_ALREADY_SENT">
|
|
<tt class="descname">NGHTTP2_ERR_GOAWAY_ALREADY_SENT</tt><a class="headerlink" href="#NGHTTP2_ERR_GOAWAY_ALREADY_SENT" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-517</span></tt>)
|
|
GOAWAY has already been sent.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_INVALID_HEADER_BLOCK">
|
|
<tt class="descname">NGHTTP2_ERR_INVALID_HEADER_BLOCK</tt><a class="headerlink" href="#NGHTTP2_ERR_INVALID_HEADER_BLOCK" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-518</span></tt>)
|
|
The received frame contains the invalid header block. (e.g.,
|
|
There are duplicate header names; or the header names are not
|
|
encoded in US-ASCII character set and not lower cased; or the
|
|
header name is zero-length string; or the header value contains
|
|
multiple in-sequence NUL bytes).</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_INVALID_STATE">
|
|
<tt class="descname">NGHTTP2_ERR_INVALID_STATE</tt><a class="headerlink" href="#NGHTTP2_ERR_INVALID_STATE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-519</span></tt>)
|
|
Indicates that the context is not suitable to perform the
|
|
requested operation.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_GZIP">
|
|
<tt class="descname">NGHTTP2_ERR_GZIP</tt><a class="headerlink" href="#NGHTTP2_ERR_GZIP" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-520</span></tt>)
|
|
The gzip error.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE">
|
|
<tt class="descname">NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE</tt><a class="headerlink" href="#NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-521</span></tt>)
|
|
The user callback function failed due to the temporal error.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_FRAME_SIZE_ERROR">
|
|
<tt class="descname">NGHTTP2_ERR_FRAME_SIZE_ERROR</tt><a class="headerlink" href="#NGHTTP2_ERR_FRAME_SIZE_ERROR" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-522</span></tt>)
|
|
The length of the frame is invalid, either too large or too small.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_HEADER_COMP">
|
|
<tt class="descname">NGHTTP2_ERR_HEADER_COMP</tt><a class="headerlink" href="#NGHTTP2_ERR_HEADER_COMP" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-523</span></tt>)
|
|
Header block inflate/deflate error.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_FLOW_CONTROL">
|
|
<tt class="descname">NGHTTP2_ERR_FLOW_CONTROL</tt><a class="headerlink" href="#NGHTTP2_ERR_FLOW_CONTROL" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-524</span></tt>)
|
|
Flow control error</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_INSUFF_BUFSIZE">
|
|
<tt class="descname">NGHTTP2_ERR_INSUFF_BUFSIZE</tt><a class="headerlink" href="#NGHTTP2_ERR_INSUFF_BUFSIZE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-525</span></tt>)
|
|
Insufficient buffer size given to function.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_PAUSE">
|
|
<tt class="descname">NGHTTP2_ERR_PAUSE</tt><a class="headerlink" href="#NGHTTP2_ERR_PAUSE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-526</span></tt>)
|
|
Callback was paused by the application</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS">
|
|
<tt class="descname">NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS</tt><a class="headerlink" href="#NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-527</span></tt>)
|
|
There are too many in-flight SETTING frame and no more
|
|
transmission of SETTINGS is allowed.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_PUSH_DISABLED">
|
|
<tt class="descname">NGHTTP2_ERR_PUSH_DISABLED</tt><a class="headerlink" href="#NGHTTP2_ERR_PUSH_DISABLED" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-528</span></tt>)
|
|
The server push is disabled.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_FATAL">
|
|
<tt class="descname">NGHTTP2_ERR_FATAL</tt><a class="headerlink" href="#NGHTTP2_ERR_FATAL" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-900</span></tt>)
|
|
The errors < <a class="reference internal" href="#NGHTTP2_ERR_FATAL" title="NGHTTP2_ERR_FATAL"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_FATAL</span></tt></a> mean that the library is
|
|
under unexpected condition and cannot process any further data
|
|
reliably (e.g., out of memory).</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_NOMEM">
|
|
<tt class="descname">NGHTTP2_ERR_NOMEM</tt><a class="headerlink" href="#NGHTTP2_ERR_NOMEM" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-901</span></tt>)
|
|
Out of memory. This is a fatal error.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ERR_CALLBACK_FAILURE">
|
|
<tt class="descname">NGHTTP2_ERR_CALLBACK_FAILURE</tt><a class="headerlink" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">-902</span></tt>)
|
|
The user callback function failed. This is a fatal error.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_frame_type">
|
|
<tt class="descname">nghttp2_frame_type</tt><a class="headerlink" href="#nghttp2_frame_type" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The control frame types in HTTP/2.0.</p>
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_DATA">
|
|
<tt class="descname">NGHTTP2_DATA</tt><a class="headerlink" href="#NGHTTP2_DATA" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0</span></tt>)
|
|
The DATA frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_HEADERS">
|
|
<tt class="descname">NGHTTP2_HEADERS</tt><a class="headerlink" href="#NGHTTP2_HEADERS" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">1</span></tt>)
|
|
The HEADERS frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_PRIORITY">
|
|
<tt class="descname">NGHTTP2_PRIORITY</tt><a class="headerlink" href="#NGHTTP2_PRIORITY" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">2</span></tt>)
|
|
The PRIORITY frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_RST_STREAM">
|
|
<tt class="descname">NGHTTP2_RST_STREAM</tt><a class="headerlink" href="#NGHTTP2_RST_STREAM" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">3</span></tt>)
|
|
The RST_STREAM frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_SETTINGS">
|
|
<tt class="descname">NGHTTP2_SETTINGS</tt><a class="headerlink" href="#NGHTTP2_SETTINGS" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">4</span></tt>)
|
|
The SETTINGS frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_PUSH_PROMISE">
|
|
<tt class="descname">NGHTTP2_PUSH_PROMISE</tt><a class="headerlink" href="#NGHTTP2_PUSH_PROMISE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">5</span></tt>)
|
|
The PUSH_PROMISE frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_PING">
|
|
<tt class="descname">NGHTTP2_PING</tt><a class="headerlink" href="#NGHTTP2_PING" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">6</span></tt>)
|
|
The PING frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_GOAWAY">
|
|
<tt class="descname">NGHTTP2_GOAWAY</tt><a class="headerlink" href="#NGHTTP2_GOAWAY" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">7</span></tt>)
|
|
The GOAWAY frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_WINDOW_UPDATE">
|
|
<tt class="descname">NGHTTP2_WINDOW_UPDATE</tt><a class="headerlink" href="#NGHTTP2_WINDOW_UPDATE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">8</span></tt>)
|
|
The WINDOW_UPDATE frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_CONTINUATION">
|
|
<tt class="descname">NGHTTP2_CONTINUATION</tt><a class="headerlink" href="#NGHTTP2_CONTINUATION" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">9</span></tt>)
|
|
The CONTINUATION frame.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_flag">
|
|
<tt class="descname">nghttp2_flag</tt><a class="headerlink" href="#nghttp2_flag" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The flags for HTTP/2.0 frames. This enum defines all flags for
|
|
frames, assuming that the same flag name has the same mask.</p>
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLAG_NONE">
|
|
<tt class="descname">NGHTTP2_FLAG_NONE</tt><a class="headerlink" href="#NGHTTP2_FLAG_NONE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0</span></tt>)
|
|
No flag set.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLAG_END_STREAM">
|
|
<tt class="descname">NGHTTP2_FLAG_END_STREAM</tt><a class="headerlink" href="#NGHTTP2_FLAG_END_STREAM" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0x1</span></tt>)
|
|
The END_STREAM flag.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLAG_END_HEADERS">
|
|
<tt class="descname">NGHTTP2_FLAG_END_HEADERS</tt><a class="headerlink" href="#NGHTTP2_FLAG_END_HEADERS" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0x4</span></tt>)
|
|
The END_HEADERS flag.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLAG_PRIORITY">
|
|
<tt class="descname">NGHTTP2_FLAG_PRIORITY</tt><a class="headerlink" href="#NGHTTP2_FLAG_PRIORITY" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0x8</span></tt>)
|
|
The PRIORITY flag.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLAG_END_PUSH_PROMISE">
|
|
<tt class="descname">NGHTTP2_FLAG_END_PUSH_PROMISE</tt><a class="headerlink" href="#NGHTTP2_FLAG_END_PUSH_PROMISE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0x4</span></tt>)
|
|
The END_PUSH_PROMISE flag.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLAG_ACK">
|
|
<tt class="descname">NGHTTP2_FLAG_ACK</tt><a class="headerlink" href="#NGHTTP2_FLAG_ACK" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0x1</span></tt>)
|
|
The ACK flag.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLAG_END_SEGMENT">
|
|
<tt class="descname">NGHTTP2_FLAG_END_SEGMENT</tt><a class="headerlink" href="#NGHTTP2_FLAG_END_SEGMENT" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0x2</span></tt>)
|
|
The END_SEGMENT flag.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLAG_PAD_LOW">
|
|
<tt class="descname">NGHTTP2_FLAG_PAD_LOW</tt><a class="headerlink" href="#NGHTTP2_FLAG_PAD_LOW" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0x10</span></tt>)
|
|
The PAD_LOW flag.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLAG_PAD_HIGH">
|
|
<tt class="descname">NGHTTP2_FLAG_PAD_HIGH</tt><a class="headerlink" href="#NGHTTP2_FLAG_PAD_HIGH" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0x20</span></tt>)
|
|
The PAD_HIGH flag.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_settings_id">
|
|
<tt class="descname">nghttp2_settings_id</tt><a class="headerlink" href="#nghttp2_settings_id" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The SETTINGS ID.</p>
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_SETTINGS_HEADER_TABLE_SIZE">
|
|
<tt class="descname">NGHTTP2_SETTINGS_HEADER_TABLE_SIZE</tt><a class="headerlink" href="#NGHTTP2_SETTINGS_HEADER_TABLE_SIZE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">1</span></tt>)
|
|
SETTINGS_HEADER_TABLE_SIZE</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_SETTINGS_ENABLE_PUSH">
|
|
<tt class="descname">NGHTTP2_SETTINGS_ENABLE_PUSH</tt><a class="headerlink" href="#NGHTTP2_SETTINGS_ENABLE_PUSH" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">2</span></tt>)
|
|
SETTINGS_ENABLE_PUSH</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS">
|
|
<tt class="descname">NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS</tt><a class="headerlink" href="#NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">3</span></tt>)
|
|
SETTINGS_MAX_CONCURRENT_STREAMS</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE">
|
|
<tt class="descname">NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE</tt><a class="headerlink" href="#NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">4</span></tt>)
|
|
SETTINGS_INITIAL_WINDOW_SIZE</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_SETTINGS_MAX">
|
|
<tt class="descname">NGHTTP2_SETTINGS_MAX</tt><a class="headerlink" href="#NGHTTP2_SETTINGS_MAX" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">4</span></tt>)
|
|
Maximum ID of <a class="reference internal" href="#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">
|
|
<dt id="nghttp2_error_code">
|
|
<tt class="descname">nghttp2_error_code</tt><a class="headerlink" href="#nghttp2_error_code" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The status codes for the RST_STREAM and GOAWAY frames.</p>
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_NO_ERROR">
|
|
<tt class="descname">NGHTTP2_NO_ERROR</tt><a class="headerlink" href="#NGHTTP2_NO_ERROR" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0</span></tt>)
|
|
No errors.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_PROTOCOL_ERROR">
|
|
<tt class="descname">NGHTTP2_PROTOCOL_ERROR</tt><a class="headerlink" href="#NGHTTP2_PROTOCOL_ERROR" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">1</span></tt>)
|
|
PROTOCOL_ERROR</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_INTERNAL_ERROR">
|
|
<tt class="descname">NGHTTP2_INTERNAL_ERROR</tt><a class="headerlink" href="#NGHTTP2_INTERNAL_ERROR" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">2</span></tt>)
|
|
INTERNAL_ERROR</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FLOW_CONTROL_ERROR">
|
|
<tt class="descname">NGHTTP2_FLOW_CONTROL_ERROR</tt><a class="headerlink" href="#NGHTTP2_FLOW_CONTROL_ERROR" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">3</span></tt>)
|
|
FLOW_CONTROL_ERROR</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_SETTINGS_TIMEOUT">
|
|
<tt class="descname">NGHTTP2_SETTINGS_TIMEOUT</tt><a class="headerlink" href="#NGHTTP2_SETTINGS_TIMEOUT" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">4</span></tt>)
|
|
SETTINGS_TIMEOUT</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_STREAM_CLOSED">
|
|
<tt class="descname">NGHTTP2_STREAM_CLOSED</tt><a class="headerlink" href="#NGHTTP2_STREAM_CLOSED" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">5</span></tt>)
|
|
STREAM_CLOSED</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_FRAME_SIZE_ERROR">
|
|
<tt class="descname">NGHTTP2_FRAME_SIZE_ERROR</tt><a class="headerlink" href="#NGHTTP2_FRAME_SIZE_ERROR" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">6</span></tt>)
|
|
FRAME_SIZE_ERROR</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_REFUSED_STREAM">
|
|
<tt class="descname">NGHTTP2_REFUSED_STREAM</tt><a class="headerlink" href="#NGHTTP2_REFUSED_STREAM" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">7</span></tt>)
|
|
REFUSED_STREAM</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_CANCEL">
|
|
<tt class="descname">NGHTTP2_CANCEL</tt><a class="headerlink" href="#NGHTTP2_CANCEL" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">8</span></tt>)
|
|
CANCEL</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_COMPRESSION_ERROR">
|
|
<tt class="descname">NGHTTP2_COMPRESSION_ERROR</tt><a class="headerlink" href="#NGHTTP2_COMPRESSION_ERROR" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">9</span></tt>)
|
|
COMPRESSION_ERROR</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_CONNECT_ERROR">
|
|
<tt class="descname">NGHTTP2_CONNECT_ERROR</tt><a class="headerlink" href="#NGHTTP2_CONNECT_ERROR" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">10</span></tt>)
|
|
CONNECT_ERROR</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_ENHANCE_YOUR_CALM">
|
|
<tt class="descname">NGHTTP2_ENHANCE_YOUR_CALM</tt><a class="headerlink" href="#NGHTTP2_ENHANCE_YOUR_CALM" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">11</span></tt>)
|
|
ENHANCE_YOUR_CALM</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_INADEQUATE_SECURITY">
|
|
<tt class="descname">NGHTTP2_INADEQUATE_SECURITY</tt><a class="headerlink" href="#NGHTTP2_INADEQUATE_SECURITY" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">12</span></tt>)
|
|
INADEQUATE_SECURITY</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_headers_category">
|
|
<tt class="descname">nghttp2_headers_category</tt><a class="headerlink" href="#nghttp2_headers_category" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The category of HEADERS, which indicates the role of the frame. In
|
|
HTTP/2.0 spec, request, response, push response and other arbitrary
|
|
headers (e.g., trailers) are all called just HEADERS. To give the
|
|
application the role of incoming HEADERS frame, we define several
|
|
categories.</p>
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_HCAT_REQUEST">
|
|
<tt class="descname">NGHTTP2_HCAT_REQUEST</tt><a class="headerlink" href="#NGHTTP2_HCAT_REQUEST" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">0</span></tt>)
|
|
The HEADERS frame is opening new stream, which is analogous to
|
|
SYN_STREAM in SPDY.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_HCAT_RESPONSE">
|
|
<tt class="descname">NGHTTP2_HCAT_RESPONSE</tt><a class="headerlink" href="#NGHTTP2_HCAT_RESPONSE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">1</span></tt>)
|
|
The HEADERS frame is the first response headers, which is
|
|
analogous to SYN_REPLY in SPDY.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_HCAT_PUSH_RESPONSE">
|
|
<tt class="descname">NGHTTP2_HCAT_PUSH_RESPONSE</tt><a class="headerlink" href="#NGHTTP2_HCAT_PUSH_RESPONSE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">2</span></tt>)
|
|
The HEADERS frame is the first headers sent against reserved
|
|
stream.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_HCAT_HEADERS">
|
|
<tt class="descname">NGHTTP2_HCAT_HEADERS</tt><a class="headerlink" href="#NGHTTP2_HCAT_HEADERS" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">3</span></tt>)
|
|
The HEADERS frame which does not apply for the above categories,
|
|
which is analogous to HEADERS in SPDY.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_opt">
|
|
<tt class="descname">nghttp2_opt</tt><a class="headerlink" href="#nghttp2_opt" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Configuration options for <a class="reference internal" href="#nghttp2_session" title="nghttp2_session"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_session</span></tt></a>.</p>
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE">
|
|
<tt class="descname">NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE</tt><a class="headerlink" href="#NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">1</span></tt>)
|
|
This option prevents the library from sending WINDOW_UPDATE for a
|
|
stream automatically. If this option is set to nonzero, the
|
|
library won’t send WINDOW_UPDATE for a stream and the application
|
|
is responsible for sending WINDOW_UPDATE using
|
|
<a class="reference internal" href="#nghttp2_submit_window_update" title="nghttp2_submit_window_update"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_window_update()</span></tt></a>. By default, this option is set to
|
|
zero.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE">
|
|
<tt class="descname">NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE</tt><a class="headerlink" href="#NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">1</span> <span class="pre"><<</span> <span class="pre">1</span></tt>)
|
|
This option prevents the library from sending WINDOW_UPDATE for a
|
|
connection automatically. If this option is set to nonzero, the
|
|
library won’t send WINDOW_UPDATE for a connection and the
|
|
application is responsible for sending WINDOW_UPDATE with stream
|
|
ID 0 using <a class="reference internal" href="#nghttp2_submit_window_update" title="nghttp2_submit_window_update"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_window_update()</span></tt></a>. By default, this
|
|
option is set to zero.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="macro">
|
|
<dt id="NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS">
|
|
<tt class="descname">NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS</tt><a class="headerlink" href="#NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>(<tt class="docutils literal"><span class="pre">1</span> <span class="pre"><<</span> <span class="pre">2</span></tt>)
|
|
This option sets the SETTINGS_MAX_CONCURRENT_STREAMS value of
|
|
remote endpoint as if it is received in SETTINGS frame. Without
|
|
specifying this option, before the local endpoint receives
|
|
SETTINGS_MAX_CONCURRENT_STREAMS in SETTINGS frame from remote
|
|
endpoint, SETTINGS_MAX_CONCURRENT_STREAMS is unlimited. This may
|
|
cause problem if local endpoint submits lots of requests
|
|
initially and sending them at once to the remote peer may lead to
|
|
the rejection of some requests. Specifying this option to the
|
|
sensible value, say 100, may avoid this kind of issue. This value
|
|
will be overwritten if the local endpoint receives
|
|
SETTINGS_MAX_CONCURRENT_STREAMS from the remote endpoint.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
</div>
|
|
<div class="section" id="types-structs-unions-and-typedefs">
|
|
<h2>Types (structs, unions and typedefs)<a class="headerlink" href="#types-structs-unions-and-typedefs" title="Permalink to this headline">¶</a></h2>
|
|
<dl class="type">
|
|
<dt id="nghttp2_session">
|
|
<tt class="descname">nghttp2_session</tt><a class="headerlink" href="#nghttp2_session" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The primary structure to hold the resources needed for a HTTP/2.0
|
|
session. The details of this structure are intentionally hidden
|
|
from the public API.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_info">
|
|
<tt class="descname">nghttp2_info</tt><a class="headerlink" href="#nghttp2_info" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>This struct is what <a class="reference internal" href="#nghttp2_version" title="nghttp2_version"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_version()</span></tt></a> returns. It holds
|
|
information about the particular nghttp2 version.</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_info.age">
|
|
int <tt class="descname">age</tt><a class="headerlink" href="#nghttp2_info.age" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Age of this struct. This instance of nghttp2 sets it to
|
|
<a class="reference internal" href="#NGHTTP2_VERSION_AGE" title="NGHTTP2_VERSION_AGE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_VERSION_AGE</span></tt></a> but a future version may bump it and
|
|
add more struct fields at the bottom</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_info.version_num">
|
|
int <tt class="descname">version_num</tt><a class="headerlink" href="#nghttp2_info.version_num" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>the <a class="reference internal" href="#NGHTTP2_VERSION_NUM" title="NGHTTP2_VERSION_NUM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_VERSION_NUM</span></tt></a> number (since age ==1)</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_info.version_str">
|
|
const char *<tt class="descname">version_str</tt><a class="headerlink" href="#nghttp2_info.version_str" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>points to the <a class="reference internal" href="#NGHTTP2_VERSION" title="NGHTTP2_VERSION"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_VERSION</span></tt></a> string (since age ==1)</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_info.proto_str">
|
|
const char *<tt class="descname">proto_str</tt><a class="headerlink" href="#nghttp2_info.proto_str" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>points to the <a class="reference internal" href="#NGHTTP2_PROTO_VERSION_ID" title="NGHTTP2_PROTO_VERSION_ID"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_PROTO_VERSION_ID</span></tt></a> string this
|
|
instance implements (since age ==1)</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_nv">
|
|
<tt class="descname">nghttp2_nv</tt><a class="headerlink" href="#nghttp2_nv" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The name/value pair, which mainly used to represent header fields.</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_nv.name">
|
|
uint8_t *<tt class="descname">name</tt><a class="headerlink" href="#nghttp2_nv.name" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The <em>name</em> byte string, which is not necessarily <tt class="docutils literal"><span class="pre">NULL</span></tt>
|
|
terminated.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_nv.value">
|
|
uint8_t *<tt class="descname">value</tt><a class="headerlink" href="#nghttp2_nv.value" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The <em>value</em> byte string, which is not necessarily <tt class="docutils literal"><span class="pre">NULL</span></tt>
|
|
terminated.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_nv.namelen">
|
|
uint16_t <tt class="descname">namelen</tt><a class="headerlink" href="#nghttp2_nv.namelen" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The length of the <em>name</em>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_nv.valuelen">
|
|
uint16_t <tt class="descname">valuelen</tt><a class="headerlink" href="#nghttp2_nv.valuelen" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The length of the <em>value</em>.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_frame_hd">
|
|
<tt class="descname">nghttp2_frame_hd</tt><a class="headerlink" href="#nghttp2_frame_hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header.</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame_hd.length">
|
|
size_t <tt class="descname">length</tt><a class="headerlink" href="#nghttp2_frame_hd.length" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The length field of this frame, excluding frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame_hd.stream_id">
|
|
int32_t <tt class="descname">stream_id</tt><a class="headerlink" href="#nghttp2_frame_hd.stream_id" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The stream identifier (aka, stream ID)</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame_hd.type">
|
|
uint8_t <tt class="descname">type</tt><a class="headerlink" href="#nghttp2_frame_hd.type" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The type of this frame. See <a class="reference internal" href="#nghttp2_frame" title="nghttp2_frame"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_frame()</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame_hd.flags">
|
|
uint8_t <tt class="descname">flags</tt><a class="headerlink" href="#nghttp2_frame_hd.flags" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The flags.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_data_source">
|
|
<tt class="descname">nghttp2_data_source</tt><a class="headerlink" href="#nghttp2_data_source" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>This union represents the some kind of data source passed to
|
|
<a class="reference internal" href="#nghttp2_data_source_read_callback" title="nghttp2_data_source_read_callback"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_data_source_read_callback</span></tt></a>.</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_data_source.fd">
|
|
int <tt class="descname">fd</tt><a class="headerlink" href="#nghttp2_data_source.fd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The integer field, suitable for a file descriptor.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_data_source.ptr">
|
|
void *<tt class="descname">ptr</tt><a class="headerlink" href="#nghttp2_data_source.ptr" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The pointer to an arbitrary object.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_data_source_read_callback">
|
|
typedef ssize_t <tt class="descname">(*nghttp2_data_source_read_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em>, uint8_t<em> *buf</em>, size_t<em> length</em>, int<em> *eof</em>, <a class="reference internal" href="#nghttp2_data_source" title="nghttp2_data_source">nghttp2_data_source</a><em> *source</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_data_source_read_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the library wants to read data from
|
|
the <em>source</em>. The read data is sent in the stream <em>stream_id</em>. 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 <em>*eof</em> to 1. 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="#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 any data in this invocation. The library removes DATA
|
|
frame from the outgoing queue temporarily. To move back deferred
|
|
DATA frame to outgoing queue, call <a class="reference internal" href="#nghttp2_session_resume_data" title="nghttp2_session_resume_data"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_resume_data()</span></tt></a>.
|
|
In case of error, there are 2 choices. Returning
|
|
<a class="reference internal" href="#NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE" title="NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE</span></tt></a> will close the stream
|
|
by issuing RST_STREAM with <a class="reference internal" href="#NGHTTP2_INTERNAL_ERROR" title="NGHTTP2_INTERNAL_ERROR"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_INTERNAL_ERROR</span></tt></a>.
|
|
Returning <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> will signal the
|
|
entire session failure.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_data_provider">
|
|
<tt class="descname">nghttp2_data_provider</tt><a class="headerlink" href="#nghttp2_data_provider" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>This struct represents the data source and the way to read a chunk
|
|
of data from it.</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_data_provider.source">
|
|
<a class="reference internal" href="#nghttp2_data_source" title="nghttp2_data_source">nghttp2_data_source</a> <tt class="descname">source</tt><a class="headerlink" href="#nghttp2_data_provider.source" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The data source.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_data_provider.read_callback">
|
|
<a class="reference internal" href="#nghttp2_data_source_read_callback" title="nghttp2_data_source_read_callback">nghttp2_data_source_read_callback</a> <tt class="descname">read_callback</tt><a class="headerlink" href="#nghttp2_data_provider.read_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The callback function to read a chunk of data from the <em>source</em>.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_data">
|
|
<tt class="descname">nghttp2_data</tt><a class="headerlink" href="#nghttp2_data" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The DATA frame. The received data is delivered via
|
|
<a class="reference internal" href="#nghttp2_on_data_chunk_recv_callback" title="nghttp2_on_data_chunk_recv_callback"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_on_data_chunk_recv_callback</span></tt></a>.</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_data.padlen">
|
|
size_t <tt class="descname">padlen</tt><a class="headerlink" href="#nghttp2_data.padlen" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The length of the padding in this frame. This includes PAD_HIGH
|
|
and PAD_LOW.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_headers">
|
|
<tt class="descname">nghttp2_headers</tt><a class="headerlink" href="#nghttp2_headers" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The HEADERS frame. It has the following members:</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_headers.hd">
|
|
<a class="reference internal" href="#nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#nghttp2_headers.hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_headers.padlen">
|
|
size_t <tt class="descname">padlen</tt><a class="headerlink" href="#nghttp2_headers.padlen" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The length of the padding in this frame. This includes PAD_HIGH
|
|
and PAD_LOW.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_headers.nva">
|
|
<a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a> *<tt class="descname">nva</tt><a class="headerlink" href="#nghttp2_headers.nva" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The name/value pairs.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_headers.nvlen">
|
|
size_t <tt class="descname">nvlen</tt><a class="headerlink" href="#nghttp2_headers.nvlen" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The number of name/value pairs in <em>nva</em>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_headers.cat">
|
|
<a class="reference internal" href="#nghttp2_headers_category" title="nghttp2_headers_category">nghttp2_headers_category</a> <tt class="descname">cat</tt><a class="headerlink" href="#nghttp2_headers.cat" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The category of this HEADERS frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_headers.pri">
|
|
int32_t <tt class="descname">pri</tt><a class="headerlink" href="#nghttp2_headers.pri" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The priority.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_priority">
|
|
<tt class="descname">nghttp2_priority</tt><a class="headerlink" href="#nghttp2_priority" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The PRIORITY frame. It has the following members:</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_priority.hd">
|
|
<a class="reference internal" href="#nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#nghttp2_priority.hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_priority.pri">
|
|
int32_t <tt class="descname">pri</tt><a class="headerlink" href="#nghttp2_priority.pri" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The priority.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_rst_stream">
|
|
<tt class="descname">nghttp2_rst_stream</tt><a class="headerlink" href="#nghttp2_rst_stream" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The RST_STREAM frame. It has the following members:</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_rst_stream.hd">
|
|
<a class="reference internal" href="#nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#nghttp2_rst_stream.hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_rst_stream.error_code">
|
|
<a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a> <tt class="descname">error_code</tt><a class="headerlink" href="#nghttp2_rst_stream.error_code" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The error code. See <a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_error_code</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_settings_entry">
|
|
<tt class="descname">nghttp2_settings_entry</tt><a class="headerlink" href="#nghttp2_settings_entry" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The SETTINGS ID/Value pair. It has the following members:</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_settings_entry.settings_id">
|
|
int32_t <tt class="descname">settings_id</tt><a class="headerlink" href="#nghttp2_settings_entry.settings_id" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The SETTINGS ID. See <a class="reference internal" href="#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>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_settings_entry.value">
|
|
uint32_t <tt class="descname">value</tt><a class="headerlink" href="#nghttp2_settings_entry.value" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The value of this entry.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_settings">
|
|
<tt class="descname">nghttp2_settings</tt><a class="headerlink" href="#nghttp2_settings" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The SETTINGS frame. It has the following members:</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_settings.hd">
|
|
<a class="reference internal" href="#nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#nghttp2_settings.hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_settings.niv">
|
|
size_t <tt class="descname">niv</tt><a class="headerlink" href="#nghttp2_settings.niv" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The number of SETTINGS ID/Value pairs in <em>iv</em>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_settings.iv">
|
|
<a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry">nghttp2_settings_entry</a> *<tt class="descname">iv</tt><a class="headerlink" href="#nghttp2_settings.iv" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The pointer to the array of SETTINGS ID/Value pair.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_push_promise">
|
|
<tt class="descname">nghttp2_push_promise</tt><a class="headerlink" href="#nghttp2_push_promise" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The PUSH_PROMISE frame. It has the following members:</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_push_promise.hd">
|
|
<a class="reference internal" href="#nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#nghttp2_push_promise.hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_push_promise.padlen">
|
|
size_t <tt class="descname">padlen</tt><a class="headerlink" href="#nghttp2_push_promise.padlen" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The length of the padding in this frame. This includes PAD_HIGH
|
|
and PAD_LOW.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_push_promise.nva">
|
|
<a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a> *<tt class="descname">nva</tt><a class="headerlink" href="#nghttp2_push_promise.nva" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The name/value pairs.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_push_promise.nvlen">
|
|
size_t <tt class="descname">nvlen</tt><a class="headerlink" href="#nghttp2_push_promise.nvlen" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The number of name/value pairs in <em>nva</em>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_push_promise.promised_stream_id">
|
|
int32_t <tt class="descname">promised_stream_id</tt><a class="headerlink" href="#nghttp2_push_promise.promised_stream_id" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The promised stream ID</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_ping">
|
|
<tt class="descname">nghttp2_ping</tt><a class="headerlink" href="#nghttp2_ping" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The PING frame. It has the following members:</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_ping.hd">
|
|
<a class="reference internal" href="#nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#nghttp2_ping.hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt>
|
|
<tt class="descname">uint8_t opaque_data[8]</tt></dt>
|
|
<dd><p>The opaque data</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_goaway">
|
|
<tt class="descname">nghttp2_goaway</tt><a class="headerlink" href="#nghttp2_goaway" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The GOAWAY frame. It has the following members:</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_goaway.hd">
|
|
<a class="reference internal" href="#nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#nghttp2_goaway.hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_goaway.last_stream_id">
|
|
int32_t <tt class="descname">last_stream_id</tt><a class="headerlink" href="#nghttp2_goaway.last_stream_id" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The last stream stream ID.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_goaway.error_code">
|
|
<a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a> <tt class="descname">error_code</tt><a class="headerlink" href="#nghttp2_goaway.error_code" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The error code. See <a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_error_code</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_goaway.opaque_data">
|
|
uint8_t *<tt class="descname">opaque_data</tt><a class="headerlink" href="#nghttp2_goaway.opaque_data" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The additional debug data</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_goaway.opaque_data_len">
|
|
size_t <tt class="descname">opaque_data_len</tt><a class="headerlink" href="#nghttp2_goaway.opaque_data_len" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The length of <em>opaque_data</em> member.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_window_update">
|
|
<tt class="descname">nghttp2_window_update</tt><a class="headerlink" href="#nghttp2_window_update" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The WINDOW_UPDATE frame. It has the following members:</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_window_update.hd">
|
|
<a class="reference internal" href="#nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#nghttp2_window_update.hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_window_update.window_size_increment">
|
|
int32_t <tt class="descname">window_size_increment</tt><a class="headerlink" href="#nghttp2_window_update.window_size_increment" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The window size increment.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_frame">
|
|
<tt class="descname">nghttp2_frame</tt><a class="headerlink" href="#nghttp2_frame" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>This union includes all frames to pass them to various function
|
|
calls as nghttp2_frame type. The CONTINUATION frame is omitted from
|
|
here because the library deals with it internally.</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.hd">
|
|
<a class="reference internal" href="#nghttp2_frame_hd" title="nghttp2_frame_hd">nghttp2_frame_hd</a> <tt class="descname">hd</tt><a class="headerlink" href="#nghttp2_frame.hd" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The frame header, which is convenient to inspect frame header.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.data">
|
|
<a class="reference internal" href="#nghttp2_data" title="nghttp2_data">nghttp2_data</a> <tt class="descname">data</tt><a class="headerlink" href="#nghttp2_frame.data" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The DATA frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.headers">
|
|
<a class="reference internal" href="#nghttp2_headers" title="nghttp2_headers">nghttp2_headers</a> <tt class="descname">headers</tt><a class="headerlink" href="#nghttp2_frame.headers" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The HEADERS frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.priority">
|
|
<a class="reference internal" href="#nghttp2_priority" title="nghttp2_priority">nghttp2_priority</a> <tt class="descname">priority</tt><a class="headerlink" href="#nghttp2_frame.priority" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The PRIORITY frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.rst_stream">
|
|
<a class="reference internal" href="#nghttp2_rst_stream" title="nghttp2_rst_stream">nghttp2_rst_stream</a> <tt class="descname">rst_stream</tt><a class="headerlink" href="#nghttp2_frame.rst_stream" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The RST_STREAM frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.settings">
|
|
<a class="reference internal" href="#nghttp2_settings" title="nghttp2_settings">nghttp2_settings</a> <tt class="descname">settings</tt><a class="headerlink" href="#nghttp2_frame.settings" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The SETTINGS frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.push_promise">
|
|
<a class="reference internal" href="#nghttp2_push_promise" title="nghttp2_push_promise">nghttp2_push_promise</a> <tt class="descname">push_promise</tt><a class="headerlink" href="#nghttp2_frame.push_promise" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The PUSH_PROMISE frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.ping">
|
|
<a class="reference internal" href="#nghttp2_ping" title="nghttp2_ping">nghttp2_ping</a> <tt class="descname">ping</tt><a class="headerlink" href="#nghttp2_frame.ping" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The PING frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.goaway">
|
|
<a class="reference internal" href="#nghttp2_goaway" title="nghttp2_goaway">nghttp2_goaway</a> <tt class="descname">goaway</tt><a class="headerlink" href="#nghttp2_frame.goaway" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The GOAWAY frame.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_frame.window_update">
|
|
<a class="reference internal" href="#nghttp2_window_update" title="nghttp2_window_update">nghttp2_window_update</a> <tt class="descname">window_update</tt><a class="headerlink" href="#nghttp2_frame.window_update" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The WINDOW_UPDATE frame.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_send_callback">
|
|
typedef ssize_t <tt class="descname">(*nghttp2_send_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const uint8_t<em> *data</em>, size_t<em> length</em>, int<em> flags</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_send_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when <em>session</em> wants to send data to the
|
|
remote peer. The implementation of this function must send at most
|
|
<em>length</em> bytes of data stored in <em>data</em>. The <em>flags</em> is currently
|
|
not used and always 0. It must return the number of bytes sent if
|
|
it succeeds. If it cannot send any single byte without blocking,
|
|
it must return <a class="reference internal" href="#NGHTTP2_ERR_WOULDBLOCK" title="NGHTTP2_ERR_WOULDBLOCK"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a>. For other errors, it
|
|
must return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. The <em>user_data</em>
|
|
pointer is the third argument passed in to the call to
|
|
<a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or <a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>This callback is required if the application uses
|
|
<a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a> to send data to the remote endpoint. If
|
|
the application uses <a class="reference internal" href="#nghttp2_session_mem_send" title="nghttp2_session_mem_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_send()</span></tt></a> instead, this
|
|
callback function is unnecessary.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_recv_callback">
|
|
typedef ssize_t <tt class="descname">(*nghttp2_recv_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> *buf</em>, size_t<em> length</em>, int<em> flags</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when <em>session</em> wants to receive data from
|
|
the remote peer. The implementation of this function must read at
|
|
most <em>length</em> bytes of data and store it in <em>buf</em>. The <em>flags</em> is
|
|
currently not used and always 0. It must return the number of bytes
|
|
written in <em>buf</em> if it succeeds. If it cannot read any single byte
|
|
without blocking, it must return <a class="reference internal" href="#NGHTTP2_ERR_WOULDBLOCK" title="NGHTTP2_ERR_WOULDBLOCK"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a>. If
|
|
it gets EOF before it reads any single byte, it must return
|
|
<a class="reference internal" href="#NGHTTP2_ERR_EOF" title="NGHTTP2_ERR_EOF"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_EOF</span></tt></a>. For other errors, it must return
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. Returning 0 is treated as
|
|
<a class="reference internal" href="#NGHTTP2_ERR_WOULDBLOCK" title="NGHTTP2_ERR_WOULDBLOCK"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a>. The <em>user_data</em> pointer is the
|
|
third argument passed in to the call to
|
|
<a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or <a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>This callback is required if the application uses
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> to receive data from the remote
|
|
endpoint. If the application uses <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a>
|
|
instead, this callback function is unnecessary.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_on_frame_recv_callback">
|
|
typedef int <tt class="descname">(*nghttp2_on_frame_recv_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <a class="reference internal" href="#nghttp2_frame" title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_on_frame_recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked by <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> when a aframe
|
|
is received. The <em>user_data</em> pointer is the third argument passed
|
|
in to the call to <a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or
|
|
<a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>If frame is HEADERS or PUSH_PROMISE, the <tt class="docutils literal"><span class="pre">nva</span></tt> and <tt class="docutils literal"><span class="pre">nvlen</span></tt>
|
|
member of their data structure are always <tt class="docutils literal"><span class="pre">NULL</span></tt> and 0
|
|
respectively. The header name/value pairs are emitted via
|
|
<a class="reference internal" href="#nghttp2_on_header_callback" title="nghttp2_on_header_callback"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_on_header_callback</span></tt></a>.</p>
|
|
<p>For HEADERS, PUSH_PROMISE and DATA frames, this callback may be
|
|
called after stream is closed (see
|
|
<a class="reference internal" href="#nghttp2_on_stream_close_callback" title="nghttp2_on_stream_close_callback"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_on_stream_close_callback</span></tt></a>). The application should
|
|
check that stream is still alive using its own stream management or
|
|
<a class="reference internal" href="#nghttp2_session_get_stream_user_data" title="nghttp2_session_get_stream_user_data"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_get_stream_user_data()</span></tt></a>.</p>
|
|
<p>Only HEADERS and DATA frame can signal the end of incoming data. If
|
|
<tt class="docutils literal"><span class="pre">frame->hd.flags</span> <span class="pre">&</span> <span class="pre">NGHTTP2_FLAG_END_STREAM</span></tt> is nonzero, the
|
|
<em>frame</em> is the last frame from the remote peer in this stream.</p>
|
|
<p>The implementation of this function must return 0 if it
|
|
succeeds. If nonzero value is returned, it is treated as fatal
|
|
error and <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> and <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a>
|
|
functions immediately return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_on_invalid_frame_recv_callback">
|
|
typedef int <tt class="descname">(*nghttp2_on_invalid_frame_recv_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <a class="reference internal" href="#nghttp2_frame" title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, <a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_on_invalid_frame_recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked by <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> when an
|
|
invalid non-DATA frame is received. The <em>error_code</em> is one of the
|
|
<a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code"><tt class="xref c c-macro docutils literal"><span class="pre">nghttp2_error_code</span></tt></a> and indicates the error. When this
|
|
callback function is invoked, the library automatically submits
|
|
either RST_STREAM or GOAWAY frame. The <em>user_data</em> pointer is the
|
|
third argument passed in to the call to
|
|
<a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or <a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>If frame is HEADERS or PUSH_PROMISE, the <tt class="docutils literal"><span class="pre">nva</span></tt> and <tt class="docutils literal"><span class="pre">nvlen</span></tt>
|
|
member of their data structure are always <tt class="docutils literal"><span class="pre">NULL</span></tt> and 0
|
|
respectively.</p>
|
|
<p>The implementation of this function must return 0 if it
|
|
succeeds. If nonzero is returned, it is treated as fatal error and
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> and <a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a> functions
|
|
immediately return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_on_data_chunk_recv_callback">
|
|
typedef int <tt class="descname">(*nghttp2_on_data_chunk_recv_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, const uint8_t<em> *data</em>, size_t<em> len</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_on_data_chunk_recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when a chunk of data in DATA frame is
|
|
received. The <em>stream_id</em> is the stream ID this DATA frame belongs
|
|
to. The <em>flags</em> is the flags of DATA frame which this data chunk is
|
|
contained. <tt class="docutils literal"><span class="pre">(flags</span> <span class="pre">&</span> <span class="pre">NGHTTP2_FLAG_END_STREAM)</span> <span class="pre">!=</span> <span class="pre">0</span></tt> does not
|
|
necessarily mean this chunk of data is the last one in the
|
|
stream. You should use <a class="reference internal" href="#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> to
|
|
know all data frames are received. The <em>user_data</em> pointer is the
|
|
third argument passed in to the call to
|
|
<a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or <a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>If the application uses <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a>, it can return
|
|
<a class="reference internal" href="#NGHTTP2_ERR_PAUSE" title="NGHTTP2_ERR_PAUSE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_PAUSE</span></tt></a> to make <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a>
|
|
return without processing further input bytes. The memory by
|
|
pointed by the <em>data</em> is retained until
|
|
<a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a> or <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> is
|
|
called. The application must retain the input bytes which was used
|
|
to produce the <em>data</em> parameter, because it may refer to the memory
|
|
region included in the input bytes.</p>
|
|
<p>The implementation of this function must return 0 if it
|
|
succeeds. If nonzero is returned, it is treated as fatal error and
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> and <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a> functions
|
|
immediately return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_before_frame_send_callback">
|
|
typedef int <tt class="descname">(*nghttp2_before_frame_send_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <a class="reference internal" href="#nghttp2_frame" title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_before_frame_send_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked before the non-DATA frame <em>frame</em> is
|
|
sent. This may be useful, for example, to know the stream ID of
|
|
HEADERS and PUSH_PROMISE frame (see also
|
|
<a class="reference internal" href="#nghttp2_session_get_stream_user_data" title="nghttp2_session_get_stream_user_data"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_get_stream_user_data()</span></tt></a>), which is not assigned
|
|
when it was queued. The <em>user_data</em> pointer is the third argument
|
|
passed in to the call to <a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or
|
|
<a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>The implementation of this function must return 0 if it
|
|
succeeds. If nonzero is returned, it is treated as fatal error and
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> and <a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a> functions
|
|
immediately return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_on_frame_send_callback">
|
|
typedef int <tt class="descname">(*nghttp2_on_frame_send_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <a class="reference internal" href="#nghttp2_frame" title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_on_frame_send_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked after the frame <em>frame</em> is sent. The
|
|
<em>user_data</em> pointer is the third argument passed in to the call to
|
|
<a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or <a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>The implementation of this function must return 0 if it
|
|
succeeds. If nonzero is returned, it is treated as fatal error and
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> and <a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a> functions
|
|
immediately return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_on_frame_not_send_callback">
|
|
typedef int <tt class="descname">(*nghttp2_on_frame_not_send_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <a class="reference internal" href="#nghttp2_frame" title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, int<em> lib_error_code</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_on_frame_not_send_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked after the non-DATA frame <em>frame</em> is not
|
|
sent because of the error. The error is indicated by the
|
|
<em>lib_error_code</em>, which is one of the values defined in
|
|
<a class="reference internal" href="#nghttp2_error" title="nghttp2_error"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_error</span></tt></a>. The <em>user_data</em> pointer is the third
|
|
argument passed in to the call to <a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or
|
|
<a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>The implementation of this function must return 0 if it
|
|
succeeds. If nonzero is returned, it is treated as fatal error and
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> and <a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a> functions
|
|
immediately return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_on_stream_close_callback">
|
|
typedef int <tt class="descname">(*nghttp2_on_stream_close_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em>, <a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_on_stream_close_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the stream <em>stream_id</em> is
|
|
closed. The reason of closure is indicated by the <em>error_code</em>. The
|
|
stream_user_data, which was specified in <a class="reference internal" href="#nghttp2_submit_request" title="nghttp2_submit_request"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_request()</span></tt></a>
|
|
or <a class="reference internal" href="#nghttp2_submit_headers" title="nghttp2_submit_headers"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_headers()</span></tt></a>, is still available in this
|
|
function. The <em>user_data</em> pointer is the third argument passed in
|
|
to the call to <a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or
|
|
<a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>The implementation of this function must return 0 if it
|
|
succeeds. If nonzero is returned, it is treated as fatal error and
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> and <a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a> functions
|
|
immediately return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_on_unknown_frame_recv_callback">
|
|
typedef int <tt class="descname">(*nghttp2_on_unknown_frame_recv_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const uint8_t<em> *head</em>, size_t<em> headlen</em>, const uint8_t<em> *payload</em>, size_t<em> payloadlen</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_on_unknown_frame_recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the received frame type is
|
|
unknown. The <em>head</em> is the pointer to the header of the received
|
|
frame. The <em>headlen</em> is the length of the <em>head</em>. According to the
|
|
spec, the <em>headlen</em> is always 8. In other words, the <em>head</em> is the
|
|
first 8 bytes of the received frame. The <em>payload</em> is the pointer
|
|
to the data portion of the received frame. The <em>payloadlen</em> is the
|
|
length of the <em>payload</em>. This is the data after the length
|
|
field. The <em>user_data</em> pointer is the third argument passed in to
|
|
the call to <a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a> or
|
|
<a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</p>
|
|
<p>The implementation of this function must return 0 if it
|
|
succeeds. If nonzero is returned, it is treated as fatal error and
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> and <a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a> functions
|
|
immediately return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_on_begin_headers_callback">
|
|
typedef int <tt class="descname">(*nghttp2_on_begin_headers_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <a class="reference internal" href="#nghttp2_frame" title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_on_begin_headers_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the reception of header block in
|
|
HEADERS or PUSH_PROMISE is started. Each header name/value pair
|
|
will be emitted by <a class="reference internal" href="#nghttp2_on_header_callback" title="nghttp2_on_header_callback"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_on_header_callback</span></tt></a>.</p>
|
|
<p>The <tt class="docutils literal"><span class="pre">frame->hd.flags</span></tt> may not have
|
|
<a class="reference internal" href="#NGHTTP2_FLAG_END_HEADERS" title="NGHTTP2_FLAG_END_HEADERS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_HEADERS</span></tt></a> flag set, which indicates that one
|
|
or more CONTINUATION frames are involved. But the application does
|
|
not need to care about that because the header name/value pairs are
|
|
emitted transparently regardless of CONTINUATION frames.</p>
|
|
<p>The implementation of this function must return 0 if it succeeds or
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. If nonzero value other than
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> is returned, it is treated as
|
|
if <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> is returned. If
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> is returned,
|
|
<a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a> function will immediately return
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_on_header_callback">
|
|
typedef int <tt class="descname">(*nghttp2_on_header_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <a class="reference internal" href="#nghttp2_frame" title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, const uint8_t<em> *name</em>, size_t<em> namelen</em>, const uint8_t<em> *value</em>, size_t<em> valuelen</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_on_header_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when a header name/value pair is received
|
|
for the <em>frame</em>. When this callback is invoked, <tt class="docutils literal"><span class="pre">frame->hd.type</span></tt>
|
|
is either <a class="reference internal" href="#NGHTTP2_HEADERS" title="NGHTTP2_HEADERS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_HEADERS</span></tt></a> or <a class="reference internal" href="#NGHTTP2_PUSH_PROMISE" title="NGHTTP2_PUSH_PROMISE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_PUSH_PROMISE</span></tt></a>.
|
|
After all header name/value pairs are processed with this callback,
|
|
and no error has been detected,
|
|
<a class="reference internal" href="#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> will be invoked. If there
|
|
is an error in decompression,
|
|
<a class="reference internal" href="#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> for the <em>frame</em> will not be
|
|
invoked.</p>
|
|
<p>The <em>name</em> may be <tt class="docutils literal"><span class="pre">NULL</span></tt> if the <em>namelen</em> is 0. The same thing
|
|
can be said about the <em>value</em>.</p>
|
|
<p>Please note that nghttp2 library does not perform any validity
|
|
check against the <em>name</em> and the <em>value</em>. For example, the
|
|
<em>namelen</em> could be 0, and/or the <em>value</em> contains <tt class="docutils literal"><span class="pre">0x0a</span></tt> or
|
|
<tt class="docutils literal"><span class="pre">0x0d</span></tt>. The application must check them if it matters. The
|
|
helper function <a class="reference internal" href="#nghttp2_check_header_name" title="nghttp2_check_header_name"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_check_header_name()</span></tt></a> and
|
|
<a class="reference internal" href="#nghttp2_check_header_value" title="nghttp2_check_header_value"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_check_header_value()</span></tt></a> provide simple validation against
|
|
HTTP2 header field construction rule.</p>
|
|
<p>One more thing to note is that the <em>value</em> may contain <tt class="docutils literal"><span class="pre">NULL</span></tt>
|
|
(<tt class="docutils literal"><span class="pre">0x00</span></tt>) characters. It is used to concatenate header values
|
|
which share the same header field name. The application should
|
|
split these values if it wants to get individual value. This
|
|
concatenation is used in order to keep the ordering of headers.</p>
|
|
<p>If the application uses <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a>, it can return
|
|
<a class="reference internal" href="#NGHTTP2_ERR_PAUSE" title="NGHTTP2_ERR_PAUSE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_PAUSE</span></tt></a> to make <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a>
|
|
return without processing further input bytes. The memory pointed
|
|
by <em>frame</em>, <em>name</em> and <em>value</em> parameters are retained until
|
|
<a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a> or <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> is
|
|
called. The application must retain the input bytes which was used
|
|
to produce these parameters, because it may refer to the memory
|
|
region included in the input bytes.</p>
|
|
<p>Returning <a class="reference internal" href="#NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE" title="NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE</span></tt></a> will close
|
|
the stream by issuing RST_STREAM with
|
|
<a class="reference internal" href="#NGHTTP2_INTERNAL_ERROR" title="NGHTTP2_INTERNAL_ERROR"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_INTERNAL_ERROR</span></tt></a>. In this case,
|
|
<a class="reference internal" href="#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> will not be invoked.</p>
|
|
<p>The implementation of this function must return 0 if it
|
|
succeeds. It may return <a class="reference internal" href="#NGHTTP2_ERR_PAUSE" title="NGHTTP2_ERR_PAUSE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_PAUSE</span></tt></a> or
|
|
<a class="reference internal" href="#NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE" title="NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE</span></tt></a>. For other critical
|
|
failures, it must return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. If
|
|
the other nonzero value is returned, it is treated as
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. If
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> is returned,
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> and <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a> functions
|
|
immediately return <a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_select_padding_callback">
|
|
typedef ssize_t <tt class="descname">(*nghttp2_select_padding_callback)</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const <a class="reference internal" href="#nghttp2_frame" title="nghttp2_frame">nghttp2_frame</a><em> *frame</em>, size_t<em> max_payloadlen</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_select_padding_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the library asks application how
|
|
much padding is required for the transmission of the <em>frame</em>. The
|
|
application must choose the total length of payload including
|
|
padded bytes in range [frame->hd.length, max_payloadlen],
|
|
inclusive. Choosing number not in this range will be treated as
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>. Returning
|
|
<tt class="docutils literal"><span class="pre">frame->hd.length</span></tt> means no padding is added. Returning
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a> will make
|
|
<a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a> function immediately return
|
|
<a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_session_callbacks">
|
|
<tt class="descname">nghttp2_session_callbacks</tt><a class="headerlink" href="#nghttp2_session_callbacks" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback functions.</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.send_callback">
|
|
<a class="reference internal" href="#nghttp2_send_callback" title="nghttp2_send_callback">nghttp2_send_callback</a> <tt class="descname">send_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.send_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the <em>session</em> wants to send data
|
|
to the remote peer. This callback is not necessary if the
|
|
application uses <a class="reference internal" href="#nghttp2_session_mem_send" title="nghttp2_session_mem_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_send()</span></tt></a> to serialize data
|
|
to transmit.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.recv_callback">
|
|
<a class="reference internal" href="#nghttp2_recv_callback" title="nghttp2_recv_callback">nghttp2_recv_callback</a> <tt class="descname">recv_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the <em>session</em> wants to receive
|
|
data from the remote peer. This callback is not necessary if the
|
|
application uses <a class="reference internal" href="#nghttp2_session_mem_recv" title="nghttp2_session_mem_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_recv()</span></tt></a> to process received
|
|
data.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.on_frame_recv_callback">
|
|
<a class="reference internal" href="#nghttp2_on_frame_recv_callback" title="nghttp2_on_frame_recv_callback">nghttp2_on_frame_recv_callback</a> <tt class="descname">on_frame_recv_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.on_frame_recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked by <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> when a
|
|
frame is received.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.on_invalid_frame_recv_callback">
|
|
<a class="reference internal" href="#nghttp2_on_invalid_frame_recv_callback" title="nghttp2_on_invalid_frame_recv_callback">nghttp2_on_invalid_frame_recv_callback</a> <tt class="descname">on_invalid_frame_recv_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.on_invalid_frame_recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked by <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> when an
|
|
invalid non-DATA frame is received.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.on_data_chunk_recv_callback">
|
|
<a class="reference internal" href="#nghttp2_on_data_chunk_recv_callback" title="nghttp2_on_data_chunk_recv_callback">nghttp2_on_data_chunk_recv_callback</a> <tt class="descname">on_data_chunk_recv_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.on_data_chunk_recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when a chunk of data in DATA frame is
|
|
received.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.before_frame_send_callback">
|
|
<a class="reference internal" href="#nghttp2_before_frame_send_callback" title="nghttp2_before_frame_send_callback">nghttp2_before_frame_send_callback</a> <tt class="descname">before_frame_send_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.before_frame_send_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked before a non-DATA frame is sent.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.on_frame_send_callback">
|
|
<a class="reference internal" href="#nghttp2_on_frame_send_callback" title="nghttp2_on_frame_send_callback">nghttp2_on_frame_send_callback</a> <tt class="descname">on_frame_send_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.on_frame_send_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked after a frame is sent.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.on_frame_not_send_callback">
|
|
<a class="reference internal" href="#nghttp2_on_frame_not_send_callback" title="nghttp2_on_frame_not_send_callback">nghttp2_on_frame_not_send_callback</a> <tt class="descname">on_frame_not_send_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.on_frame_not_send_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The callback function invoked when a non-DATA frame is not sent
|
|
because of an error.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.on_stream_close_callback">
|
|
<a class="reference internal" href="#nghttp2_on_stream_close_callback" title="nghttp2_on_stream_close_callback">nghttp2_on_stream_close_callback</a> <tt class="descname">on_stream_close_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.on_stream_close_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the stream is closed.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.on_unknown_frame_recv_callback">
|
|
<a class="reference internal" href="#nghttp2_on_unknown_frame_recv_callback" title="nghttp2_on_unknown_frame_recv_callback">nghttp2_on_unknown_frame_recv_callback</a> <tt class="descname">on_unknown_frame_recv_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.on_unknown_frame_recv_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the received frame type is
|
|
unknown.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.on_begin_headers_callback">
|
|
<a class="reference internal" href="#nghttp2_on_begin_headers_callback" title="nghttp2_on_begin_headers_callback">nghttp2_on_begin_headers_callback</a> <tt class="descname">on_begin_headers_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.on_begin_headers_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the reception of header block in
|
|
HEADERS or PUSH_PROMISE is started.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.on_header_callback">
|
|
<a class="reference internal" href="#nghttp2_on_header_callback" title="nghttp2_on_header_callback">nghttp2_on_header_callback</a> <tt class="descname">on_header_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.on_header_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when a header name/value pair is
|
|
received.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_session_callbacks.select_padding_callback">
|
|
<a class="reference internal" href="#nghttp2_select_padding_callback" title="nghttp2_select_padding_callback">nghttp2_select_padding_callback</a> <tt class="descname">select_padding_callback</tt><a class="headerlink" href="#nghttp2_session_callbacks.select_padding_callback" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Callback function invoked when the library asks application how
|
|
much padding is required for the transmission of the given frame.</p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_opt_set">
|
|
<tt class="descname">nghttp2_opt_set</tt><a class="headerlink" href="#nghttp2_opt_set" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Struct to store option values for nghttp2_session.</p>
|
|
<dl class="member">
|
|
<dt id="nghttp2_opt_set.peer_max_concurrent_streams">
|
|
uint32_t <tt class="descname">peer_max_concurrent_streams</tt><a class="headerlink" href="#nghttp2_opt_set.peer_max_concurrent_streams" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p><a class="reference internal" href="#NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS" title="NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS</span></tt></a></p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_opt_set.no_auto_stream_window_update">
|
|
uint8_t <tt class="descname">no_auto_stream_window_update</tt><a class="headerlink" href="#nghttp2_opt_set.no_auto_stream_window_update" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p><a class="reference internal" href="#NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE" title="NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE</span></tt></a></p>
|
|
</dd></dl>
|
|
|
|
<dl class="member">
|
|
<dt id="nghttp2_opt_set.no_auto_connection_window_update">
|
|
uint8_t <tt class="descname">no_auto_connection_window_update</tt><a class="headerlink" href="#nghttp2_opt_set.no_auto_connection_window_update" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p><a class="reference internal" href="#NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE" title="NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE</span></tt></a></p>
|
|
</dd></dl>
|
|
|
|
</dd></dl>
|
|
|
|
<dl class="type">
|
|
<dt id="nghttp2_gzip">
|
|
<tt class="descname">nghttp2_gzip</tt><a class="headerlink" href="#nghttp2_gzip" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>The gzip stream to inflate data. The details of this structure are
|
|
intentionally hidden from the public API.</p>
|
|
</dd></dl>
|
|
|
|
</div>
|
|
<div class="section" id="functions">
|
|
<h2>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h2>
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_client_new">
|
|
int <tt class="descname">nghttp2_session_client_new</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> **session_ptr</em>, const <a class="reference internal" href="#nghttp2_session_callbacks" title="nghttp2_session_callbacks">nghttp2_session_callbacks</a><em> *callbacks</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_session_client_new" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Initializes <em>*session_ptr</em> for client use. The all members of
|
|
<em>callbacks</em> are copied to <em>*session_ptr</em>. Therefore <em>*session_ptr</em>
|
|
does not store <em>callbacks</em>. <em>user_data</em> is an arbitrary user
|
|
supplied data, which will be passed to the callback functions.</p>
|
|
<p>The <a class="reference internal" href="#nghttp2_session_callbacks.send_callback" title="nghttp2_session_callbacks.send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.send_callback</span></tt></a> must be
|
|
specified. If the application code uses <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a>,
|
|
the <a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> must be
|
|
specified. The other members of <em>callbacks</em> can be <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
|
|
<p>This function returns 0 if it succeeds, or one of the following
|
|
negative error codes:</p>
|
|
<dl class="docutils">
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_server_new">
|
|
int <tt class="descname">nghttp2_session_server_new</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> **session_ptr</em>, const <a class="reference internal" href="#nghttp2_session_callbacks" title="nghttp2_session_callbacks">nghttp2_session_callbacks</a><em> *callbacks</em>, void<em> *user_data</em><big>)</big><a class="headerlink" href="#nghttp2_session_server_new" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Initializes <em>*session_ptr</em> for server use. The all members of
|
|
<em>callbacks</em> are copied to <em>*session_ptr</em>. Therefore <em>*session_ptr</em>
|
|
does not store <em>callbacks</em>. <em>user_data</em> is an arbitrary user
|
|
supplied data, which will be passed to the callback functions.</p>
|
|
<p>The <a class="reference internal" href="#nghttp2_session_callbacks.send_callback" title="nghttp2_session_callbacks.send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.send_callback</span></tt></a> must be
|
|
specified. If the application code uses <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a>,
|
|
the <a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> must be
|
|
specified. The other members of <em>callbacks</em> can be <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
|
|
<p>This function returns 0 if it succeeds, or one of the following
|
|
negative error codes:</p>
|
|
<dl class="docutils">
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_client_new2">
|
|
int <tt class="descname">nghttp2_session_client_new2</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> **session_ptr</em>, const <a class="reference internal" href="#nghttp2_session_callbacks" title="nghttp2_session_callbacks">nghttp2_session_callbacks</a><em> *callbacks</em>, void<em> *user_data</em>, uint32_t<em> opt_set_mask</em>, const <a class="reference internal" href="#nghttp2_opt_set" title="nghttp2_opt_set">nghttp2_opt_set</a><em> *opt_set</em><big>)</big><a class="headerlink" href="#nghttp2_session_client_new2" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Like <a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a>, but with additional options
|
|
specified in the <em>opt_set</em>. The caller must set bitwise-OR of
|
|
<a class="reference internal" href="#nghttp2_opt" title="nghttp2_opt"><tt class="xref c c-macro docutils literal"><span class="pre">nghttp2_opt</span></tt></a> for given options. For example, if it
|
|
specifies <a class="reference internal" href="#NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE" title="NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE</span></tt></a> and
|
|
<a class="reference internal" href="#NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS" title="NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS</span></tt></a> in the <em>opt_set</em>,
|
|
the <em>opt_set_mask</em> should be
|
|
<tt class="docutils literal"><span class="pre">NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE</span> <span class="pre">|</span>
|
|
<span class="pre">NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS</span></tt>.</p>
|
|
<p>If the <em>opt_set_mask</em> is 0, the <em>opt_set</em> could be <tt class="docutils literal"><span class="pre">NULL</span></tt> safely
|
|
and the call is equivalent to <a class="reference internal" href="#nghttp2_session_client_new" title="nghttp2_session_client_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_client_new()</span></tt></a>.</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="#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="nghttp2_session_server_new2">
|
|
int <tt class="descname">nghttp2_session_server_new2</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> **session_ptr</em>, const <a class="reference internal" href="#nghttp2_session_callbacks" title="nghttp2_session_callbacks">nghttp2_session_callbacks</a><em> *callbacks</em>, void<em> *user_data</em>, uint32_t<em> opt_set_mask</em>, const <a class="reference internal" href="#nghttp2_opt_set" title="nghttp2_opt_set">nghttp2_opt_set</a><em> *opt_set</em><big>)</big><a class="headerlink" href="#nghttp2_session_server_new2" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Like <a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>, but with additional options
|
|
specified in the <em>opt_set</em>. The caller must set bitwise-OR of
|
|
<a class="reference internal" href="#nghttp2_opt" title="nghttp2_opt"><tt class="xref c c-macro docutils literal"><span class="pre">nghttp2_opt</span></tt></a> for given options. For example, if it
|
|
specifies <a class="reference internal" href="#NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE" title="NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE</span></tt></a> and
|
|
<a class="reference internal" href="#NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS" title="NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS</span></tt></a> in the <em>opt_set</em>,
|
|
the <em>opt_set_mask</em> should be
|
|
<tt class="docutils literal"><span class="pre">NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE</span> <span class="pre">|</span>
|
|
<span class="pre">NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS</span></tt>.</p>
|
|
<p>If the <em>opt_set_mask</em> is 0, the <em>opt_set</em> could be <tt class="docutils literal"><span class="pre">NULL</span></tt> safely
|
|
and the call is equivalent to <a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>.</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="#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="nghttp2_session_del">
|
|
void <tt class="descname">nghttp2_session_del</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><a class="headerlink" href="#nghttp2_session_del" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Frees any resources allocated for <em>session</em>. If <em>session</em> is
|
|
<tt class="docutils literal"><span class="pre">NULL</span></tt>, this function does nothing.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_send">
|
|
int <tt class="descname">nghttp2_session_send</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><a class="headerlink" href="#nghttp2_session_send" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Sends pending frames to the remote peer.</p>
|
|
<p>This function retrieves the highest prioritized frame from the
|
|
outbound queue and sends it to the remote peer. It does this as
|
|
many as possible until the user callback
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.send_callback" title="nghttp2_session_callbacks.send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.send_callback</span></tt></a> returns
|
|
<a class="reference internal" href="#NGHTTP2_ERR_WOULDBLOCK" title="NGHTTP2_ERR_WOULDBLOCK"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a> or the outbound queue becomes empty.
|
|
This function calls several callback functions which are passed
|
|
when initializing the <em>session</em>. Here is the simple time chart
|
|
which tells when each callback is invoked:</p>
|
|
<ol class="arabic simple">
|
|
<li>Get the next frame to send from outbound queue.</li>
|
|
<li>Prepare transmission of the frame.</li>
|
|
<li>If the control frame cannot be sent because some preconditions
|
|
are not met (e.g., request HEADERS cannot be sent after
|
|
GOAWAY),
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_frame_not_send_callback" title="nghttp2_session_callbacks.on_frame_not_send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_frame_not_send_callback</span></tt></a> is
|
|
invoked. Abort the following steps.</li>
|
|
<li>If the frame is request HEADERS, the stream is opened
|
|
here.</li>
|
|
<li><a class="reference internal" href="#nghttp2_session_callbacks.before_frame_send_callback" title="nghttp2_session_callbacks.before_frame_send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.before_frame_send_callback</span></tt></a> is
|
|
invoked.</li>
|
|
<li><a class="reference internal" href="#nghttp2_session_callbacks.send_callback" title="nghttp2_session_callbacks.send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.send_callback</span></tt></a> is invoked one
|
|
or more times to send the frame.</li>
|
|
<li><a class="reference internal" href="#nghttp2_session_callbacks.on_frame_send_callback" title="nghttp2_session_callbacks.on_frame_send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_frame_send_callback</span></tt></a> is
|
|
invoked.</li>
|
|
<li>If the transmission of the frame triggers closure of the stream,
|
|
the stream is closed and
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_stream_close_callback" title="nghttp2_session_callbacks.on_stream_close_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_stream_close_callback</span></tt></a> is
|
|
invoked.</li>
|
|
</ol>
|
|
<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="#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="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a></dt>
|
|
<dd>The callback function failed.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_mem_send">
|
|
ssize_t <tt class="descname">nghttp2_session_mem_send</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const uint8_t<em> **data_ptr</em><big>)</big><a class="headerlink" href="#nghttp2_session_mem_send" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns the serialized data to send.</p>
|
|
<p>This function behaves like <a class="reference internal" href="#nghttp2_session_mem_send" title="nghttp2_session_mem_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_send()</span></tt></a> except that
|
|
it does not use <a class="reference internal" href="#nghttp2_session_callbacks.send_callback" title="nghttp2_session_callbacks.send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.send_callback</span></tt></a>
|
|
to transmit data. Instead, it assigns the pointer to the serialized
|
|
data to the <em>*data_ptr</em> and returns its length. The other callbacks
|
|
are called in the same way as they are in <a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a>.</p>
|
|
<p>If no data is available to send, this function returns 0.</p>
|
|
<p>This function may not return all serialized data in one
|
|
invocation. To get all data, call this function repeatedly until it
|
|
returns 0 or one of negative error codes.</p>
|
|
<p>The assigned <em>*data_ptr</em> is valid until the next call of
|
|
<a class="reference internal" href="#nghttp2_session_mem_send" title="nghttp2_session_mem_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_mem_send()</span></tt></a> or <a class="reference internal" href="#nghttp2_session_send" title="nghttp2_session_send"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_send()</span></tt></a>.</p>
|
|
<p>The caller must send all data before sending the next chunk of
|
|
data.</p>
|
|
<p>This function returns the length of the data pointed by the
|
|
<em>*data_ptr</em> if it succeeds, or one of the following negative error
|
|
codes:</p>
|
|
<dl class="docutils">
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_recv">
|
|
int <tt class="descname">nghttp2_session_recv</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><a class="headerlink" href="#nghttp2_session_recv" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Receives frames from the remote peer.</p>
|
|
<p>This function receives as many frames as possible until the user
|
|
callback <a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> returns
|
|
<a class="reference internal" href="#NGHTTP2_ERR_WOULDBLOCK" title="NGHTTP2_ERR_WOULDBLOCK"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_WOULDBLOCK</span></tt></a>. This function calls several
|
|
callback functions which are passed when initializing the
|
|
<em>session</em>. Here is the simple time chart which tells when each
|
|
callback is invoked:</p>
|
|
<ol class="arabic simple">
|
|
<li><a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked one
|
|
or more times to receive frame header.</li>
|
|
<li>If the frame is DATA frame:<ol class="arabic">
|
|
<li><a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked
|
|
to receive DATA payload. For each chunk of data,
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_data_chunk_recv_callback" title="nghttp2_session_callbacks.on_data_chunk_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_data_chunk_recv_callback</span></tt></a>
|
|
is invoked.</li>
|
|
<li>If one DATA frame is completely received,
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_frame_recv_callback" title="nghttp2_session_callbacks.on_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_frame_recv_callback</span></tt></a> is
|
|
invoked. If the reception of the frame triggers the
|
|
closure of the stream,
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_stream_close_callback" title="nghttp2_session_callbacks.on_stream_close_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_stream_close_callback</span></tt></a>
|
|
is invoked.</li>
|
|
</ol>
|
|
</li>
|
|
<li>If the frame is the control frame:<ol class="arabic">
|
|
<li><a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked
|
|
one or more times to receive whole frame.</li>
|
|
<li>If the received frame is valid, then following actions are
|
|
taken. If the frame is either HEADERS or PUSH_PROMISE,
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_begin_headers_callback" title="nghttp2_session_callbacks.on_begin_headers_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_begin_headers_callback</span></tt></a>
|
|
is invoked. Then
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_header_callback" title="nghttp2_session_callbacks.on_header_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_header_callback</span></tt></a> is
|
|
invoked for each header name/value pair. After all name/value
|
|
pairs are emitted successfully,
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_frame_recv_callback" title="nghttp2_session_callbacks.on_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_frame_recv_callback</span></tt></a> is
|
|
invoked. For other frames,
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_frame_recv_callback" title="nghttp2_session_callbacks.on_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_frame_recv_callback</span></tt></a> is
|
|
invoked.
|
|
If the reception of the frame triggers the closure of the
|
|
stream,
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_stream_close_callback" title="nghttp2_session_callbacks.on_stream_close_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_stream_close_callback</span></tt></a>
|
|
is invoked.</li>
|
|
<li>If the received frame is unpacked but is interpreted as
|
|
invalid,
|
|
<a class="reference internal" href="#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="#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>
|
|
<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="#NGHTTP2_ERR_EOF" title="NGHTTP2_ERR_EOF"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_EOF</span></tt></a></dt>
|
|
<dd>The remote peer did shutdown on the connection.</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a></dt>
|
|
<dd>The callback function failed.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_mem_recv">
|
|
ssize_t <tt class="descname">nghttp2_session_mem_recv</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const uint8_t<em> *in</em>, size_t<em> inlen</em><big>)</big><a class="headerlink" href="#nghttp2_session_mem_recv" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Processes data <em>in</em> as an input from the remote endpoint. The
|
|
<em>inlen</em> indicates the number of bytes in the <em>in</em>.</p>
|
|
<p>This function behaves like <a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a> except that it
|
|
does not use <a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> to
|
|
receive data; the <em>in</em> is the only data for the invocation of this
|
|
function. If all bytes are processed, this function returns. The
|
|
other callbacks are called in the same way as they are in
|
|
<a class="reference internal" href="#nghttp2_session_recv" title="nghttp2_session_recv"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_recv()</span></tt></a>.</p>
|
|
<p>In the current implementation, this function always tries to
|
|
processes all input data unless either an error occurs or
|
|
<a class="reference internal" href="#NGHTTP2_ERR_PAUSE" title="NGHTTP2_ERR_PAUSE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_PAUSE</span></tt></a> is returned from
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_header_callback" title="nghttp2_session_callbacks.on_header_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_header_callback</span></tt></a> or
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.on_data_chunk_recv_callback" title="nghttp2_session_callbacks.on_data_chunk_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_data_chunk_recv_callback</span></tt></a>.
|
|
If <a class="reference internal" href="#NGHTTP2_ERR_PAUSE" title="NGHTTP2_ERR_PAUSE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_PAUSE</span></tt></a> is used, the return value includes the
|
|
number of bytes which was used to produce the data or frame for the
|
|
callback.</p>
|
|
<p>This function returns the number of processed bytes, or one of the
|
|
following negative error codes:</p>
|
|
<dl class="docutils">
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_CALLBACK_FAILURE" title="NGHTTP2_ERR_CALLBACK_FAILURE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_CALLBACK_FAILURE</span></tt></a></dt>
|
|
<dd>The callback function failed.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_resume_data">
|
|
int <tt class="descname">nghttp2_session_resume_data</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em><big>)</big><a class="headerlink" href="#nghttp2_session_resume_data" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Puts back previously deferred DATA frame in the stream <em>stream_id</em>
|
|
to the outbound queue.</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="#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 stream does not exist or no deferred data exist.</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_want_read">
|
|
int <tt class="descname">nghttp2_session_want_read</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><a class="headerlink" href="#nghttp2_session_want_read" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns nonzero value if <em>session</em> wants to receive data from the
|
|
remote peer.</p>
|
|
<p>If both <a class="reference internal" href="#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="#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, the application should
|
|
drop the connection.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_want_write">
|
|
int <tt class="descname">nghttp2_session_want_write</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><a class="headerlink" href="#nghttp2_session_want_write" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns nonzero value if <em>session</em> wants to send data to the remote
|
|
peer.</p>
|
|
<p>If both <a class="reference internal" href="#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="#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, the application should
|
|
drop the connection.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_get_stream_user_data">
|
|
void* <tt class="descname">nghttp2_session_get_stream_user_data</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em><big>)</big><a class="headerlink" href="#nghttp2_session_get_stream_user_data" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns stream_user_data for the stream <em>stream_id</em>. The
|
|
stream_user_data is provided by <a class="reference internal" href="#nghttp2_submit_request" title="nghttp2_submit_request"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_request()</span></tt></a>,
|
|
<a class="reference internal" href="#nghttp2_submit_headers" title="nghttp2_submit_headers"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_headers()</span></tt></a> or
|
|
<a class="reference internal" href="#nghttp2_session_set_stream_user_data" title="nghttp2_session_set_stream_user_data"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_set_stream_user_data()</span></tt></a>. Unless it is set using
|
|
<a class="reference internal" href="#nghttp2_session_set_stream_user_data" title="nghttp2_session_set_stream_user_data"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_set_stream_user_data()</span></tt></a>, if the stream is
|
|
initiated by the remote endpoint, stream_user_data is always
|
|
<tt class="docutils literal"><span class="pre">NULL</span></tt>. If the stream does not exist, this function returns
|
|
<tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_set_stream_user_data">
|
|
int <tt class="descname">nghttp2_session_set_stream_user_data</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em>, void<em> *stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_session_set_stream_user_data" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Sets the <em>stream_user_data</em> to the stream denoted by the
|
|
<em>stream_id</em>. If a stream user data is already set to the stream, it
|
|
is replaced with the <em>stream_user_data</em>. It is valid to specify
|
|
<tt class="docutils literal"><span class="pre">NULL</span></tt> in the <em>stream_user_data</em>, which nullifies the associated
|
|
data pointer.</p>
|
|
<p>It is valid to set the <em>stream_user_data</em> to the stream reserved by
|
|
PUSH_PROMISE frame.</p>
|
|
<p>This function returns 0 if it succeeds, or one of following
|
|
negative error codes:</p>
|
|
<dl class="docutils">
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
|
|
<dd>The stream does not exist</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_get_outbound_queue_size">
|
|
size_t <tt class="descname">nghttp2_session_get_outbound_queue_size</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><a class="headerlink" href="#nghttp2_session_get_outbound_queue_size" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns the number of frames in the outbound queue. This does not
|
|
include the deferred DATA frames.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_get_stream_effective_recv_data_length">
|
|
int32_t <tt class="descname">nghttp2_session_get_stream_effective_recv_data_length</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em><big>)</big><a class="headerlink" href="#nghttp2_session_get_stream_effective_recv_data_length" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns the number of DATA payload in bytes received without
|
|
WINDOW_UPDATE transmission for the stream <em>stream_id</em>. The local
|
|
(receive) window size can be adjusted by
|
|
<a class="reference internal" href="#nghttp2_submit_window_update" title="nghttp2_submit_window_update"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_window_update()</span></tt></a>. This function takes into account
|
|
that and returns effective data length. In particular, if the
|
|
local window size is reduced by submitting negative
|
|
window_size_increment with <a class="reference internal" href="#nghttp2_submit_window_update" title="nghttp2_submit_window_update"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_window_update()</span></tt></a>, this
|
|
function returns the number of bytes less than actually received.</p>
|
|
<p>This function returns -1 if it fails.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_get_stream_effective_local_window_size">
|
|
int32_t <tt class="descname">nghttp2_session_get_stream_effective_local_window_size</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em><big>)</big><a class="headerlink" href="#nghttp2_session_get_stream_effective_local_window_size" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns the local (receive) window size for the stream
|
|
<em>stream_id</em>. The local window size can be adjusted by
|
|
<a class="reference internal" href="#nghttp2_submit_window_update" title="nghttp2_submit_window_update"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_window_update()</span></tt></a>. This function takes into account
|
|
that and returns effective window size.</p>
|
|
<p>This function returns -1 if it fails.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_get_effective_recv_data_length">
|
|
int32_t <tt class="descname">nghttp2_session_get_effective_recv_data_length</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><a class="headerlink" href="#nghttp2_session_get_effective_recv_data_length" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns the number of DATA payload in bytes received without
|
|
WINDOW_UPDATE transmission for a connection. The local (receive)
|
|
window size can be adjusted by
|
|
<a class="reference internal" href="#nghttp2_submit_window_update" title="nghttp2_submit_window_update"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_window_update()</span></tt></a>. This function takes into account
|
|
that and returns effective data length. In particular, if the local
|
|
window size is reduced by submitting negative window_size_increment
|
|
with <a class="reference internal" href="#nghttp2_submit_window_update" title="nghttp2_submit_window_update"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_window_update()</span></tt></a>, this function returns the
|
|
number of bytes less than actually received.</p>
|
|
<p>This function returns -1 if it fails.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_get_effective_local_window_size">
|
|
int32_t <tt class="descname">nghttp2_session_get_effective_local_window_size</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em><big>)</big><a class="headerlink" href="#nghttp2_session_get_effective_local_window_size" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns the local (receive) window size for a connection. The local
|
|
window size can be adjusted by
|
|
<a class="reference internal" href="#nghttp2_submit_window_update" title="nghttp2_submit_window_update"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_window_update()</span></tt></a>. This function takes into account
|
|
that and returns effective window size.</p>
|
|
<p>This function returns -1 if it fails.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_session_terminate_session">
|
|
int <tt class="descname">nghttp2_session_terminate_session</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, <a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em><big>)</big><a class="headerlink" href="#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="#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="#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="#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="#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>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="#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>
|
|
<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="#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="nghttp2_session_upgrade">
|
|
int <tt class="descname">nghttp2_session_upgrade</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, const uint8_t<em> *settings_payload</em>, size_t<em> settings_payloadlen</em>, void<em> *stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_session_upgrade" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Performs post-process of HTTP Upgrade request. This function can be
|
|
called from both client and server, but the behavior is very
|
|
different in each other.</p>
|
|
<p>If called from client side, the <em>settings_payload</em> must be the
|
|
value sent in <tt class="docutils literal"><span class="pre">HTTP2-Settings</span></tt> header field and must be decoded
|
|
by base64url decoder. The <em>settings_payloadlen</em> is the length of
|
|
<em>settings_payload</em>. The <em>settings_payload</em> is unpacked and its
|
|
setting values will be submitted using
|
|
<a class="reference internal" href="#nghttp2_submit_settings" title="nghttp2_submit_settings"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_settings()</span></tt></a>. This means that the client application
|
|
code does not need to submit SETTINGS by itself. The stream with
|
|
stream ID=1 is opened and the <em>stream_user_data</em> is used for its
|
|
stream_user_data. The opened stream becomes half-closed (local)
|
|
state.</p>
|
|
<p>If called from server side, the <em>settings_payload</em> must be the
|
|
value received in <tt class="docutils literal"><span class="pre">HTTP2-Settings</span></tt> header field and must be
|
|
decoded by base64url decoder. The <em>settings_payloadlen</em> is the
|
|
length of <em>settings_payload</em>. It is treated as if the SETTINGS
|
|
frame with that payload is received. Thus, callback functions for
|
|
the reception of SETTINGS frame will be invoked. The stream with
|
|
stream ID=1 is opened. The <em>stream_user_data</em> is ignored. The
|
|
opened stream becomes half-closed (remote).</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="#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="#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>settings_payload</em> is badly formed.</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_PROTO" title="NGHTTP2_ERR_PROTO"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_PROTO</span></tt></a></dt>
|
|
<dd>The stream ID 1 is already used or closed; or is not available;
|
|
or the <em>settings_payload</em> does not include both
|
|
<a class="reference internal" href="#NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS" title="NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS</span></tt></a> and
|
|
<a class="reference internal" href="#NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE" title="NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE</span></tt></a>.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_pack_settings_payload">
|
|
ssize_t <tt class="descname">nghttp2_pack_settings_payload</tt><big>(</big>uint8_t<em> *buf</em>, size_t<em> buflen</em>, const <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry">nghttp2_settings_entry</a><em> *iv</em>, size_t<em> niv</em><big>)</big><a class="headerlink" href="#nghttp2_pack_settings_payload" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Serializes the SETTINGS values <em>iv</em> in the <em>buf</em>. The size of the
|
|
<em>buf</em> is specified by <em>buflen</em>. The number of entries in the <em>iv</em>
|
|
array is given by <em>niv</em>. The required space in <em>buf</em> for the <em>niv</em>
|
|
entries is <tt class="docutils literal"><span class="pre">8*niv</span></tt> bytes and if the given buffer is too small, an
|
|
error is returned. This function is used mainly for creating a
|
|
SETTINGS payload to be sent with the <tt class="docutils literal"><span class="pre">HTTP2-Settings</span></tt> header
|
|
field in an HTTP Upgrade request. The data written in <em>buf</em> is NOT
|
|
base64url encoded and the application is responsible for encoding.</p>
|
|
<p>This function returns the number of bytes written in <em>buf</em>, or one
|
|
of the following negative error codes:</p>
|
|
<dl class="docutils">
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
|
|
<dd>The <em>iv</em> contains duplicate settings ID or invalid value.</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_INSUFF_BUFSIZE" title="NGHTTP2_ERR_INSUFF_BUFSIZE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INSUFF_BUFSIZE</span></tt></a></dt>
|
|
<dd>The provided <em>buflen</em> size is too small to hold the output.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_strerror">
|
|
const char* <tt class="descname">nghttp2_strerror</tt><big>(</big>int<em> lib_error_code</em><big>)</big><a class="headerlink" href="#nghttp2_strerror" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns string describing the <em>lib_error_code</em>. The
|
|
<em>lib_error_code</em> must be one of the <a class="reference internal" href="#nghttp2_error" title="nghttp2_error"><tt class="xref c c-macro docutils literal"><span class="pre">nghttp2_error</span></tt></a>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_submit_request">
|
|
int <tt class="descname">nghttp2_submit_request</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> pri</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em> *nva</em>, size_t<em> nvlen</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em> *data_prd</em>, void<em> *stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_request" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits HEADERS frame and optionally one or more DATA frames.</p>
|
|
<p>The <em>pri</em> is priority of this request. 0 is the highest priority
|
|
value and <a class="reference internal" href="#NGHTTP2_PRI_LOWEST" title="NGHTTP2_PRI_LOWEST"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_PRI_LOWEST</span></tt></a> is the lowest value.</p>
|
|
<p>The <em>nva</em> is an array of name/value pair <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_nv</span></tt></a> with
|
|
<em>nvlen</em> elements. The value is opaque sequence of bytes and
|
|
therefore can contain NULL byte (0x0). If the application requires
|
|
that the ordering of values for a single header field name
|
|
appearing in different header fields, it has to concatenate them
|
|
using NULL byte (0x0) before passing them to this function.</p>
|
|
<p>HTTP/2.0 specification has requirement about header fields in the
|
|
request HEADERS. See the specification for more details.</p>
|
|
<p>This function creates copies of all name/value pairs in <em>nva</em>. It
|
|
also lower-cases all names in <em>nva</em>.</p>
|
|
<p>If <em>data_prd</em> is not <tt class="docutils literal"><span class="pre">NULL</span></tt>, it provides data which will be sent
|
|
in subsequent DATA frames. In this case, a method that allows
|
|
request message bodies
|
|
(<a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9</a>) must
|
|
be specified with <tt class="docutils literal"><span class="pre">:method</span></tt> key in <em>nva</em> (e.g. <tt class="docutils literal"><span class="pre">POST</span></tt>). This
|
|
function does not take ownership of the <em>data_prd</em>. The function
|
|
copies the members of the <em>data_prd</em>. If <em>data_prd</em> is <tt class="docutils literal"><span class="pre">NULL</span></tt>,
|
|
HEADERS have END_STREAM set. The <em>stream_user_data</em> is data
|
|
associated to the stream opened by this request and can be an
|
|
arbitrary pointer, which can be retrieved later by
|
|
<a class="reference internal" href="#nghttp2_session_get_stream_user_data" title="nghttp2_session_get_stream_user_data"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_get_stream_user_data()</span></tt></a>.</p>
|
|
<p>Since the library reorders the frames and tries to send the highest
|
|
prioritized one first and the HTTP/2.0 specification requires the
|
|
stream ID must be strictly increasing, the stream ID of this
|
|
request cannot be known until it is about to sent. To know the
|
|
stream ID of the request, the application can use
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.before_frame_send_callback" title="nghttp2_session_callbacks.before_frame_send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.before_frame_send_callback</span></tt></a>. This
|
|
callback is called just before the frame is sent. For HEADERS
|
|
frame, the argument frame has the stream ID assigned. Also since
|
|
the stream is already opened,
|
|
<a class="reference internal" href="#nghttp2_session_get_stream_user_data" title="nghttp2_session_get_stream_user_data"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_get_stream_user_data()</span></tt></a> can be used to get
|
|
<em>stream_user_data</em> to identify which HEADERS we are processing.</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="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
|
|
<dd>The <em>pri</em> is invalid</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_submit_response">
|
|
int <tt class="descname">nghttp2_submit_response</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, int32_t<em> stream_id</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em> *nva</em>, size_t<em> nvlen</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em> *data_prd</em><big>)</big><a class="headerlink" href="#nghttp2_submit_response" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits response HEADERS frame and optionally one or more DATA
|
|
frames against the stream <em>stream_id</em>.</p>
|
|
<p>The <em>nva</em> is an array of name/value pair <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_nv</span></tt></a> with
|
|
<em>nvlen</em> elements. The value is opaque sequence of bytes and
|
|
therefore can contain NULL byte (0x0). If the application requires
|
|
that the ordering of values for a single header field name
|
|
appearing in different header fields, it has to concatenate them
|
|
using NULL byte (0x0) before passing them to this function.</p>
|
|
<p>HTTP/2.0 specification has requirement about header fields in the
|
|
response HEADERS. See the specification for more details.</p>
|
|
<p>This function creates copies of all name/value pairs in <em>nva</em>. It
|
|
also lower-cases all names in <em>nva</em>.</p>
|
|
<p>If <em>data_prd</em> is not <tt class="docutils literal"><span class="pre">NULL</span></tt>, it provides data which will be sent
|
|
in subsequent DATA frames. This function does not take ownership
|
|
of the <em>data_prd</em>. The function copies the members of the
|
|
<em>data_prd</em>. If <em>data_prd</em> is <tt class="docutils literal"><span class="pre">NULL</span></tt>, HEADERS will have
|
|
END_STREAM flag set.</p>
|
|
<p>This method can be used as normal HTTP response and push
|
|
response. When pushing a resource using this function, the
|
|
<em>session</em> must be configured using <a class="reference internal" href="#nghttp2_session_server_new" title="nghttp2_session_server_new"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_session_server_new()</span></tt></a>
|
|
or its variants and the target stream denoted by the <em>stream_id</em>
|
|
must be reserved using <a class="reference internal" href="#nghttp2_submit_push_promise" title="nghttp2_submit_push_promise"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_push_promise()</span></tt></a>.</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="#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="nghttp2_submit_headers">
|
|
int <tt class="descname">nghttp2_submit_headers</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, int32_t<em> pri</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em> *nva</em>, size_t<em> nvlen</em>, void<em> *stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_headers" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits HEADERS frame. The <em>flags</em> is bitwise OR of the
|
|
following values:</p>
|
|
<ul class="simple">
|
|
<li><a class="reference internal" href="#NGHTTP2_FLAG_END_STREAM" title="NGHTTP2_FLAG_END_STREAM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_STREAM</span></tt></a></li>
|
|
<li><a class="reference internal" href="#NGHTTP2_FLAG_END_HEADERS" title="NGHTTP2_FLAG_END_HEADERS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_HEADERS</span></tt></a></li>
|
|
<li><a class="reference internal" href="#NGHTTP2_FLAG_PRIORITY" title="NGHTTP2_FLAG_PRIORITY"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_PRIORITY</span></tt></a></li>
|
|
</ul>
|
|
<p>If <em>flags</em> includes <a class="reference internal" href="#NGHTTP2_FLAG_END_STREAM" title="NGHTTP2_FLAG_END_STREAM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_STREAM</span></tt></a>, this frame has
|
|
END_STREAM flag set. The library does not support header
|
|
continuation and the HEADERS frame always has
|
|
<a class="reference internal" href="#NGHTTP2_FLAG_END_HEADERS" title="NGHTTP2_FLAG_END_HEADERS"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_HEADERS</span></tt></a> flag set regardless of the <em>flags</em>
|
|
value.</p>
|
|
<p>If the <em>stream_id</em> is -1, this frame is assumed as request (i.e.,
|
|
request HEADERS frame which opens new stream). In this case, the
|
|
actual stream ID is assigned just before the frame is sent. For
|
|
response, specify stream ID in <em>stream_id</em>.</p>
|
|
<p>The <em>pri</em> is priority of this request.</p>
|
|
<p>The <em>nva</em> is an array of name/value pair <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_nv</span></tt></a> with
|
|
<em>nvlen</em> elements. The value is opaque sequence of bytes and
|
|
therefore can contain NULL byte (0x0). If the application requires
|
|
that the ordering of values for a single header field name
|
|
appearing in different header fields, it has to concatenate them
|
|
using NULL byte (0x0) before passing them to this function.</p>
|
|
<p>This function creates copies of all name/value pairs in <em>nva</em>. It
|
|
also lower-cases all names in <em>nva</em>.</p>
|
|
<p>The <em>stream_user_data</em> is a pointer to an arbitrary data which is
|
|
associated to the stream this frame will open. Therefore it is only
|
|
used if this frame opens streams, in other words, it changes stream
|
|
state from idle or reserved to open.</p>
|
|
<p>This function is low-level in a sense that the application code can
|
|
specify flags directly. For usual HTTP request,
|
|
<a class="reference internal" href="#nghttp2_submit_request" title="nghttp2_submit_request"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_request()</span></tt></a> is useful.</p>
|
|
<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="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
|
|
<dd>The <em>pri</em> is invalid</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_submit_data">
|
|
int <tt class="descname">nghttp2_submit_data</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em> *data_prd</em><big>)</big><a class="headerlink" href="#nghttp2_submit_data" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits one or more DATA frames to the stream <em>stream_id</em>. The
|
|
data to be sent are provided by <em>data_prd</em>. If <em>flags</em> contains
|
|
<a class="reference internal" href="#NGHTTP2_FLAG_END_STREAM" title="NGHTTP2_FLAG_END_STREAM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_STREAM</span></tt></a>, the last DATA frame has END_STREAM
|
|
flag set.</p>
|
|
<p>This function does not take ownership of the <em>data_prd</em>. The
|
|
function copies the members of the <em>data_prd</em>.</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="#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="nghttp2_submit_priority">
|
|
int <tt class="descname">nghttp2_submit_priority</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, int32_t<em> pri</em><big>)</big><a class="headerlink" href="#nghttp2_submit_priority" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits PRIORITY frame to change the priority of stream <em>stream_id</em>
|
|
to the priority value <em>pri</em>.</p>
|
|
<p>The <em>flags</em> is currently ignored and should be
|
|
<a class="reference internal" href="#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>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="#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="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
|
|
<dd>The <em>pri</em> is negative.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_submit_rst_stream">
|
|
int <tt class="descname">nghttp2_submit_rst_stream</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, <a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em><big>)</big><a class="headerlink" href="#nghttp2_submit_rst_stream" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits RST_STREAM frame to cancel/reject the stream <em>stream_id</em>
|
|
with the error code <em>error_code</em>.</p>
|
|
<p>The <em>flags</em> is currently ignored and should be
|
|
<a class="reference internal" href="#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>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="#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="nghttp2_submit_settings">
|
|
int <tt class="descname">nghttp2_submit_settings</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, const <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry">nghttp2_settings_entry</a><em> *iv</em>, size_t<em> niv</em><big>)</big><a class="headerlink" href="#nghttp2_submit_settings" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Stores local settings and submits SETTINGS frame. The <em>iv</em> is the
|
|
pointer to the array of <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_settings_entry</span></tt></a>. The <em>niv</em>
|
|
indicates the number of <a class="reference internal" href="#nghttp2_settings_entry" title="nghttp2_settings_entry"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_settings_entry</span></tt></a>.</p>
|
|
<p>The <em>flags</em> is currently ignored and should be
|
|
<a class="reference internal" href="#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>This function does not take ownership of the <em>iv</em>. This function
|
|
copies all the elements in the <em>iv</em>.</p>
|
|
<p>While updating individual stream’s local window size, if the window
|
|
size becomes strictly larger than NGHTTP2_MAX_WINDOW_SIZE,
|
|
RST_STREAM is issued against such a stream.</p>
|
|
<p>SETTINGS with <a class="reference internal" href="#NGHTTP2_FLAG_ACK" title="NGHTTP2_FLAG_ACK"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_ACK</span></tt></a> is automatically submitted
|
|
by the library and application could not send it at its will.</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="#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>iv</em> contains invalid value (e.g., initial window size
|
|
strictly greater than (1 << 31) - 1.</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_submit_push_promise">
|
|
int <tt class="descname">nghttp2_submit_push_promise</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em> *nva</em>, size_t<em> nvlen</em><big>)</big><a class="headerlink" href="#nghttp2_submit_push_promise" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits PUSH_PROMISE frame. The <em>flags</em> is currently ignored and
|
|
the resulting PUSH_PROMISE frame always has
|
|
<a class="reference internal" href="#NGHTTP2_FLAG_END_PUSH_PROMISE" title="NGHTTP2_FLAG_END_PUSH_PROMISE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_PUSH_PROMISE</span></tt></a> flag set due to the lack of
|
|
header continuation support in the library.</p>
|
|
<p>The <em>stream_id</em> must be client initiated stream ID.</p>
|
|
<p>The <em>nva</em> is an array of name/value pair <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_nv</span></tt></a> with
|
|
<em>nvlen</em> elements. The value is opaque sequence of bytes and
|
|
therefore can contain NULL byte (0x0). If the application requires
|
|
that the ordering of values for a single header field name
|
|
appearing in different header fields, it has to concatenate them
|
|
using NULL byte (0x0) before passing them to this function.</p>
|
|
<p>This function creates copies of all name/value pairs in <em>nva</em>. It
|
|
also lower-cases all names in <em>nva</em>.</p>
|
|
<p>Since the library reorders the frames and tries to send the highest
|
|
prioritized one first and the HTTP/2.0 specification requires the
|
|
stream ID must be strictly increasing, the promised stream ID
|
|
cannot be known until it is about to sent. To know the promised
|
|
stream ID, the application can use
|
|
<a class="reference internal" href="#nghttp2_session_callbacks.before_frame_send_callback" title="nghttp2_session_callbacks.before_frame_send_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.before_frame_send_callback</span></tt></a>. This
|
|
callback is called just before the frame is sent. For PUSH_PROMISE
|
|
frame, the argument frame has the promised stream ID assigned.</p>
|
|
<p>The client side can use this function to send PUSH_PROMISE to the
|
|
server. But in normal HTTP usage, the server may treat it error.</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="#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="nghttp2_submit_ping">
|
|
int <tt class="descname">nghttp2_submit_ping</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, uint8_t<em> *opaque_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_ping" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits PING frame. You don’t have to send PING back when you
|
|
received PING frame. The library automatically submits PING frame
|
|
in this case.</p>
|
|
<p>The <em>flags</em> is currently ignored and should be
|
|
<a class="reference internal" href="#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 non <tt class="docutils literal"><span class="pre">NULL</span></tt>, then it should point to the 8
|
|
bytes array of memory to specify opaque data to send with PING
|
|
frame. If the <em>opaque_data</em> is <tt class="docutils literal"><span class="pre">NULL</span></tt>, zero-cleared 8 bytes will
|
|
be sent as opaque data.</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="#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="nghttp2_submit_goaway">
|
|
int <tt class="descname">nghttp2_submit_goaway</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, <a class="reference internal" href="#nghttp2_error_code" title="nghttp2_error_code">nghttp2_error_code</a><em> error_code</em>, uint8_t<em> *opaque_data</em>, size_t<em> opaque_data_len</em><big>)</big><a class="headerlink" href="#nghttp2_submit_goaway" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits GOAWAY frame with the error code <em>error_code</em>.</p>
|
|
<p>The <em>flags</em> is currently ignored and should be
|
|
<a class="reference internal" href="#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
|
|
zero, those data will be sent as additional debug data. The
|
|
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>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="#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="nghttp2_submit_window_update">
|
|
int <tt class="descname">nghttp2_submit_window_update</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em> *session</em>, uint8_t<em> flags</em>, int32_t<em> stream_id</em>, int32_t<em> window_size_increment</em><big>)</big><a class="headerlink" href="#nghttp2_submit_window_update" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Submits WINDOW_UPDATE frame.</p>
|
|
<p>The <em>flags</em> is currently ignored and should be
|
|
<a class="reference internal" href="#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>window_size_increment</em> is positive, the WINDOW_UPDATE with
|
|
that value as window_size_increment is queued. If the
|
|
<em>window_size_increment</em> is larger than the received bytes from the
|
|
remote endpoint, the local window size is increased by that
|
|
difference.</p>
|
|
<p>If the <em>window_size_increment</em> is negative, the local window size
|
|
is decreased by -<em>window_size_increment</em>. If
|
|
<a class="reference internal" href="#NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE" title="NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE</span></tt></a> (or
|
|
<a class="reference internal" href="#NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE" title="NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE</span></tt></a> if <em>stream_id</em>
|
|
is 0) is not set and the library decided that the WINDOW_UPDATE
|
|
should be submitted, then WINDOW_UPDATE is queued with the current
|
|
received bytes count.</p>
|
|
<p>If the <em>window_size_increment</em> is 0, the function does nothing and
|
|
returns 0.</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="#NGHTTP2_ERR_FLOW_CONTROL" title="NGHTTP2_ERR_FLOW_CONTROL"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_FLOW_CONTROL</span></tt></a></dt>
|
|
<dd>The local window size overflow or gets negative.</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_nv_compare_name">
|
|
int <tt class="descname">nghttp2_nv_compare_name</tt><big>(</big>const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em> *lhs</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em> *rhs</em><big>)</big><a class="headerlink" href="#nghttp2_nv_compare_name" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Compares lhs->name with lhs->namelen bytes and rhs->name with
|
|
rhs->namelen bytes. Returns negative integer if lhs->name is found
|
|
to be less than rhs->name; or returns positive integer if lhs->name
|
|
is found to be greater than rhs->name; or returns 0 otherwise.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_select_next_protocol">
|
|
int <tt class="descname">nghttp2_select_next_protocol</tt><big>(</big>unsigned char<em> **out</em>, unsigned char<em> *outlen</em>, const unsigned char<em> *in</em>, unsigned int<em> inlen</em><big>)</big><a class="headerlink" href="#nghttp2_select_next_protocol" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>A helper function for dealing with NPN in client side or ALPN in
|
|
server side. The <em>in</em> contains peer’s protocol list in preferable
|
|
order. The format of <em>in</em> is length-prefixed and not
|
|
null-terminated. For example, <tt class="docutils literal"><span class="pre">HTTP-draft-04/2.0</span></tt> and
|
|
<tt class="docutils literal"><span class="pre">http/1.1</span></tt> stored in <em>in</em> like this:</p>
|
|
<div class="highlight-c"><div class="highlight"><pre><span class="n">in</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">17</span>
|
|
<span class="n">in</span><span class="p">[</span><span class="mf">1..17</span><span class="p">]</span> <span class="o">=</span> <span class="s">"HTTP-draft-04/2.0"</span>
|
|
<span class="n">in</span><span class="p">[</span><span class="mi">18</span><span class="p">]</span> <span class="o">=</span> <span class="mi">8</span>
|
|
<span class="n">in</span><span class="p">[</span><span class="mf">19..26</span><span class="p">]</span> <span class="o">=</span> <span class="s">"http/1.1"</span>
|
|
<span class="n">inlen</span> <span class="o">=</span> <span class="mi">27</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>The selection algorithm is as follows:</p>
|
|
<ol class="arabic simple">
|
|
<li>If peer’s list contains HTTP/2.0 protocol the library supports,
|
|
it is selected and returns 1. The following step is not taken.</li>
|
|
<li>If peer’s list contains <tt class="docutils literal"><span class="pre">http/1.1</span></tt>, this function selects
|
|
<tt class="docutils literal"><span class="pre">http/1.1</span></tt> and returns 0. The following step is not taken.</li>
|
|
<li>This function selects nothing and returns -1. (So called
|
|
non-overlap case). In this case, <em>out</em> and <em>outlen</em> are left
|
|
untouched.</li>
|
|
</ol>
|
|
<p>Selecting <tt class="docutils literal"><span class="pre">HTTP-draft-04/2.0</span></tt> means that <tt class="docutils literal"><span class="pre">HTTP-draft-04/2.0</span></tt> is
|
|
written into <em>*out</em> and its length (which is 17) is
|
|
assigned to <em>*outlen</em>.</p>
|
|
<p>For ALPN, refer to
|
|
<a class="reference external" href="http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04">http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04</a></p>
|
|
<p>See <a class="reference external" href="http://technotes.googlecode.com/git/nextprotoneg.html">http://technotes.googlecode.com/git/nextprotoneg.html</a> for more
|
|
details about NPN.</p>
|
|
<p>For NPN, to use this method you should do something like:</p>
|
|
<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">select_next_proto_cb</span><span class="p">(</span><span class="n">SSL</span><span class="o">*</span> <span class="n">ssl</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">**</span><span class="n">out</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">outlen</span><span class="p">,</span>
|
|
<span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">in</span><span class="p">,</span>
|
|
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">inlen</span><span class="p">,</span>
|
|
<span class="kt">void</span> <span class="o">*</span><span class="n">arg</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="n">rv</span> <span class="o">=</span> <span class="n">nghttp2_select_next_protocol</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">outlen</span><span class="p">,</span> <span class="n">in</span><span class="p">,</span> <span class="n">inlen</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="mi">1</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="p">((</span><span class="n">MyType</span><span class="o">*</span><span class="p">)</span><span class="n">arg</span><span class="p">)</span><span class="o">-></span><span class="n">http2_selected</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</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="p">...</span>
|
|
<span class="n">SSL_CTX_set_next_proto_select_cb</span><span class="p">(</span><span class="n">ssl_ctx</span><span class="p">,</span> <span class="n">select_next_proto_cb</span><span class="p">,</span> <span class="n">my_obj</span><span class="p">);</span>
|
|
</pre></div>
|
|
</div>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_gzip_inflate_new">
|
|
int <tt class="descname">nghttp2_gzip_inflate_new</tt><big>(</big><a class="reference internal" href="#nghttp2_gzip" title="nghttp2_gzip">nghttp2_gzip</a><em> **inflater_ptr</em><big>)</big><a class="headerlink" href="#nghttp2_gzip_inflate_new" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>A helper function to set up a per request gzip stream to inflate data.</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="#NGHTTP2_ERR_GZIP" title="NGHTTP2_ERR_GZIP"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_GZIP</span></tt></a></dt>
|
|
<dd>The initialization of gzip stream failed.</dd>
|
|
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
|
|
<dd>Out of memory.</dd>
|
|
</dl>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_gzip_inflate_del">
|
|
void <tt class="descname">nghttp2_gzip_inflate_del</tt><big>(</big><a class="reference internal" href="#nghttp2_gzip" title="nghttp2_gzip">nghttp2_gzip</a><em> *inflater</em><big>)</big><a class="headerlink" href="#nghttp2_gzip_inflate_del" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Frees the inflate stream. The <em>inflater</em> may be <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_gzip_inflate">
|
|
int <tt class="descname">nghttp2_gzip_inflate</tt><big>(</big><a class="reference internal" href="#nghttp2_gzip" title="nghttp2_gzip">nghttp2_gzip</a><em> *inflater</em>, uint8_t<em> *out</em>, size_t<em> *outlen_ptr</em>, const uint8_t<em> *in</em>, size_t<em> *inlen_ptr</em><big>)</big><a class="headerlink" href="#nghttp2_gzip_inflate" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Inflates data in <em>in</em> with the length <em>*inlen_ptr</em> and stores the
|
|
inflated data to <em>out</em> which has allocated size at least
|
|
<em>*outlen_ptr</em>. On return, <em>*outlen_ptr</em> is updated to represent
|
|
the number of data written in <em>out</em>. Similarly, <em>*inlen_ptr</em> is
|
|
updated to represent the number of input bytes processed.</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="#NGHTTP2_ERR_GZIP" title="NGHTTP2_ERR_GZIP"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_GZIP</span></tt></a></dt>
|
|
<dd>The inflation of gzip stream failed.</dd>
|
|
</dl>
|
|
<p>The example follows:</p>
|
|
<div class="highlight-c"><div class="highlight"><pre><span class="kt">void</span> <span class="nf">on_data_chunk_recv_callback</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>
|
|
<span class="k">const</span> <span class="kt">uint8_t</span> <span class="o">*</span><span class="n">data</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">len</span><span class="p">,</span>
|
|
<span class="kt">void</span> <span class="o">*</span><span class="n">user_data</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="p">...</span>
|
|
<span class="n">req</span> <span class="o">=</span> <span class="n">nghttp2_session_get_stream_user_data</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">stream_id</span><span class="p">);</span>
|
|
<span class="n">nghttp2_gzip</span> <span class="o">*</span><span class="n">inflater</span> <span class="o">=</span> <span class="n">req</span><span class="o">-></span><span class="n">inflater</span><span class="p">;</span>
|
|
<span class="k">while</span><span class="p">(</span><span class="n">len</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="kt">uint8_t</span> <span class="n">out</span><span class="p">[</span><span class="n">MAX_OUTLEN</span><span class="p">];</span>
|
|
<span class="kt">size_t</span> <span class="n">outlen</span> <span class="o">=</span> <span class="n">MAX_OUTLEN</span><span class="p">;</span>
|
|
<span class="kt">size_t</span> <span class="n">tlen</span> <span class="o">=</span> <span class="n">len</span><span class="p">;</span>
|
|
<span class="kt">int</span> <span class="n">rv</span><span class="p">;</span>
|
|
<span class="n">rv</span> <span class="o">=</span> <span class="n">nghttp2_gzip_inflate</span><span class="p">(</span><span class="n">inflater</span><span class="p">,</span> <span class="n">out</span><span class="p">,</span> <span class="o">&</span><span class="n">outlen</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="o">&</span><span class="n">tlen</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="mi">0</span><span class="p">)</span> <span class="p">{</span>
|
|
<span class="n">nghttp2_submit_rst_stream</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">stream_id</span><span class="p">,</span>
|
|
<span class="n">NGHTTP2_INTERNAL_ERROR</span><span class="p">);</span>
|
|
<span class="k">break</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">...</span> <span class="n">Do</span> <span class="n">stuff</span> <span class="p">...</span>
|
|
<span class="n">data</span> <span class="o">+=</span> <span class="n">tlen</span><span class="p">;</span>
|
|
<span class="n">len</span> <span class="o">-=</span> <span class="n">tlen</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">....</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
</div>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_version">
|
|
<a class="reference internal" href="#nghttp2_info" title="nghttp2_info">nghttp2_info</a> *<tt class="descname">nghttp2_version</tt><big>(</big>int<em> least_version</em><big>)</big><a class="headerlink" href="#nghttp2_version" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns a pointer to a nghttp2_info struct with version information about
|
|
the run-time library in use. The <em>least_version</em> argument can be set to a
|
|
24 bit numerical value for the least accepted version number and if the
|
|
condition is not met, this function will return a NULL. Pass in 0 to skip
|
|
the version checking.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_is_fatal">
|
|
int <tt class="descname">nghttp2_is_fatal</tt><big>(</big>int<em> lib_error</em><big>)</big><a class="headerlink" href="#nghttp2_is_fatal" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns nonzero if the <a class="reference internal" href="#nghttp2_error" title="nghttp2_error"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_error</span></tt></a> library error code
|
|
<em>lib_error</em> is fatal.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_check_header_name">
|
|
int <tt class="descname">nghttp2_check_header_name</tt><big>(</big>const uint8_t<em> *name</em>, size_t<em> len</em><big>)</big><a class="headerlink" href="#nghttp2_check_header_name" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns nonzero if HTTP header field name <em>name</em> of length <em>len</em> is
|
|
valid according to
|
|
<a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#section-3.2">http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#section-3.2</a></p>
|
|
<p>Because this is a header field name in HTTP2, the upper cased alphabet
|
|
is treated as error.</p>
|
|
</dd></dl>
|
|
|
|
<dl class="function">
|
|
<dt id="nghttp2_check_header_value">
|
|
int <tt class="descname">nghttp2_check_header_value</tt><big>(</big>const uint8_t<em> *value</em>, size_t<em> len</em><big>)</big><a class="headerlink" href="#nghttp2_check_header_value" title="Permalink to this definition">¶</a></dt>
|
|
<dd><p>Returns nonzero if HTTP header field value <em>value</em> of length <em>len</em>
|
|
is valid according to
|
|
<a class="reference external" href="http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#section-3.2">http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#section-3.2</a></p>
|
|
<p>Because this is HTTP2 header field value, it can contain NULL
|
|
character (0x00).</p>
|
|
</dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<footer>
|
|
|
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
|
|
|
<a href="nghttp2.h.html" class="btn btn-neutral float-right" title="nghttp2.h"/>Next <span class="fa fa-arrow-circle-right"></span></a>
|
|
|
|
|
|
<a href="tutorial-server.html" class="btn btn-neutral" title="Tutorial: HTTP/2.0 server"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
|
|
|
</div>
|
|
|
|
|
|
<hr/>
|
|
|
|
<div role="contentinfo">
|
|
<p>
|
|
© Copyright 2012, 2014, Tatsuhiro Tsujikawa.
|
|
</p>
|
|
</div>
|
|
|
|
<a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
|
|
</footer>
|
|
</div>
|
|
</div>
|
|
|
|
</section>
|
|
|
|
</div>
|
|
|
|
|
|
</body>
|
|
</html> |