diff --git a/README.lwsws.md b/README.lwsws.md index da790beff7db9a22b71d84bcd8250f0cd4727628..165ed607c4789ec53a37c05dacae582f761ee2fc 100644 --- a/README.lwsws.md +++ b/README.lwsws.md @@ -451,7 +451,7 @@ Enable the protocol like this on a vhost's ws-protocols section "update-ms": "5000" } ``` -"update-ms" is used to control how often updated JSON is sent on a ws link. +`"update-ms"` is used to control how often updated JSON is sent on a ws link. And map the provided HTML into the vhost in the mounts section ``` @@ -462,23 +462,78 @@ And map the provided HTML into the vhost in the mounts section } ``` You might choose to put it on its own vhost which has "interface": "lo", so it's not -externally visible. +externally visible, or use the Basic Auth support to require authentication to +access it. +`"hide-vhosts": "{0 | 1}"` lets you control if information about your vhosts is included. +Since this includes mounts, you might not want to leak that information, mount names, +etc. + +`"filespath":"{path}"` lets you give a server filepath which is read and sent to the browser +on each refresh. For example, you can provide server temperature information on most +Linux systems by giving an appropriate path down /sys. + +This may be given multiple times. + + +@section lwswsreload Lwsws Configuration Reload + +You may send lwsws a `HUP` signal, by, eg + +``` +$ sudo killall -HUP lwsws +``` + +This causes lwsws to "deprecate" the existing lwsws process, and remove and close all of +its listen sockets, but otherwise allowing it to continue to run, until all +of its open connections close. + +When a deprecated lwsws process has no open connections left, it is destroyed +automatically. + +After sending the SIGHUP to the main lwsws process, a new lwsws process, which can +pick up the newly-available listen sockets, and use the current configuration +files, is automatically started. + +The new configuration may differ from the original one in arbitrary ways, the new +context is created from scratch each time without reference to the original one. + +Notes + +1) Protocols that provide a "shared world" like mirror will have as many "worlds" +as there are lwsws processes still active. People connected to a deprecated lwsws +process remain connected to the existing peers. + +But any new connections will apply to the new lwsws process, which does not share +per-vhost "shared world" data with the deprecated process. That means no new +connections on the deprecated context, ie a "shrinking world" for those guys, and a +"growing world" for people who connect after the SIGHUP. + +2) The new lwsws process owes nothing to the previous one. It starts with fresh +plugins, fresh configuration, fresh root privileges if that how you start it. + +The plugins may have been updated in arbitrary ways including struct size changes +etc, and lwsws or lws may also have been updated arbitrarily. + +3) A root parent process is left up that is not able to do anything except +respond to SIGHUP or SIGTERM. Actual serving and network listening etc happens +in child processes which use the privileges set in the lwsws config files. @section lwswssysd Lwsws Integration with Systemd lwsws needs a service file like this as `/usr/lib/systemd/system/lwsws.service` ``` - [Unit] - Description=Libwebsockets Web Server - After=syslog.target - - [Service] - ExecStart=/usr/local/bin/lwsws - StandardError=null - - [Install] - WantedBy=multi-user.target +[Unit] +Description=Libwebsockets Web Server +After=syslog.target + +[Service] +ExecStart=/usr/local/bin/lwsws +ExecReload=/usr/bin/killall -s SIGHUP lwsws ; sleep 1 ; /usr/local/bin/lwsws +StandardError=null + +[Install] +WantedBy=multi-user.target ``` You can find this prepared in `./lwsws/usr-lib-systemd-system-lwsws.service` diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html index 3dfc3ec72782cb019c3e7570124444cafe09ef32..7796fcc8f90edb651ef9f00ae2095199015c3fb0 100644 --- a/doc/html/globals_func.html +++ b/doc/html/globals_func.html @@ -138,6 +138,9 @@ $(document).ready(function(){initNavTree('globals_func.html','');}); <li>lws_close_reason() : <a class="el" href="group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262">libwebsockets.h</a> </li> +<li>lws_context_deprecate() +: <a class="el" href="group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232">libwebsockets.h</a> +</li> <li>lws_context_destroy() : <a class="el" href="group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb">libwebsockets.h</a> </li> @@ -262,7 +265,7 @@ $(document).ready(function(){initNavTree('globals_func.html','');}); : <a class="el" href="group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa">libwebsockets.h</a> </li> <li>lws_json_dump_context() -: <a class="el" href="group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d">libwebsockets.h</a> +: <a class="el" href="group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135">libwebsockets.h</a> </li> <li>lws_json_dump_vhost() : <a class="el" href="group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6">libwebsockets.h</a> diff --git a/doc/html/globals_l.html b/doc/html/globals_l.html index d3ccacd0f0a9a13853a8ef20a23f1ce8b578d3cb..1f63a4d17a0c35b93914a11250f7c807fb9f9673 100644 --- a/doc/html/globals_l.html +++ b/doc/html/globals_l.html @@ -342,6 +342,9 @@ $(document).ready(function(){initNavTree('globals_l.html','');}); <li>LWS_CLOSE_STATUS_UNEXPECTED_CONDITION : <a class="el" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350">libwebsockets.h</a> </li> +<li>lws_context_deprecate() +: <a class="el" href="group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232">libwebsockets.h</a> +</li> <li>lws_context_destroy() : <a class="el" href="group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb">libwebsockets.h</a> </li> @@ -478,7 +481,7 @@ $(document).ready(function(){initNavTree('globals_l.html','');}); : <a class="el" href="group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa">libwebsockets.h</a> </li> <li>lws_json_dump_context() -: <a class="el" href="group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d">libwebsockets.h</a> +: <a class="el" href="group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135">libwebsockets.h</a> </li> <li>lws_json_dump_vhost() : <a class="el" href="group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6">libwebsockets.h</a> diff --git a/doc/html/group__client.html b/doc/html/group__client.html index e726aeff18fa2f993a418a443d64f0b99b31c8ab..c5b42efdcaf57001d141faffb0cc52c83ab6201f 100644 --- a/doc/html/group__client.html +++ b/doc/html/group__client.html @@ -119,7 +119,7 @@ LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom">< <p><code>#include <<a class="el" href="libwebsockets_8h.html">lib/libwebsockets.h</a>></code></p> <p>enum lws_client_connect_ssl_connection_flags - flags that may be used with struct <a class="el" href="structlws__client__connect__info.html">lws_client_connect_info</a> ssl_connection member to control if and how SSL checks apply to the client connection being created </p> -<div class="fragment"><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>  {</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  LCCSCF_USE_SSL = (1 << 0),</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>  LCCSCF_ALLOW_EXPIRED = (1 << 3)</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span> };</div></div><!-- fragment --> +<div class="fragment"><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>  {</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>  LCCSCF_USE_SSL = (1 << 0),</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>  LCCSCF_ALLOW_EXPIRED = (1 << 3)</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span> };</div></div><!-- fragment --> </div> </div> <h2 class="groupheader">Function Documentation</h2> diff --git a/doc/html/group__context-and-vhost.html b/doc/html/group__context-and-vhost.html index a395c408efd936d4290f114c2e035fb1d1d64ee7..0ed92fb002409ca4d4a94391b1090606c4d55340 100644 --- a/doc/html/group__context-and-vhost.html +++ b/doc/html/group__context-and-vhost.html @@ -63,6 +63,7 @@ $(document).ready(function(){initNavTree('group__context-and-vhost.html','');}); <div class="summary"> <a href="#groups">Modules</a> | <a href="#nested-classes">Data Structures</a> | +<a href="#typedef-members">Typedefs</a> | <a href="#enum-members">Enumerations</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> @@ -82,6 +83,12 @@ Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> +Typedefs</h2></td></tr> +<tr class="memitem:ga256a49a07d2dd5062d6cf7bdc3668096"><td class="memItemLeft" align="right" valign="top"><a id="ga256a49a07d2dd5062d6cf7bdc3668096"></a> +typedef int(* </td><td class="memItemRight" valign="bottom"><b>lws_reload_func</b>) (void)</td></tr> +<tr class="separator:ga256a49a07d2dd5062d6cf7bdc3668096"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> Enumerations</h2></td></tr> <tr class="memitem:ga41c2d763f78cc248df3b9f8645dbd2a5"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5">lws_context_options</a> { <br /> @@ -117,6 +124,14 @@ Functions</h2></td></tr> <tr class="separator:gaf2fff58562caab7510c41eeac85a8648"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga8ee0314028755f1ddfa9428e09b4fddb"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb">lws_context_destroy</a> (struct lws_context *context)</td></tr> <tr class="separator:ga8ee0314028755f1ddfa9428e09b4fddb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaa327c9d543edaddf06765d2c6131065c"><td class="memItemLeft" align="right" valign="top"><a id="gaa327c9d543edaddf06765d2c6131065c"></a> +LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><b>lws_context_destroy2</b> (struct lws_context *context)</td></tr> +<tr class="separator:gaa327c9d543edaddf06765d2c6131065c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga1863f0a15ab9da0f07be7bd66230d232"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232">lws_context_deprecate</a> (struct lws_context *context, lws_reload_func cb)</td></tr> +<tr class="separator:ga1863f0a15ab9da0f07be7bd66230d232"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaf023d1898a5f773288568f55b82d19e8"><td class="memItemLeft" align="right" valign="top"><a id="gaf023d1898a5f773288568f55b82d19e8"></a> +LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><b>lws_context_is_deprecated</b> (struct lws_context *context)</td></tr> +<tr class="separator:gaf023d1898a5f773288568f55b82d19e8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga7e9d5405547a457d86e0b4f0ae2bb1c4"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4">lws_set_proxy</a> (struct lws_vhost *vhost, const char *proxy)</td></tr> <tr class="separator:ga7e9d5405547a457d86e0b4f0ae2bb1c4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga0c54c667ccd9b8b3dddcd123ca72f87c"><td class="memItemLeft" align="right" valign="top">LWS_EXTERN LWS_VISIBLE struct lws_vhost * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c">lws_create_vhost</a> (struct lws_context *context, struct <a class="el" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info)</td></tr> @@ -131,8 +146,8 @@ Functions</h2></td></tr> <tr class="separator:ga06e77ce2916f8bc9826ef8d9d68e3932"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga94e6cc2223c4eec316b13bcebc3628b6"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6">lws_json_dump_vhost</a> (const struct lws_vhost *vh, char *buf, int len)</td></tr> <tr class="separator:ga94e6cc2223c4eec316b13bcebc3628b6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:gae2134657cdd2ea7a59e13ad314e4c50d"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d">lws_json_dump_context</a> (const struct lws_context *context, char *buf, int len)</td></tr> -<tr class="separator:gae2134657cdd2ea7a59e13ad314e4c50d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga1dce5453d72a2037051aba5410e18135"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135">lws_json_dump_context</a> (const struct lws_context *context, char *buf, int len, int hide_vhosts)</td></tr> +<tr class="separator:ga1dce5453d72a2037051aba5410e18135"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaeb12f934bfd178bd2132a9e73fc641da"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da">lws_context_user</a> (struct lws_context *context)</td></tr> <tr class="separator:gaeb12f934bfd178bd2132a9e73fc641da"><td class="memSeparator" colspan="2"> </td></tr> </table> @@ -215,6 +230,60 @@ Functions</h2></td></tr> </div> </div> <h2 class="groupheader">Function Documentation</h2> +<a id="ga1863f0a15ab9da0f07be7bd66230d232"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ga1863f0a15ab9da0f07be7bd66230d232">§ </a></span>lws_context_deprecate()</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LWS_VISIBLE LWS_EXTERN void lws_context_deprecate </td> + <td>(</td> + <td class="paramtype">struct lws_context * </td> + <td class="paramname"><em>context</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">lws_reload_func </td> + <td class="paramname"><em>cb</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p><code>#include <<a class="el" href="libwebsockets_8h.html">lib/libwebsockets.h</a>></code></p> +<p><a class="el" href="group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232">lws_context_deprecate()</a> - Deprecate the websocket context </p><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">context</td><td>Websocket context <pre class="fragment"> This function is used on an existing context before superceding it + with a new context. + + It closes any listen sockets in the context, so new connections are + not possible. + + And it marks the context to be deleted when the number of active + connections into it falls to zero. + + Otherwise if you attach the deprecated context to the replacement + context when it has been created using lws_context_attach_deprecated() + both any deprecated and the new context will service their connections. + + This is aimed at allowing seamless configuration reloads. + + The callback cb will be called after the listen sockets are actually + closed and may be reopened. In the callback the new context should be + configured and created. (With libuv, socket close happens async after + more loop events).</pre> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> <a id="ga8ee0314028755f1ddfa9428e09b4fddb"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga8ee0314028755f1ddfa9428e09b4fddb">§ </a></span>lws_context_destroy()</h2> @@ -389,8 +458,8 @@ Functions</h2></td></tr> </div> </div> -<a id="gae2134657cdd2ea7a59e13ad314e4c50d"></a> -<h2 class="memtitle"><span class="permalink"><a href="#gae2134657cdd2ea7a59e13ad314e4c50d">§ </a></span>lws_json_dump_context()</h2> +<a id="ga1dce5453d72a2037051aba5410e18135"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ga1dce5453d72a2037051aba5410e18135">§ </a></span>lws_json_dump_context()</h2> <div class="memitem"> <div class="memproto"> @@ -411,7 +480,13 @@ Functions</h2></td></tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> - <td class="paramname"><em>len</em> </td> + <td class="paramname"><em>len</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>hide_vhosts</em> </td> </tr> <tr> <td></td> @@ -422,7 +497,7 @@ Functions</h2></td></tr> </div><div class="memdoc"> <p><code>#include <<a class="el" href="libwebsockets_8h.html">lib/libwebsockets.h</a>></code></p> -<p><a class="el" href="group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d">lws_json_dump_context()</a> - describe context state and stats in JSON</p> +<p><a class="el" href="group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135">lws_json_dump_context()</a> - describe context state and stats in JSON</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">context</td><td>the context </td></tr> diff --git a/doc/html/group__context-and-vhost.js b/doc/html/group__context-and-vhost.js index 9a942a7fdc5159ca0f5b01564d7531755e945f56..8e167d5616cce87a75b89f080762862899797fdd 100644 --- a/doc/html/group__context-and-vhost.js +++ b/doc/html/group__context-and-vhost.js @@ -72,12 +72,13 @@ var group__context_and_vhost = [ "LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160", null ], [ "LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd", null ] ] ], + [ "lws_context_deprecate", "group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232", null ], [ "lws_context_destroy", "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb", null ], [ "lws_context_user", "group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da", null ], [ "lws_create_context", "group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648", null ], [ "lws_create_vhost", "group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c", null ], [ "lws_get_vhost", "group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932", null ], - [ "lws_json_dump_context", "group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d", null ], + [ "lws_json_dump_context", "group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135", null ], [ "lws_json_dump_vhost", "group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6", null ], [ "lws_set_proxy", "group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4", null ], [ "lws_vhost_get", "group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c", null ], diff --git a/doc/html/group__form-parsing.html b/doc/html/group__form-parsing.html index cf1eda93b9e883ad2f12398b849db3e0de4d880a..4dd28ce99b46405b1fd5966ab219dbda9db08d33 100644 --- a/doc/html/group__form-parsing.html +++ b/doc/html/group__form-parsing.html @@ -156,9 +156,9 @@ Functions</h2></td></tr> <tr><td class="fieldname"><a id="gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83"></a>LWS_UFS_OPEN </td><td class="fielddoc"><p>a new file is starting to arrive </p> </td></tr> </table> -<div class="fragment"><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>  {</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a>,</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a>,</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span> };</div><div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2850</div></div> -<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2852</div></div> -<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2848</div></div> +<div class="fragment"><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>  {</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a>,</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a>,</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span> };</div><div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2886</div></div> +<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2888</div></div> +<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2884</div></div> </div><!-- fragment --> </div> </div> diff --git a/doc/html/group__sending-data.html b/doc/html/group__sending-data.html index af930e6daec2250555d71024e23ba0c8258af320..ebd04f55ab0b23d9fda5c5a65fe368b6fc71ef4d 100644 --- a/doc/html/group__sending-data.html +++ b/doc/html/group__sending-data.html @@ -124,13 +124,13 @@ Functions</h2></td></tr> <tr><td class="fieldname"><a id="gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce"></a>LWS_WRITE_CLIENT_IGNORE_XOR_MASK </td><td class="fielddoc"><p>client packet payload goes out on wire unmunged only useful for security tests since normal servers cannot decode the content if used </p> </td></tr> </table> -<div class="fragment"><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>  {</div><div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a> = 0,</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a> = 1,</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a> = 2,</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a> = 3,</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>  <span class="comment">/* LWS_WRITE_CLOSE is handled by lws_close_reason() */</span></div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  LWS_WRITE_PING = 5,</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>  LWS_WRITE_PONG = 6,</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span> </div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  <span class="comment">/* Same as write_http but we know this write ends the transaction */</span></div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>  LWS_WRITE_HTTP_FINAL = 7,</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span> </div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  <span class="comment">/* HTTP2 */</span></div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span> </div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a> = 8,</div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span> </div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  <span class="comment">/* flags */</span></div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span> </div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a> = 0x40,</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a> = 0x80</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span> };</div><div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3202</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3225</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3192</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3196</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3228</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3199</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3214</div></div> +<div class="fragment"><div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>  {</div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a> = 0,</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a> = 1,</div><div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a> = 2,</div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a> = 3,</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>  <span class="comment">/* LWS_WRITE_CLOSE is handled by lws_close_reason() */</span></div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>  LWS_WRITE_PING = 5,</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>  LWS_WRITE_PONG = 6,</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span> </div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  <span class="comment">/* Same as write_http but we know this write ends the transaction */</span></div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>  LWS_WRITE_HTTP_FINAL = 7,</div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span> </div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>  <span class="comment">/* HTTP2 */</span></div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span> </div><div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a> = 8,</div><div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03261"></a><span class="lineno"> 3261</span> </div><div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>  <span class="comment">/* flags */</span></div><div class="line"><a name="l03263"></a><span class="lineno"> 3263</span> </div><div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a> = 0x40,</div><div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a> = 0x80</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span> };</div><div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3241</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3264</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3231</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3235</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3267</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3238</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3253</div></div> </div><!-- fragment --> </div> </div> diff --git a/doc/html/group__smtp.html b/doc/html/group__smtp.html index 4a42ddaceba58556278b910b40a777d2ed1a635e..7eae8ec30157094003a35072e3bf631bf91d82d0 100644 --- a/doc/html/group__smtp.html +++ b/doc/html/group__smtp.html @@ -149,15 +149,15 @@ Functions</h2></td></tr> <tr><td class="fieldname"><a id="gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5"></a>LGSSMTP_SENT_QUIT </td><td class="fielddoc"><p>sent the session quit </p> </td></tr> </table> -<div class="fragment"><div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>  {</div><div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a>, </div><div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a>, </div><div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a>, </div><div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a>, </div><div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a>, </div><div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a>, </div><div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a>, </div><div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a>, </div><div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a>, </div><div class="line"><a name="l04156"></a><span class="lineno"> 4156</span> };</div><div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4149</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4154</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4147</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4148</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4152</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4151</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4155</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4150</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4153</div></div> +<div class="fragment"><div class="line"><a name="l04185"></a><span class="lineno"> 4185</span>  {</div><div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a>, </div><div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a>, </div><div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a>, </div><div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a>, </div><div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a>, </div><div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a>, </div><div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a>, </div><div class="line"><a name="l04193"></a><span class="lineno"> 4193</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a>, </div><div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a>, </div><div class="line"><a name="l04195"></a><span class="lineno"> 4195</span> };</div><div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4188</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4193</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4186</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4187</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4191</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4190</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4194</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4189</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4192</div></div> </div><!-- fragment --> </div> </div> diff --git a/doc/html/group__uv.html b/doc/html/group__uv.html index 78ab43b5e4a41f7ee6e126b114b3d60ab18e0ddd..93d426eaab7e958a3c112e126f5154bdc22a896e 100644 --- a/doc/html/group__uv.html +++ b/doc/html/group__uv.html @@ -78,6 +78,9 @@ LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom">< <tr class="memitem:ga3c75cd6ec3f80fc0a0c8ead4c4e71a15"><td class="memItemLeft" align="right" valign="top"><a id="ga3c75cd6ec3f80fc0a0c8ead4c4e71a15"></a> LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><b>lws_libuv_stop</b> (struct lws_context *context)</td></tr> <tr class="separator:ga3c75cd6ec3f80fc0a0c8ead4c4e71a15"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaa17758e1f852017a2271d8fb3e9305aa"><td class="memItemLeft" align="right" valign="top"><a id="gaa17758e1f852017a2271d8fb3e9305aa"></a> +LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><b>lws_libuv_stop_without_kill</b> (const struct lws_context *context, int tsi)</td></tr> +<tr class="separator:gaa17758e1f852017a2271d8fb3e9305aa"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad85ce3bfc53ff754988d36bf5de39e21"><td class="memItemLeft" align="right" valign="top"><a id="gad85ce3bfc53ff754988d36bf5de39e21"></a> LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><b>lws_uv_initloop</b> (struct lws_context *context, uv_loop_t *loop, int tsi)</td></tr> <tr class="separator:gad85ce3bfc53ff754988d36bf5de39e21"><td class="memSeparator" colspan="2"> </td></tr> diff --git a/doc/html/group__vhost-mounts.html b/doc/html/group__vhost-mounts.html index 05f38f6cf362e8204cdabeda36688a436e9c37bf..41fd8b985a5f81a7789949654e52fb817a39a10f 100644 --- a/doc/html/group__vhost-mounts.html +++ b/doc/html/group__vhost-mounts.html @@ -123,13 +123,13 @@ Enumerations</h2></td></tr> <tr><td class="fieldname"><a id="gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da"></a>LWSMPRO_CALLBACK </td><td class="fielddoc"><p>hand by named protocol's callback </p> </td></tr> </table> -<div class="fragment"><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>  {</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a> = 0, </div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a> = 1, </div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a> = 2, </div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a> = 3, </div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a> = 4, </div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a> = 5, </div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a> = 6, </div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span> };</div><div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1930</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1928</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1929</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1931</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1932</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1927</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1933</div></div> +<div class="fragment"><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>  {</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a> = 0, </div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a> = 1, </div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a> = 2, </div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a> = 3, </div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a> = 4, </div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a> = 5, </div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a> = 6, </div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span> };</div><div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1966</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1964</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1965</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1967</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1968</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1963</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1969</div></div> </div><!-- fragment --> </div> </div> diff --git a/doc/html/index.html b/doc/html/index.html index 9413de85cacce9edc5752de479a4c49607532c1e..06f0d0358f813f2303d8d697d321c712c9222aec 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -74,7 +74,8 @@ $(document).ready(function(){initNavTree('index.html','');}); <li>account management (including registration, email verification, lost pw etc)</li> <li>strong ssl PFS support (A+ on SSLlabs test)</li> </ul> -<p>You can browse by api category <a href="modules.html">here</a>. </p> +<p>You can browse by api category <a href="modules.html">here</a></p> +<p>A collection of READMEs for build, coding, lwsws etc are <a href="pages.html">here</a> </p> </div></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/doc/html/libwebsockets_8h.html b/doc/html/libwebsockets_8h.html index a896a530a16145ab581a2e94f01cc6302467e915..cac73ad7b8e4ff7887f0321ab333543b27fe2455 100644 --- a/doc/html/libwebsockets_8h.html +++ b/doc/html/libwebsockets_8h.html @@ -161,6 +161,9 @@ typedef int(* </td><td class="memItemRight" valign="bottom"><b>lws_plugin_i <tr class="memitem:ga83f7a924ba790fa273476075a59f08b0"><td class="memItemLeft" align="right" valign="top"> typedef int(* </td><td class="memItemRight" valign="bottom"><b>lws_plugin_destroy_func</b>) (struct lws_context *)</td></tr> <tr class="separator:ga83f7a924ba790fa273476075a59f08b0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga256a49a07d2dd5062d6cf7bdc3668096"><td class="memItemLeft" align="right" valign="top"> +typedef int(* </td><td class="memItemRight" valign="bottom"><b>lws_reload_func</b>) (void)</td></tr> +<tr class="separator:ga256a49a07d2dd5062d6cf7bdc3668096"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga669d3d7ce2d5f193473f649a89b3e7ac"><td class="memItemLeft" align="right" valign="top"> typedef const char *(* </td><td class="memItemRight" valign="bottom"><b>lws_process_html_state_cb</b>) (void *data, int index)</td></tr> <tr class="separator:ga669d3d7ce2d5f193473f649a89b3e7ac"><td class="memSeparator" colspan="2"> </td></tr> @@ -696,6 +699,14 @@ void </td><td class="memItemRight" valign="bottom"><b>ets_timer_arm_new</b> <tr class="separator:gaf2fff58562caab7510c41eeac85a8648"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga8ee0314028755f1ddfa9428e09b4fddb"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb">lws_context_destroy</a> (struct lws_context *context)</td></tr> <tr class="separator:ga8ee0314028755f1ddfa9428e09b4fddb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaa327c9d543edaddf06765d2c6131065c"><td class="memItemLeft" align="right" valign="top"> +LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><b>lws_context_destroy2</b> (struct lws_context *context)</td></tr> +<tr class="separator:gaa327c9d543edaddf06765d2c6131065c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga1863f0a15ab9da0f07be7bd66230d232"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232">lws_context_deprecate</a> (struct lws_context *context, lws_reload_func cb)</td></tr> +<tr class="separator:ga1863f0a15ab9da0f07be7bd66230d232"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaf023d1898a5f773288568f55b82d19e8"><td class="memItemLeft" align="right" valign="top"> +LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><b>lws_context_is_deprecated</b> (struct lws_context *context)</td></tr> +<tr class="separator:gaf023d1898a5f773288568f55b82d19e8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga7e9d5405547a457d86e0b4f0ae2bb1c4"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4">lws_set_proxy</a> (struct lws_vhost *vhost, const char *proxy)</td></tr> <tr class="separator:ga7e9d5405547a457d86e0b4f0ae2bb1c4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga0c54c667ccd9b8b3dddcd123ca72f87c"><td class="memItemLeft" align="right" valign="top">LWS_EXTERN LWS_VISIBLE struct lws_vhost * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c">lws_create_vhost</a> (struct lws_context *context, struct <a class="el" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info)</td></tr> @@ -710,8 +721,8 @@ void </td><td class="memItemRight" valign="bottom"><b>ets_timer_arm_new</b> <tr class="separator:ga06e77ce2916f8bc9826ef8d9d68e3932"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga94e6cc2223c4eec316b13bcebc3628b6"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6">lws_json_dump_vhost</a> (const struct lws_vhost *vh, char *buf, int len)</td></tr> <tr class="separator:ga94e6cc2223c4eec316b13bcebc3628b6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:gae2134657cdd2ea7a59e13ad314e4c50d"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d">lws_json_dump_context</a> (const struct lws_context *context, char *buf, int len)</td></tr> -<tr class="separator:gae2134657cdd2ea7a59e13ad314e4c50d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga1dce5453d72a2037051aba5410e18135"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135">lws_json_dump_context</a> (const struct lws_context *context, char *buf, int len, int hide_vhosts)</td></tr> +<tr class="separator:ga1dce5453d72a2037051aba5410e18135"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaeb12f934bfd178bd2132a9e73fc641da"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da">lws_context_user</a> (struct lws_context *context)</td></tr> <tr class="separator:gaeb12f934bfd178bd2132a9e73fc641da"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga0c966136905f467816307cfba6deb5fd"><td class="memItemLeft" align="right" valign="top">LWS_VISIBLE LWS_EXTERN struct lws * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__client.html#ga0c966136905f467816307cfba6deb5fd">lws_client_connect_via_info</a> (struct <a class="el" href="structlws__client__connect__info.html">lws_client_connect_info</a> *ccinfo)</td></tr> @@ -819,6 +830,9 @@ LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom">< <tr class="memitem:ga3c75cd6ec3f80fc0a0c8ead4c4e71a15"><td class="memItemLeft" align="right" valign="top"> LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><b>lws_libuv_stop</b> (struct lws_context *context)</td></tr> <tr class="separator:ga3c75cd6ec3f80fc0a0c8ead4c4e71a15"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaa17758e1f852017a2271d8fb3e9305aa"><td class="memItemLeft" align="right" valign="top"> +LWS_VISIBLE LWS_EXTERN void </td><td class="memItemRight" valign="bottom"><b>lws_libuv_stop_without_kill</b> (const struct lws_context *context, int tsi)</td></tr> +<tr class="separator:gaa17758e1f852017a2271d8fb3e9305aa"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad85ce3bfc53ff754988d36bf5de39e21"><td class="memItemLeft" align="right" valign="top"> LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><b>lws_uv_initloop</b> (struct lws_context *context, uv_loop_t *loop, int tsi)</td></tr> <tr class="separator:gad85ce3bfc53ff754988d36bf5de39e21"><td class="memSeparator" colspan="2"> </td></tr> diff --git a/doc/html/libwebsockets_8h.js b/doc/html/libwebsockets_8h.js index d02bab2a5b25a7fd398ffad9a8208120dce3c703..a0410b64454935d15fc725577ffd2a5da1a88f42 100644 --- a/doc/html/libwebsockets_8h.js +++ b/doc/html/libwebsockets_8h.js @@ -15,6 +15,7 @@ var libwebsockets_8h = [ "lws_plugin_destroy_func", "group__Protocols-and-Plugins.html#ga83f7a924ba790fa273476075a59f08b0", null ], [ "lws_plugin_init_func", "group__Protocols-and-Plugins.html#ga40994491e1567f91f579d2b444775266", null ], [ "lws_process_html_state_cb", "group__html-chunked-substitution.html#ga669d3d7ce2d5f193473f649a89b3e7ac", null ], + [ "lws_reload_func", "group__context-and-vhost.html#ga256a49a07d2dd5062d6cf7bdc3668096", null ], [ "lws_sockfd_type", "libwebsockets_8h.html#adedbc79528b71a5c7f27cde87100c9aa", null ], [ "lws_spa_fileupload_cb", "group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e", null ], [ "SSL", "libwebsockets_8h.html#ac3abb8b7e6d29a0292797230e4031681", null ], @@ -414,7 +415,10 @@ var libwebsockets_8h = [ "lws_client_connect_via_info", "group__client.html#ga0c966136905f467816307cfba6deb5fd", null ], [ "lws_client_http_body_pending", "group__client.html#ga26588fb345083076c14169dd5859f57a", null ], [ "lws_close_reason", "group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262", null ], + [ "lws_context_deprecate", "group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232", null ], [ "lws_context_destroy", "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb", null ], + [ "lws_context_destroy2", "group__context-and-vhost.html#gaa327c9d543edaddf06765d2c6131065c", null ], + [ "lws_context_is_deprecated", "group__context-and-vhost.html#gaf023d1898a5f773288568f55b82d19e8", null ], [ "lws_context_user", "group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da", null ], [ "lws_create_context", "group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648", null ], [ "lws_create_vhost", "group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c", null ], @@ -459,11 +463,12 @@ var libwebsockets_8h = [ "lws_is_cgi", "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1", null ], [ "lws_is_final_fragment", "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37", null ], [ "lws_is_ssl", "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa", null ], - [ "lws_json_dump_context", "group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d", null ], + [ "lws_json_dump_context", "group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135", null ], [ "lws_json_dump_vhost", "group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6", null ], [ "lws_json_purify", "group__pur.html#gab15187efcfa256b7c928562c182b92a3", null ], [ "lws_libuv_run", "group__uv.html#ga097c89497824d4de225a85a00661fc89", null ], [ "lws_libuv_stop", "group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15", null ], + [ "lws_libuv_stop_without_kill", "group__uv.html#gaa17758e1f852017a2271d8fb3e9305aa", null ], [ "lws_now_secs", "group__misc.html#ga33bf2635033710b25f931b57ed663e1e", null ], [ "lws_parse_uri", "group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa", null ], [ "lws_partial_buffered", "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85", null ], diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html index 4b9201377f3a4c3e35000358798d6ced95605d1d..4c89a91bd2de7a21eb08696352a23e97ab63ad56 100644 --- a/doc/html/libwebsockets_8h_source.html +++ b/doc/html/libwebsockets_8h_source.html @@ -64,9 +64,9 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="title">libwebsockets.h</div> </div> </div><!--header--> <div class="contents"> -<a href="libwebsockets_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * libwebsockets - small server side websockets and web server implementation</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * License as published by the Free Software Foundation:</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * version 2.1 of the License.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * Lesser General Public License for more details.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * MA 02110-1301 USA</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> */</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <cstddef></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <cstdarg></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifdef MBED_OPERATORS</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "mbed-drivers/mbed.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "sal-iface-eth/EthernetInterface.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "sockets/TCPListener.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "sal-stack-lwip/lwipv4_init.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span>{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">using namespace </span><a class="code" href="namespacembed_1_1Sockets_1_1v0.html">mbed::Sockets::v0</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">struct </span>sockaddr_in;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">struct </span>lws;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classlws__conn.html"> 44</a></span> <span class="keyword">class </span><a class="code" href="classlws__conn.html">lws_conn</a> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classlws__conn.html">lws_conn</a>():</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ts(NULL),</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wsi(NULL),</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  writeable(1),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  awaiting_on_writeable(0)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">void</span> set_wsi(<span class="keyword">struct</span> lws *_wsi) { wsi = _wsi; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">int</span> actual_onRX(Socket *s);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> onRX(Socket *s);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> onError(Socket *s, socket_error_t err);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> onDisconnect(TCPStream *s);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> onSent(Socket *s, uint16_t len);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span> serialized_writeable(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  TCPStream *ts;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">struct </span>lws *wsi;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">char</span> writeable;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">char</span> awaiting_on_writeable;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classlws__conn__listener.html"> 72</a></span> <span class="keyword">class </span><a class="code" href="classlws__conn__listener.html">lws_conn_listener</a> : <a class="code" href="classlws__conn.html">lws_conn</a> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classlws__conn__listener.html">lws_conn_listener</a>():</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  srv(SOCKET_STACK_LWIP_IPV4)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  srv.setOnError(TCPStream::ErrorHandler_t(<span class="keyword">this</span>,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  &<a class="code" href="classlws__conn__listener.html#a271ac4f8ad5770b3bc96cce5b265b72c">lws_conn_listener::onError</a>));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">void</span> start(<span class="keyword">const</span> uint16_t port); </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">void</span> onRX(Socket *s); </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> onError(Socket *s, socket_error_t err); </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> onIncoming(TCPListener *s, <span class="keywordtype">void</span> *impl); </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> onDisconnect(TCPStream *s); </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  TCPListener srv;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> };</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#include <stdarg.h></span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#if defined(MBED_OPERATORS) || defined(LWS_WITH_ESP8266)</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">struct </span>sockaddr_in;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#define LWS_POSIX 0</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#define LWS_POSIX 1</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#include "lws_config.h"</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#if defined(WIN32) || defined(_WIN32)</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#ifndef WIN32_LEAN_AND_MEAN</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#define WIN32_LEAN_AND_MEAN</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#include <winsock2.h></span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#include <ws2tcpip.h></span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#include <basetsd.h></span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#ifndef _WIN32_WCE</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#define _O_RDONLY 0x0000</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#define O_RDONLY _O_RDONLY</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// Visual studio older than 2015 and WIN_CE has only _stricmp</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#define strcasecmp _stricmp</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#elif !defined(__MINGW32__)</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#define strcasecmp stricmp</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#define getdtablesize() 30000</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define LWS_INLINE __inline</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#define LWS_VISIBLE</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#define LWS_WARN_UNUSED_RESULT</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#define LWS_WARN_DEPRECATED</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#ifdef LWS_DLL</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#ifdef LWS_INTERNAL</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#define LWS_EXTERN extern __declspec(dllexport)</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#define LWS_EXTERN extern __declspec(dllimport)</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">#define LWS_EXTERN</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#define LWS_INVALID_FILE INVALID_HANDLE_VALUE</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">#define LWS_O_RDONLY _O_RDONLY</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#if !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER < 1900) </span><span class="comment">/* Visual Studio 2015 already defines this in <stdio.h> */</span><span class="preprocessor"></span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#define lws_snprintf _snprintf</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#ifndef __func__</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#define __func__ __FUNCTION__</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor">#else </span><span class="comment">/* NOT WIN32 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#if defined(__NetBSD__) || defined(__FreeBSD__)</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#include <netinet/in.h></span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#define LWS_INLINE inline</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define LWS_O_RDONLY O_RDONLY</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#if !defined(MBED_OPERATORS) && !defined(LWS_WITH_ESP8266)</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#include <poll.h></span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#include <netdb.h></span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#define LWS_INVALID_FILE -1</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#define getdtablesize() (20)</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#define LWS_INVALID_FILE NULL</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#if defined(__GNUC__)</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">/* warn_unused_result attribute only supported by GCC 3.4 or later */</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#define LWS_WARN_UNUSED_RESULT</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#define LWS_VISIBLE __attribute__((visibility("default")))</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#define LWS_WARN_DEPRECATED __attribute__ ((deprecated))</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#define LWS_VISIBLE</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor">#define LWS_WARN_UNUSED_RESULT</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor">#define LWS_WARN_DEPRECATED</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor">#if defined(__ANDROID__)</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor">#define getdtablesize() sysconf(_SC_OPEN_MAX)</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor">#ifdef LWS_USE_LIBEV</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#include <ev.h></span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor">#endif </span><span class="comment">/* LWS_USE_LIBEV */</span><span class="preprocessor"></span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#ifdef LWS_USE_LIBUV</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="preprocessor">#include <uv.h></span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor">#ifdef LWS_HAVE_UV_VERSION_H</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor">#include <uv-version.h></span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor">#endif </span><span class="comment">/* LWS_USE_LIBUV */</span><span class="preprocessor"></span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor">#ifndef LWS_EXTERN</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor">#define LWS_EXTERN extern</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor">#ifdef _WIN32</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor">#define random rand</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor">#include <sys/time.h></span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor">#ifdef LWS_OPENSSL_SUPPORT</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor">#ifdef USE_WOLFSSL</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor">#ifdef USE_OLD_CYASSL</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#include <cyassl/openssl/ssl.h></span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor">#include <cyassl/error-ssl.h></span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#include <wolfssl/openssl/ssl.h></span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="preprocessor">#include <wolfssl/error-ssl.h></span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor">#endif </span><span class="comment">/* not USE_OLD_CYASSL */</span><span class="preprocessor"></span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor">#if defined(LWS_USE_POLARSSL)</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor">#include <polarssl/ssl.h></span></div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="structlws__polarssl__context.html"> 236</a></span> <span class="keyword">struct </span><a class="code" href="structlws__polarssl__context.html">lws_polarssl_context</a> {</div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="structlws__polarssl__context.html#a1872f2ea24878d807ae20ca8513674af"> 237</a></span>  x509_crt <a class="code" href="structlws__polarssl__context.html#a1872f2ea24878d807ae20ca8513674af">ca</a>; </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="structlws__polarssl__context.html#ae7e11c9129ff71c7ee71b3b2e320ff27"> 238</a></span>  x509_crt <a class="code" href="structlws__polarssl__context.html#ae7e11c9129ff71c7ee71b3b2e320ff27">certificate</a>; </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="structlws__polarssl__context.html#a919c33af37aab170f828d954de1fa270"> 239</a></span>  rsa_context <a class="code" href="structlws__polarssl__context.html#a919c33af37aab170f828d954de1fa270">key</a>; </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> };</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlws__polarssl__context.html">lws_polarssl_context</a> <a class="code" href="structlws__polarssl__context.html">SSL_CTX</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keyword">typedef</span> ssl_context SSL;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#if defined(LWS_USE_MBEDTLS)</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor">#include <mbedtls/ssl.h></span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor">#include <openssl/ssl.h></span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor">#include <openssl/err.h></span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="preprocessor">#endif </span><span class="comment">/* not USE_MBEDTLS */</span><span class="preprocessor"></span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor">#endif </span><span class="comment">/* not USE_POLARSSL */</span><span class="preprocessor"></span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor">#endif </span><span class="comment">/* not USE_WOLFSSL */</span><span class="preprocessor"></span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor">#define CONTEXT_PORT_NO_LISTEN -1</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keyword">enum</span> lws_log_levels {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  LLL_ERR = 1 << 0,</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  LLL_WARN = 1 << 1,</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  LLL_NOTICE = 1 << 2,</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  LLL_INFO = 1 << 3,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  LLL_DEBUG = 1 << 4,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  LLL_PARSER = 1 << 5,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  LLL_HEADER = 1 << 6,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  LLL_EXT = 1 << 7,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  LLL_CLIENT = 1 << 8,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  LLL_LATENCY = 1 << 9,</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  LLL_COUNT = 10 <span class="comment">/* set to count of valid flags */</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> };</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> _lws_log(<span class="keywordtype">int</span> filter, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> _lws_logv(<span class="keywordtype">int</span> filter, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, va_list vl);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <a class="code" href="group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd">lwsl_timestamp</a>(<span class="keywordtype">int</span> level, <span class="keywordtype">char</span> *p, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor">#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="preprocessor">#if !defined(LWS_WITH_NO_LOGS)</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment">/* notice, warn and log are always compiled in */</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor">#define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor">#define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="comment">/*</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="comment"> * weaker logging can be deselected at configure time using --disable-debug</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="comment"> * that gets rid of the overhead of checking while keeping _warn and _err</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="comment"> * active</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="comment"> */</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor">#if defined(LWS_WITH_ESP8266)</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor">#undef _DEBUG</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor">#if defined(LWS_WITH_NO_LOGS)</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="comment">/* notice, warn and log are always compiled in */</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="comment">//#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor">#define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="preprocessor">#define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor">#define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="preprocessor">#define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="preprocessor">#define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="preprocessor">#define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor">#define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="preprocessor">#define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> <a class="code" href="group__log.html#ga898b1f03872ad019f507d4e35bbefa90">lwsl_hexdump</a>(<span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor">#else </span><span class="comment">/* no debug */</span><span class="preprocessor"></span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor">#if defined(LWS_WITH_NO_LOGS)</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment">//#define lwsl_err(...) do {} while(0)</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor">#define lwsl_warn(...) do {} while(0)</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="preprocessor">#define lwsl_notice(...) do {} while(0)</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="preprocessor">#define lwsl_info(...) do {} while(0)</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor">#define lwsl_debug(...) do {} while(0)</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="preprocessor">#define lwsl_parser(...) do {} while(0)</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="preprocessor">#define lwsl_header(...) do {} while(0)</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor">#define lwsl_ext(...) do {} while(0)</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor">#define lwsl_client(...) do {} while(0)</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor">#define lwsl_latency(...) do {} while(0)</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor">#define lwsl_hexdump(a, b)</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <a class="code" href="group__log.html#ga244647f9e1bf0097ccdde66d74f41e26">lws_set_log_level</a>(<span class="keywordtype">int</span> level,</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordtype">void</span> (*log_emit_function)(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span> *line));</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <a class="code" href="group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c">lwsl_emit_syslog</a>(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span> *line);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor">#ifndef lws_container_of</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="preprocessor">#define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="keyword">struct </span>lws;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor">#ifndef ARRAY_SIZE</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor">#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="comment">/* api change list for user code to test against */</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="preprocessor">#define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="comment">/* the struct lws_protocols has the id field present */</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="preprocessor">#define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="comment">/* you can call lws_get_peer_write_allowance */</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="preprocessor">#define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="comment">/* extra parameter introduced in 917f43ab821 */</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="preprocessor">#define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="comment">/* File operations stuff exists */</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor">#define LWS_FEATURE_FOPS</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor">#if defined(_WIN32)</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="keyword">typedef</span> SOCKET lws_sockfd_type;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="keyword">typedef</span> HANDLE lws_filefd_type;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor">#define lws_sockfd_valid(sfd) (!!sfd)</span></div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="structlws__pollfd.html"> 416</a></span> <span class="keyword">struct </span><a class="code" href="structlws__pollfd.html">lws_pollfd</a> {</div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="structlws__pollfd.html#a714cf5ca90b41926117fdde9fa6542be"> 417</a></span>  lws_sockfd_type <a class="code" href="structlws__pollfd.html#a714cf5ca90b41926117fdde9fa6542be">fd</a>; </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="structlws__pollfd.html#ac393db6fc7fb6ed8fe7ca20936908ee9"> 418</a></span>  SHORT <a class="code" href="structlws__pollfd.html#ac393db6fc7fb6ed8fe7ca20936908ee9">events</a>; </div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="structlws__pollfd.html#ae7cecfe7511c59d4a3a44f876d030932"> 419</a></span>  SHORT <a class="code" href="structlws__pollfd.html#ae7cecfe7511c59d4a3a44f876d030932">revents</a>; </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> };</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor">#define LWS_POLLHUP (FD_CLOSE)</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="preprocessor">#define LWS_POLLIN (FD_READ | FD_ACCEPT)</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor">#define LWS_POLLOUT (FD_WRITE)</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="preprocessor">#if defined(MBED_OPERATORS)</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="comment">/* it's a class lws_conn * */</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> * lws_sockfd_type;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> * lws_filefd_type;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="preprocessor">#define lws_sockfd_valid(sfd) (!!sfd)</span></div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="structpollfd.html"> 431</a></span> <span class="keyword">struct </span><a class="code" href="structpollfd.html">pollfd</a> {</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="structpollfd.html#af084f089bdece61d177f85782d6673d0"> 432</a></span>  lws_sockfd_type <a class="code" href="structpollfd.html#af084f089bdece61d177f85782d6673d0">fd</a>; </div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="structpollfd.html#ac9b2f2c5b1f9a7487eb57e67cd4960ef"> 433</a></span>  <span class="keywordtype">short</span> <a class="code" href="structpollfd.html#ac9b2f2c5b1f9a7487eb57e67cd4960ef">events</a>; </div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="structpollfd.html#aafb457d11cac415faf0e1e2b825118c2"> 434</a></span>  <span class="keywordtype">short</span> <a class="code" href="structpollfd.html#aafb457d11cac415faf0e1e2b825118c2">revents</a>; </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> };</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor">#define POLLIN 0x0001</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#define POLLPRI 0x0002</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="preprocessor">#define POLLOUT 0x0004</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="preprocessor">#define POLLERR 0x0008</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor">#define POLLHUP 0x0010</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="preprocessor">#define POLLNVAL 0x0020</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="keyword">struct </span>lws;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="keywordtype">void</span> * mbed3_create_tcp_stream_socket(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="keywordtype">void</span> mbed3_delete_tcp_stream_socket(<span class="keywordtype">void</span> *sockfd);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="keywordtype">void</span> mbed3_tcp_stream_bind(<span class="keywordtype">void</span> *sock, <span class="keywordtype">int</span> port, <span class="keyword">struct</span> lws *);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="keywordtype">void</span> mbed3_tcp_stream_accept(<span class="keywordtype">void</span> *sock, <span class="keyword">struct</span> lws *);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="preprocessor">#if defined(LWS_WITH_ESP8266)</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor">#include <user_interface.h></span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="preprocessor">#include <espconn.h></span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="keyword">typedef</span> <span class="keyword">struct </span>espconn * lws_sockfd_type;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> * lws_filefd_type;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="preprocessor">#define lws_sockfd_valid(sfd) (!!sfd)</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="keyword">struct </span><a class="code" href="structpollfd.html">pollfd</a> {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  lws_sockfd_type fd; </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordtype">short</span> events; </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordtype">short</span> revents; </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> };</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="preprocessor">#define POLLIN 0x0001</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="preprocessor">#define POLLPRI 0x0002</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="preprocessor">#define POLLOUT 0x0004</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="preprocessor">#define POLLERR 0x0008</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="preprocessor">#define POLLHUP 0x0010</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="preprocessor">#define POLLNVAL 0x0020</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="keyword">struct </span>lws_vhost;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> lws_sockfd_type esp8266_create_tcp_listen_socket(<span class="keyword">struct</span> lws_vhost *vh);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="keywordtype">void</span> esp8266_tcp_stream_accept(lws_sockfd_type fd, <span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="preprocessor">#include <os_type.h></span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="preprocessor">#include <osapi.h></span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="preprocessor">#include "ets_sys.h"</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keywordtype">int</span> ets_snprintf(<span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> size, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="preprocessor">#define snprintf ets_snprintf</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="keyword">typedef</span> os_timer_t uv_timer_t;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> uv_cb_t(uv_timer_t *);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="keywordtype">void</span> os_timer_disarm(<span class="keywordtype">void</span> *);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="keywordtype">void</span> os_timer_setfn(os_timer_t *, os_timer_func_t *, <span class="keywordtype">void</span> *);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="keywordtype">void</span> ets_timer_arm_new(os_timer_t *, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment">//void os_timer_arm(os_timer_t *, int, int);</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="preprocessor">#define UV_VERSION_MAJOR 1</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor">#define lws_uv_getloop(a, b) (NULL)</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> uv_timer_init(<span class="keywordtype">void</span> *l, uv_timer_t *t)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  (void)l;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  memset(t, 0, <span class="keyword">sizeof</span>(*t));</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  os_timer_disarm(t);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> uv_timer_start(uv_timer_t *t, uv_cb_t *cb, <span class="keywordtype">int</span> first, <span class="keywordtype">int</span> rep)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  os_timer_setfn(t, (os_timer_func_t *)cb, t);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">/* ms, repeat */</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  os_timer_arm(t, first, !!rep);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> uv_timer_stop(uv_timer_t *t)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  os_timer_disarm(t);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="keyword">typedef</span> <span class="keywordtype">int</span> lws_sockfd_type;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="keyword">typedef</span> <span class="keywordtype">int</span> lws_filefd_type;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="preprocessor">#define lws_sockfd_valid(sfd) (sfd >= 0)</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor">#define lws_pollfd pollfd</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="preprocessor">#define LWS_POLLHUP (POLLHUP|POLLERR)</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor">#define LWS_POLLIN (POLLIN)</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="preprocessor">#define LWS_POLLOUT (POLLOUT)</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> </div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="structlws__pollargs.html"> 530</a></span> <span class="keyword">struct </span><a class="code" href="structlws__pollargs.html">lws_pollargs</a> {</div><div class="line"><a name="l00531"></a><span class="lineno"><a class="line" href="structlws__pollargs.html#af14a48ef4e78128aef9a76902b104a81"> 531</a></span>  lws_sockfd_type <a class="code" href="structlws__pollargs.html#af14a48ef4e78128aef9a76902b104a81">fd</a>; </div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="structlws__pollargs.html#a00bbffea9f55de342783e32d71ce1de6"> 532</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__pollargs.html#a00bbffea9f55de342783e32d71ce1de6">events</a>; </div><div class="line"><a name="l00533"></a><span class="lineno"><a class="line" href="structlws__pollargs.html#a437fec0de5cf264371e1ab5a401e86d8"> 533</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__pollargs.html#a437fec0de5cf264371e1ab5a401e86d8">prev_events</a>; </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> };</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="keyword">struct </span><a class="code" href="structlws__tokens.html">lws_tokens</a>;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="keyword">struct </span><a class="code" href="structlws__token__limits.html">lws_token_limits</a>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="comment">/*</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="comment"> */</span></div><div class="line"><a name="l00553"></a><span class="lineno"><a class="line" href="group__wsclose.html#gae399c571df32ba532c0ca67da9284985"> 553</a></span> <span class="keyword">enum</span> <a class="code" href="group__wsclose.html#gae399c571df32ba532c0ca67da9284985">lws_close_status</a> {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  LWS_CLOSE_STATUS_NOSTATUS = 0,</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4"> 555</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4">LWS_CLOSE_STATUS_NORMAL</a> = 1000,</div><div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218"> 558</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218">LWS_CLOSE_STATUS_GOINGAWAY</a> = 1001,</div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98"> 561</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98">LWS_CLOSE_STATUS_PROTOCOL_ERR</a> = 1002,</div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276"> 564</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276">LWS_CLOSE_STATUS_UNACCEPTABLE_OPCODE</a> = 1003,</div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2"> 569</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2">LWS_CLOSE_STATUS_RESERVED</a> = 1004,</div><div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044"> 571</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044">LWS_CLOSE_STATUS_NO_STATUS</a> = 1005,</div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c"> 576</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c">LWS_CLOSE_STATUS_ABNORMAL_CLOSE</a> = 1006,</div><div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050"> 582</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050">LWS_CLOSE_STATUS_INVALID_PAYLOAD</a> = 1007,</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5"> 587</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5">LWS_CLOSE_STATUS_POLICY_VIOLATION</a> = 1008,</div><div class="line"><a name="l00593"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8"> 593</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8">LWS_CLOSE_STATUS_MESSAGE_TOO_LARGE</a> = 1009,</div><div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e"> 597</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e">LWS_CLOSE_STATUS_EXTENSION_REQUIRED</a> = 1010,</div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350"> 605</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350">LWS_CLOSE_STATUS_UNEXPECTED_CONDITION</a> = 1011,</div><div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390"> 609</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390">LWS_CLOSE_STATUS_TLS_FAILURE</a> = 1015,</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> };</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <a class="code" href="group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262">lws_close_reason</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> <a class="code" href="group__wsclose.html#gae399c571df32ba532c0ca67da9284985">lws_close_status</a> status,</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> </div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="keyword">struct </span>lws;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="keyword">struct </span>lws_context;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="comment">/* needed even with extensions disabled for create context */</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="comment">/*</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="comment"> */</span></div><div class="line"><a name="l00663"></a><span class="lineno"><a class="line" href="group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7"> 663</a></span> <span class="keyword">enum</span> <a class="code" href="group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7">lws_callback_reasons</a> {</div><div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439"> 664</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439">LWS_CALLBACK_ESTABLISHED</a> = 0,</div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8"> 668</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8">LWS_CALLBACK_CLIENT_CONNECTION_ERROR</a> = 1,</div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2"> 712</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2">LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH</a> = 2,</div><div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604"> 719</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604">LWS_CALLBACK_CLIENT_ESTABLISHED</a> = 3,</div><div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8"> 722</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8">LWS_CALLBACK_CLOSED</a> = 4,</div><div class="line"><a name="l00724"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba"> 724</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba">LWS_CALLBACK_CLOSED_HTTP</a> = 5,</div><div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c"> 726</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c">LWS_CALLBACK_RECEIVE</a> = 6,</div><div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738"> 730</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738">LWS_CALLBACK_RECEIVE_PONG</a> = 7,</div><div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1"> 732</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1">LWS_CALLBACK_CLIENT_RECEIVE</a> = 8,</div><div class="line"><a name="l00735"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9"> 735</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9">LWS_CALLBACK_CLIENT_RECEIVE_PONG</a> = 9,</div><div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514"> 737</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514">LWS_CALLBACK_CLIENT_WRITEABLE</a> = 10,</div><div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc"> 745</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc">LWS_CALLBACK_SERVER_WRITEABLE</a> = 11,</div><div class="line"><a name="l00747"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e"> 747</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e">LWS_CALLBACK_HTTP</a> = 12,</div><div class="line"><a name="l00761"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae"> 761</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae">LWS_CALLBACK_HTTP_BODY</a> = 13,</div><div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804"> 764</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804">LWS_CALLBACK_HTTP_BODY_COMPLETION</a> = 14,</div><div class="line"><a name="l00766"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587"> 766</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587">LWS_CALLBACK_HTTP_FILE_COMPLETION</a> = 15,</div><div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09"> 768</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09">LWS_CALLBACK_HTTP_WRITEABLE</a> = 16,</div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6"> 770</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6">LWS_CALLBACK_FILTER_NETWORK_CONNECTION</a> = 17,</div><div class="line"><a name="l00781"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c"> 781</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c">LWS_CALLBACK_FILTER_HTTP_CONNECTION</a> = 18,</div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3"> 793</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3">LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED</a> = 19,</div><div class="line"><a name="l00801"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d"> 801</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d">LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION</a> = 20,</div><div class="line"><a name="l00813"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c"> 813</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c">LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS</a> = 21,</div><div class="line"><a name="l00820"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493"> 820</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493">LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS</a> = 22,</div><div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac"> 826</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac">LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION</a> = 23,</div><div class="line"><a name="l00844"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f"> 844</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f">LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER</a> = 24,</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e"> 868</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e">LWS_CALLBACK_CONFIRM_EXTENSION_OKAY</a> = 25,</div><div class="line"><a name="l00879"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46"> 879</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46">LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED</a> = 26,</div><div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49"> 888</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49">LWS_CALLBACK_PROTOCOL_INIT</a> = 27,</div><div class="line"><a name="l00891"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa"> 891</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa">LWS_CALLBACK_PROTOCOL_DESTROY</a> = 28,</div><div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01"> 896</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01">LWS_CALLBACK_WSI_CREATE</a> = 29,</div><div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e"> 898</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e">LWS_CALLBACK_WSI_DESTROY</a> = 30,</div><div class="line"><a name="l00900"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34"> 900</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34">LWS_CALLBACK_GET_THREAD_ID</a> = 31,</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="comment">/* external poll() management support */</span></div><div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412"> 906</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412">LWS_CALLBACK_ADD_POLL_FD</a> = 32,</div><div class="line"><a name="l00922"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768"> 922</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768">LWS_CALLBACK_DEL_POLL_FD</a> = 33,</div><div class="line"><a name="l00928"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e"> 928</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e">LWS_CALLBACK_CHANGE_MODE_POLL_FD</a> = 34,</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428"> 936</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428">LWS_CALLBACK_LOCK_POLL</a> = 35,</div><div class="line"><a name="l00948"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79"> 948</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79">LWS_CALLBACK_UNLOCK_POLL</a> = 36,</div><div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b"> 951</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b">LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY</a> = 37,</div><div class="line"><a name="l00959"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51"> 959</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51">LWS_CALLBACK_WS_PEER_INITIATED_CLOSE</a> = 38,</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  LWS_CALLBACK_CGI = 40,</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  LWS_CALLBACK_CGI_TERMINATED = 41,</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  LWS_CALLBACK_CGI_STDIN_DATA = 42,</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  LWS_CALLBACK_PROCESS_HTML = 52,</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  LWS_CALLBACK_ADD_HEADERS = 53,</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  LWS_CALLBACK_SESSION_INFO = 54,</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  LWS_CALLBACK_GS_EVENT = 55,</div><div class="line"><a name="l01004"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a"> 1004</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a">LWS_CALLBACK_HTTP_PMO</a> = 56,</div><div class="line"><a name="l01009"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6"> 1009</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6">LWS_CALLBACK_CLIENT_HTTP_WRITEABLE</a> = 57,</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a"> 1021</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a">LWS_CALLBACK_USER</a> = 1000,</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> };</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> </div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="keyword">typedef</span> <span class="keywordtype">int</span></div><div class="line"><a name="l01043"></a><span class="lineno"><a class="line" href="group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f"> 1043</a></span> <a class="code" href="group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f">lws_callback_function</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> <a class="code" href="group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7">lws_callback_reasons</a> reason,</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordtype">void</span> *user, <span class="keywordtype">void</span> *in, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> </div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="comment">/*</span></div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="comment"> */</span></div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="keyword">enum</span> lws_extension_callback_reasons {</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  LWS_EXT_CB_CONSTRUCT = 4,</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  LWS_EXT_CB_DESTROY = 8,</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  LWS_EXT_CB_PACKET_TX_PRESEND = 12,</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  LWS_EXT_CB_FLUSH_PENDING_TX = 15,</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  LWS_EXT_CB_1HZ = 18,</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  LWS_EXT_CB_IS_WRITEABLE = 20,</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  LWS_EXT_CB_PAYLOAD_TX = 21,</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  LWS_EXT_CB_PAYLOAD_RX = 22,</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  LWS_EXT_CB_OPTION_DEFAULT = 23,</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  LWS_EXT_CB_OPTION_SET = 24,</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  LWS_EXT_CB_OPTION_CONFIRM = 25,</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  LWS_EXT_CB_NAMED_OPTION_SET = 26,</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> </div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> };</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> </div><div class="line"><a name="l01095"></a><span class="lineno"><a class="line" href="group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e"> 1095</a></span> <span class="keyword">enum</span> <a class="code" href="group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e">lws_ext_options_types</a> {</div><div class="line"><a name="l01096"></a><span class="lineno"><a class="line" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c"> 1096</a></span>  <a class="code" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c">EXTARG_NONE</a>, </div><div class="line"><a name="l01097"></a><span class="lineno"><a class="line" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e"> 1097</a></span>  <a class="code" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e">EXTARG_DEC</a>, </div><div class="line"><a name="l01098"></a><span class="lineno"><a class="line" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880"> 1098</a></span>  <a class="code" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880">EXTARG_OPT_DEC</a> </div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> };</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div><div class="line"><a name="l01108"></a><span class="lineno"><a class="line" href="structlws__ext__options.html"> 1108</a></span> <span class="keyword">struct </span><a class="code" href="structlws__ext__options.html">lws_ext_options</a> {</div><div class="line"><a name="l01109"></a><span class="lineno"><a class="line" href="structlws__ext__options.html#a1769e4a9805bbdda227821e9578ddc7e"> 1109</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__ext__options.html#a1769e4a9805bbdda227821e9578ddc7e">name</a>; </div><div class="line"><a name="l01110"></a><span class="lineno"><a class="line" href="structlws__ext__options.html#a7c4dbd62dbeba63a9d50d2306bd1cc61"> 1110</a></span>  <span class="keyword">enum</span> <a class="code" href="group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e">lws_ext_options_types</a> type; </div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> };</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> </div><div class="line"><a name="l01117"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html"> 1117</a></span> <span class="keyword">struct </span><a class="code" href="structlws__ext__option__arg.html">lws_ext_option_arg</a> {</div><div class="line"><a name="l01118"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html#a0a320c56b79271b8f059eeaad9423ac9"> 1118</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__ext__option__arg.html#a0a320c56b79271b8f059eeaad9423ac9">option_name</a>; </div><div class="line"><a name="l01119"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f"> 1119</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f">option_index</a>; </div><div class="line"><a name="l01120"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html#a0b1f7b30c3ceaf5f1bf9d105c24568d1"> 1120</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__ext__option__arg.html#a0b1f7b30c3ceaf5f1bf9d105c24568d1">start</a>; </div><div class="line"><a name="l01121"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5"> 1121</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5">len</a>; </div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> };</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> </div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> <span class="keyword">typedef</span> <span class="keywordtype">int</span></div><div class="line"><a name="l01185"></a><span class="lineno"><a class="line" href="group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0"> 1185</a></span> <a class="code" href="group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0">lws_extension_callback_function</a>(<span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__extension.html">lws_extension</a> *ext, <span class="keyword">struct</span> lws *wsi,</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keyword">enum</span> lws_extension_callback_reasons reason,</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keywordtype">void</span> *user, <span class="keywordtype">void</span> *in, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div><div class="line"><a name="l01191"></a><span class="lineno"><a class="line" href="structlws__extension.html"> 1191</a></span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> {</div><div class="line"><a name="l01192"></a><span class="lineno"><a class="line" href="structlws__extension.html#a1e5018c883d85176f5c2152176843f9e"> 1192</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__extension.html#a1e5018c883d85176f5c2152176843f9e">name</a>; </div><div class="line"><a name="l01193"></a><span class="lineno"><a class="line" href="structlws__extension.html#afa21f3b3c8c2c9212a276c52b680c3af"> 1193</a></span>  <a class="code" href="group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0">lws_extension_callback_function</a> *<a class="code" href="structlws__extension.html#afa21f3b3c8c2c9212a276c52b680c3af">callback</a>; </div><div class="line"><a name="l01194"></a><span class="lineno"><a class="line" href="structlws__extension.html#a36b06c213aedb02bf9a402651751855b"> 1194</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__extension.html#a36b06c213aedb02bf9a402651751855b">client_offer</a>; </div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> };</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> </div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> <a class="code" href="group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9">lws_set_extension_option</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *ext_name,</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *opt_name, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt_val);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> </div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> <span class="preprocessor">#ifndef LWS_NO_EXTENSIONS</span></div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> <span class="comment">/* lws_get_internal_extensions() - DEPRECATED</span></div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> <span class="comment"> *</span></div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> <span class="comment"> * \Deprecated There is no longer a set internal extensions table. The table is provided</span></div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> <span class="comment"> * by user code along with application-specific settings. See the test</span></div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> <span class="comment"> * client and server for how to do.</span></div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> <span class="comment"> */</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="keyword">static</span> LWS_INLINE LWS_WARN_DEPRECATED <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> *</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> lws_get_internal_extensions(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> NULL; }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> </div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> <a class="code" href="group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b">lws_ext_parse_options</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__extension.html">lws_extension</a> *ext, <span class="keyword">struct</span> lws *wsi,</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <span class="keywordtype">void</span> *ext_user, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__ext__options.html">lws_ext_options</a> *opts,</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *o, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> </div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> LWS_EXTERN</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> <span class="keywordtype">int</span> <a class="code" href="group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e">lws_extension_callback_pm_deflate</a>(</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keyword">struct</span> lws_context *context, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__extension.html">lws_extension</a> *ext,</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  <span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> lws_extension_callback_reasons reason,</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="keywordtype">void</span> *user, <span class="keywordtype">void</span> *in, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> </div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> <span class="comment">/*</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> <span class="comment"> * The internal exts are part of the public abi</span></div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> <span class="comment"> * If we add more extensions, publish the callback here ------v</span></div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> <span class="comment"> */</span></div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> </div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> </div><div class="line"><a name="l01281"></a><span class="lineno"><a class="line" href="structlws__protocols.html"> 1281</a></span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> {</div><div class="line"><a name="l01282"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624"> 1282</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624">name</a>;</div><div class="line"><a name="l01285"></a><span class="lineno"><a class="line" href="structlws__protocols.html#acabf94c1a9bfe7be0387fbb0e0c56b2d"> 1285</a></span>  <a class="code" href="group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f">lws_callback_function</a> *<a class="code" href="structlws__protocols.html#acabf94c1a9bfe7be0387fbb0e0c56b2d">callback</a>;</div><div class="line"><a name="l01289"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a9bbd85f591ffb4259711cb5acbb05bea"> 1289</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structlws__protocols.html#a9bbd85f591ffb4259711cb5acbb05bea">per_session_data_size</a>;</div><div class="line"><a name="l01294"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5"> 1294</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5">rx_buffer_size</a>;</div><div class="line"><a name="l01303"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a6b632018590c2b1bbe43fbab6d5e6fac"> 1303</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__protocols.html#a6b632018590c2b1bbe43fbab6d5e6fac">id</a>;</div><div class="line"><a name="l01310"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a3cbd903ad076736ae934a54cae36580e"> 1310</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__protocols.html#a3cbd903ad076736ae934a54cae36580e">user</a>; </div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> };</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> </div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> <span class="keyword">struct </span>lws_vhost;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> </div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> <a class="code" href="group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d">lws_vhost_name_to_protocol</a>(<span class="keyword">struct</span> lws_vhost *vh, <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624">name</a>);</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> </div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> <a class="code" href="group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112">lws_get_protocol</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> </div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> <a class="code" href="group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030">lws_protocol_get</a>(<span class="keyword">struct</span> lws *wsi) LWS_WARN_DEPRECATED;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> </div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> *</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> <a class="code" href="group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1">lws_protocol_vh_priv_zalloc</a>(<span class="keyword">struct</span> lws_vhost *vhost, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *prot,</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <span class="keywordtype">int</span> size);</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> </div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> *</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> <a class="code" href="group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129">lws_protocol_vh_priv_get</a>(<span class="keyword">struct</span> lws_vhost *vhost, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *prot);</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> </div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> <a class="code" href="group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43">lws_finalize_startup</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> </div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> <span class="preprocessor">#ifdef LWS_WITH_PLUGINS</span></div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> </div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> <span class="comment">/* PLUGINS implies LIBUV */</span></div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> </div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <span class="preprocessor">#define LWS_PLUGIN_API_MAGIC 180</span></div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span> </div><div class="line"><a name="l01390"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html"> 1390</a></span> <span class="keyword">struct </span><a class="code" href="structlws__plugin__capability.html">lws_plugin_capability</a> {</div><div class="line"><a name="l01391"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#a523c7cde6f15bba345f56493dcf6b32a"> 1391</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__plugin__capability.html#a523c7cde6f15bba345f56493dcf6b32a">api_magic</a>; </div><div class="line"><a name="l01392"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#a6a4d9d01e770f378ddadc77b37522033"> 1392</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *<a class="code" href="structlws__plugin__capability.html#a6a4d9d01e770f378ddadc77b37522033">protocols</a>; </div><div class="line"><a name="l01393"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f"> 1393</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f">count_protocols</a>; </div><div class="line"><a name="l01394"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#a7936f0eb93d79dea76b903d0f8a5f623"> 1394</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> *<a class="code" href="structlws__plugin__capability.html#a7936f0eb93d79dea76b903d0f8a5f623">extensions</a>; </div><div class="line"><a name="l01395"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#abcf51db969522fdda9aaf902e65739d3"> 1395</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__plugin__capability.html#abcf51db969522fdda9aaf902e65739d3">count_extensions</a>; </div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> };</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> </div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="keyword">typedef</span> int (*lws_plugin_init_func)(<span class="keyword">struct </span>lws_context *,</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <span class="keyword">struct </span><a class="code" href="structlws__plugin__capability.html">lws_plugin_capability</a> *);</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> <span class="keyword">typedef</span> int (*lws_plugin_destroy_func)(<span class="keyword">struct </span>lws_context *);</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> </div><div class="line"><a name="l01403"></a><span class="lineno"><a class="line" href="structlws__plugin.html"> 1403</a></span> <span class="keyword">struct </span><a class="code" href="structlws__plugin.html">lws_plugin</a> {</div><div class="line"><a name="l01404"></a><span class="lineno"><a class="line" href="structlws__plugin.html#a65dffd68fd267ce17b988790d1d35f22"> 1404</a></span>  <span class="keyword">struct </span><a class="code" href="structlws__plugin.html">lws_plugin</a> *<a class="code" href="structlws__plugin.html#a65dffd68fd267ce17b988790d1d35f22">list</a>; </div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="preprocessor">#if (UV_VERSION_MAJOR > 0)</span></div><div class="line"><a name="l01406"></a><span class="lineno"><a class="line" href="structlws__plugin.html#af9e1042dc1de5b9d202c2f5fd1834330"> 1406</a></span>  uv_lib_t <a class="code" href="structlws__plugin.html#af9e1042dc1de5b9d202c2f5fd1834330">lib</a>; </div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01408"></a><span class="lineno"><a class="line" href="structlws__plugin.html#a4ef37a43653715b6c69cbf8a7be747f4"> 1408</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__plugin.html#a4ef37a43653715b6c69cbf8a7be747f4">l</a>; </div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01410"></a><span class="lineno"><a class="line" href="structlws__plugin.html#af4ac8fcb79e10e0c2d960e1804d98105"> 1410</a></span>  <span class="keywordtype">char</span> <a class="code" href="structlws__plugin.html#af4ac8fcb79e10e0c2d960e1804d98105">name</a>[64]; </div><div class="line"><a name="l01411"></a><span class="lineno"><a class="line" href="structlws__plugin.html#ac7f1fdfe8cf8a21f8ee9720c21934a3f"> 1411</a></span>  <span class="keyword">struct </span><a class="code" href="structlws__plugin__capability.html">lws_plugin_capability</a> caps; </div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> };</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span> </div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span> </div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span> </div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> </div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> <span class="preprocessor">#define LWSGS_EMAIL_CONTENT_SIZE 16384</span></div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> </div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> <span class="comment">/* SHA-1 binary and hexified versions */</span></div><div class="line"><a name="l01434"></a><span class="lineno"><a class="line" href="structlwsgw__hash__bin.html#ac92f50d9471058525d110597a4e0de6b"> 1434</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> bin[20]; } <a class="code" href="structlwsgw__hash__bin.html">lwsgw_hash_bin</a>;</div><div class="line"><a name="l01436"></a><span class="lineno"><a class="line" href="structlwsgw__hash.html#a29435f5cf78747d4257695b0f141d164"> 1436</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="keywordtype">char</span> <span class="keywordtype">id</span>[41]; } <a class="code" href="structlwsgw__hash.html">lwsgw_hash</a>;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> </div><div class="line"><a name="l01439"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1"> 1439</a></span> <span class="keyword">enum</span> <a class="code" href="group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1">lwsgs_auth_bits</a> {</div><div class="line"><a name="l01440"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57"> 1440</a></span>  <a class="code" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57">LWSGS_AUTH_LOGGED_IN</a> = 1, </div><div class="line"><a name="l01441"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf"> 1441</a></span>  <a class="code" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf">LWSGS_AUTH_ADMIN</a> = 2, </div><div class="line"><a name="l01442"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887"> 1442</a></span>  <a class="code" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887">LWSGS_AUTH_VERIFIED</a> = 4, </div><div class="line"><a name="l01443"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a"> 1443</a></span>  <a class="code" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a">LWSGS_AUTH_FORGOT_FLOW</a> = 8, </div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> };</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> </div><div class="line"><a name="l01447"></a><span class="lineno"><a class="line" href="structlws__session__info.html"> 1447</a></span> <span class="keyword">struct </span><a class="code" href="structlws__session__info.html">lws_session_info</a> {</div><div class="line"><a name="l01448"></a><span class="lineno"><a class="line" href="structlws__session__info.html#a3d57a70b6e7181d95a8bec429b1a7697"> 1448</a></span>  <span class="keywordtype">char</span> username[32]; </div><div class="line"><a name="l01449"></a><span class="lineno"><a class="line" href="structlws__session__info.html#a94b813cfc6b0da4b182659de30038ad3"> 1449</a></span>  <span class="keywordtype">char</span> email[100]; </div><div class="line"><a name="l01450"></a><span class="lineno"><a class="line" href="structlws__session__info.html#a53eed02325e8717a53297391e3e98fac"> 1450</a></span>  <span class="keywordtype">char</span> ip[72]; </div><div class="line"><a name="l01451"></a><span class="lineno"><a class="line" href="structlws__session__info.html#afb924864b70f40372920688a5c1c895e"> 1451</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__session__info.html#afb924864b70f40372920688a5c1c895e">mask</a>; </div><div class="line"><a name="l01453"></a><span class="lineno"><a class="line" href="structlws__session__info.html#a4353b5dd19400b2b15edfd7cee1e4cd5"> 1453</a></span>  <span class="keywordtype">char</span> session[42]; </div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span> };</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> </div><div class="line"><a name="l01457"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e"> 1457</a></span> <span class="keyword">enum</span> <a class="code" href="group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e">lws_gs_event</a> {</div><div class="line"><a name="l01458"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308"> 1458</a></span>  <a class="code" href="group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308">LWSGSE_CREATED</a>, </div><div class="line"><a name="l01459"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde"> 1459</a></span>  <a class="code" href="group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde">LWSGSE_DELETED</a> </div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> };</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> </div><div class="line"><a name="l01463"></a><span class="lineno"><a class="line" href="structlws__gs__event__args.html"> 1463</a></span> <span class="keyword">struct </span><a class="code" href="structlws__gs__event__args.html">lws_gs_event_args</a> {</div><div class="line"><a name="l01464"></a><span class="lineno"><a class="line" href="structlws__gs__event__args.html#a477274f8ca22ba7411b9285b9dc8dd06"> 1464</a></span>  <span class="keyword">enum</span> <a class="code" href="group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e">lws_gs_event</a> event; </div><div class="line"><a name="l01465"></a><span class="lineno"><a class="line" href="structlws__gs__event__args.html#a2bec693d8a43730d487004a44326178b"> 1465</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__gs__event__args.html#a2bec693d8a43730d487004a44326178b">username</a>; </div><div class="line"><a name="l01466"></a><span class="lineno"><a class="line" href="structlws__gs__event__args.html#acd17e4f9f91f7f9a8f0fbf0744a3a463"> 1466</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__gs__event__args.html#acd17e4f9f91f7f9a8f0fbf0744a3a463">email</a>; </div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> };</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> </div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> </div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> </div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> <span class="comment">/*</span></div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> <span class="comment"> */</span></div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> </div><div class="line"><a name="l01493"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5"> 1493</a></span> <span class="keyword">enum</span> <a class="code" href="group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5">lws_context_options</a> {</div><div class="line"><a name="l01494"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092"> 1494</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092">LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT</a> = (1 << 1) |</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  (1 << 12),</div><div class="line"><a name="l01499"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c"> 1499</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c">LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME</a> = (1 << 2),</div><div class="line"><a name="l01501"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d"> 1501</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d">LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT</a> = (1 << 3) |</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  (1 << 12),</div><div class="line"><a name="l01506"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6"> 1506</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6">LWS_SERVER_OPTION_LIBEV</a> = (1 << 4),</div><div class="line"><a name="l01508"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9"> 1508</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9">LWS_SERVER_OPTION_DISABLE_IPV6</a> = (1 << 5),</div><div class="line"><a name="l01510"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93"> 1510</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93">LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS</a> = (1 << 6),</div><div class="line"><a name="l01513"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc"> 1513</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc">LWS_SERVER_OPTION_PEER_CERT_NOT_REQUIRED</a> = (1 << 7),</div><div class="line"><a name="l01515"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f"> 1515</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f">LWS_SERVER_OPTION_VALIDATE_UTF8</a> = (1 << 8),</div><div class="line"><a name="l01517"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c"> 1517</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c">LWS_SERVER_OPTION_SSL_ECDH</a> = (1 << 9) |</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  (1 << 12),</div><div class="line"><a name="l01520"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e"> 1520</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e">LWS_SERVER_OPTION_LIBUV</a> = (1 << 10),</div><div class="line"><a name="l01522"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada"> 1522</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada">LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPS</a> = (1 << 11) |</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  (1 << 12),</div><div class="line"><a name="l01526"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a"> 1526</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a">LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT</a> = (1 << 12),</div><div class="line"><a name="l01528"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e"> 1528</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e">LWS_SERVER_OPTION_EXPLICIT_VHOSTS</a> = (1 << 13),</div><div class="line"><a name="l01531"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941"> 1531</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941">LWS_SERVER_OPTION_UNIX_SOCK</a> = (1 << 14),</div><div class="line"><a name="l01533"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016"> 1533</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016">LWS_SERVER_OPTION_STS</a> = (1 << 15),</div><div class="line"><a name="l01536"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8"> 1536</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8">LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY</a> = (1 << 16),</div><div class="line"><a name="l01538"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160"> 1538</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160">LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE</a> = (1 << 17),</div><div class="line"><a name="l01540"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd"> 1540</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd">LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN</a> = (1 << 18),</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span> };</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> </div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> <span class="preprocessor">#define lws_check_opt(c, f) (((c) & (f)) == (f))</span></div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> </div><div class="line"><a name="l01561"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html"> 1561</a></span> <span class="keyword">struct </span><a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> {</div><div class="line"><a name="l01562"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a424a5ce268d6903e42243be94487ab85"> 1562</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a424a5ce268d6903e42243be94487ab85">port</a>;</div><div class="line"><a name="l01567"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a75434932bb5df54665ea678eb8ac104a"> 1567</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#a75434932bb5df54665ea678eb8ac104a">iface</a>;</div><div class="line"><a name="l01574"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#abb90ffb3e6d6db2db20f529d61bd9122"> 1574</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *<a class="code" href="structlws__context__creation__info.html#abb90ffb3e6d6db2db20f529d61bd9122">protocols</a>;</div><div class="line"><a name="l01578"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a4a3d1155fc52f5048b481884f6fb947c"> 1578</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> *<a class="code" href="structlws__context__creation__info.html#a4a3d1155fc52f5048b481884f6fb947c">extensions</a>;</div><div class="line"><a name="l01581"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29"> 1581</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__token__limits.html">lws_token_limits</a> *<a class="code" href="structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29">token_limits</a>;</div><div class="line"><a name="l01584"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#af3fb447be15c4fcb01d3285a6678ab54"> 1584</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#af3fb447be15c4fcb01d3285a6678ab54">ssl_private_key_password</a>;</div><div class="line"><a name="l01586"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ac62b0f0e8e402412ba5011d15c244103"> 1586</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#ac62b0f0e8e402412ba5011d15c244103">ssl_cert_filepath</a>;</div><div class="line"><a name="l01590"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ab9ec8893e0f7843cf5d783d2f350ef14"> 1590</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#ab9ec8893e0f7843cf5d783d2f350ef14">ssl_private_key_filepath</a>;</div><div class="line"><a name="l01596"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a4f8e65c3a059d3b586fafa9ef3282c29"> 1596</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#a4f8e65c3a059d3b586fafa9ef3282c29">ssl_ca_filepath</a>;</div><div class="line"><a name="l01598"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a3e1516fd7fed26bfa77c0246ed26c2eb"> 1598</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#a3e1516fd7fed26bfa77c0246ed26c2eb">ssl_cipher_list</a>;</div><div class="line"><a name="l01602"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#aef917c0b23976a264d2474901b4f5aa3"> 1602</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#aef917c0b23976a264d2474901b4f5aa3">http_proxy_address</a>;</div><div class="line"><a name="l01605"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a7b59f2bdc869871e7bde232db94f5ca6"> 1605</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a7b59f2bdc869871e7bde232db94f5ca6">http_proxy_port</a>;</div><div class="line"><a name="l01607"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a9c9d22437de92c197f3cee52912b2c03"> 1607</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a9c9d22437de92c197f3cee52912b2c03">gid</a>;</div><div class="line"><a name="l01609"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e"> 1609</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e">uid</a>;</div><div class="line"><a name="l01611"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a9d3b17a25e1fbc772f21eb4959a82724"> 1611</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a9d3b17a25e1fbc772f21eb4959a82724">options</a>;</div><div class="line"><a name="l01613"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0"> 1613</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0">user</a>;</div><div class="line"><a name="l01616"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ac583ce92b8e1c949cb6fef6bfe713d56"> 1616</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#ac583ce92b8e1c949cb6fef6bfe713d56">ka_time</a>;</div><div class="line"><a name="l01619"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a3baab4285c679fbe027c2504621d7410"> 1619</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a3baab4285c679fbe027c2504621d7410">ka_probes</a>;</div><div class="line"><a name="l01623"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a381342a398883d6204955ff3c1849ddd"> 1623</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a381342a398883d6204955ff3c1849ddd">ka_interval</a>;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> <span class="preprocessor">#ifdef LWS_OPENSSL_SUPPORT</span></div><div class="line"><a name="l01627"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a1654d41bea6fb2f619b57e6a264b26a4"> 1627</a></span>  <a class="code" href="structlws__polarssl__context.html">SSL_CTX</a> *<a class="code" href="structlws__context__creation__info.html#a1654d41bea6fb2f619b57e6a264b26a4">provided_client_ssl_ctx</a>;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> <span class="preprocessor">#else </span><span class="comment">/* maintain structure layout either way */</span><span class="preprocessor"></span></div><div class="line"><a name="l01633"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a0e790dda6202604f73a03b6149bc12bb"> 1633</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__context__creation__info.html#a0e790dda6202604f73a03b6149bc12bb">provided_client_ssl_ctx</a>; </div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> </div><div class="line"><a name="l01636"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a0cdfd3c484689ba6f0f2cc91b38ce948"> 1636</a></span>  <span class="keywordtype">short</span> <a class="code" href="structlws__context__creation__info.html#a0cdfd3c484689ba6f0f2cc91b38ce948">max_http_header_data</a>;</div><div class="line"><a name="l01639"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a0b154e79abc1167ba4ac3539f4af6720"> 1639</a></span>  <span class="keywordtype">short</span> <a class="code" href="structlws__context__creation__info.html#a0b154e79abc1167ba4ac3539f4af6720">max_http_header_pool</a>;</div><div class="line"><a name="l01646"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ae52f3237e144e9ddcab5e2cf91d1e419"> 1646</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#ae52f3237e144e9ddcab5e2cf91d1e419">count_threads</a>;</div><div class="line"><a name="l01648"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a45e63e24c88289e0c8352377ef4d3646"> 1648</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a45e63e24c88289e0c8352377ef4d3646">fd_limit_per_thread</a>;</div><div class="line"><a name="l01652"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a6cfa3d51df2def3349a5cbf0d712822d"> 1652</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a6cfa3d51df2def3349a5cbf0d712822d">timeout_secs</a>;</div><div class="line"><a name="l01657"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#afa5d4e7d9f86b58a1c6fac14f0a5f5f9"> 1657</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#afa5d4e7d9f86b58a1c6fac14f0a5f5f9">ecdh_curve</a>;</div><div class="line"><a name="l01659"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9"> 1659</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9">vhost_name</a>;</div><div class="line"><a name="l01663"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a8122cfc0810bafe51edb3ba6bf9a1251"> 1663</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *<a class="code" href="structlws__context__creation__info.html#a8122cfc0810bafe51edb3ba6bf9a1251">plugin_dirs</a>;</div><div class="line"><a name="l01666"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a999866fcd15dbd621773436f97190458"> 1666</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__context__creation__info.html#a999866fcd15dbd621773436f97190458">pvo</a>;</div><div class="line"><a name="l01669"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a81697c6b763b5ef3ee52862bc70b07d6"> 1669</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a81697c6b763b5ef3ee52862bc70b07d6">keepalive_timeout</a>;</div><div class="line"><a name="l01672"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ad0e95ba721f7bd2b676719f8093c23a2"> 1672</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#ad0e95ba721f7bd2b676719f8093c23a2">log_filepath</a>;</div><div class="line"><a name="l01675"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a13ffbb0d010309669611f8c4eda7d7f8"> 1675</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__http__mount.html">lws_http_mount</a> *<a class="code" href="structlws__context__creation__info.html#a13ffbb0d010309669611f8c4eda7d7f8">mounts</a>;</div><div class="line"><a name="l01677"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a137a9b9de4f6a7993fed8746d551e616"> 1677</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#a137a9b9de4f6a7993fed8746d551e616">server_string</a>;</div><div class="line"><a name="l01680"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a57f88c0745adbd1d6b9b619b8de30209"> 1680</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a57f88c0745adbd1d6b9b619b8de30209">pt_serv_buf_size</a>;</div><div class="line"><a name="l01686"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#aa8d9e85e137f35fb006f2e4a53f0887a"> 1686</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#aa8d9e85e137f35fb006f2e4a53f0887a">max_http_header_data2</a>;</div><div class="line"><a name="l01691"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a704940261951ced6b5d8191bd8b9bb2d"> 1691</a></span>  <span class="keywordtype">long</span> <a class="code" href="structlws__context__creation__info.html#a704940261951ced6b5d8191bd8b9bb2d">ssl_options_set</a>;</div><div class="line"><a name="l01693"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#adb0bc0b28cd7d90ab306723d8ffa96fa"> 1693</a></span>  <span class="keywordtype">long</span> <a class="code" href="structlws__context__creation__info.html#adb0bc0b28cd7d90ab306723d8ffa96fa">ssl_options_clear</a>;</div><div class="line"><a name="l01695"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078"> 1695</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078">ws_ping_pong_interval</a>;</div><div class="line"><a name="l01707"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a8ca0ec6b8675c13849bbdcdc0d50c9a3"> 1707</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__context__creation__info.html#a8ca0ec6b8675c13849bbdcdc0d50c9a3">headers</a>;</div><div class="line"><a name="l01711"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a6b059b7ee248cba72a3a4fd6141b0b34"> 1711</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__context__creation__info.html#a6b059b7ee248cba72a3a4fd6141b0b34">reject_service_keywords</a>;</div><div class="line"><a name="l01718"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#aadbc1b141d16c1084ec4c543e7768a72"> 1718</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__context__creation__info.html#aadbc1b141d16c1084ec4c543e7768a72">external_baggage_free_on_destroy</a>;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span> <span class="comment"> *</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> <span class="comment"> * The below is to ensure later library versions with new</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <span class="comment"> * members added above will see 0 (default) even if the app</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> <span class="comment"> * was not built against the newer headers.</span></div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="comment"> */</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> </div><div class="line"><a name="l01734"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#afce3b59950eca3203faa07381bbed5d7"> 1734</a></span>  <span class="keywordtype">void</span> *_unused[8]; </div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> };</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> </div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_context *</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> <a class="code" href="group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648">lws_create_context</a>(<span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info);</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> </div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span> <a class="code" href="group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb">lws_context_destroy</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span> </div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span> <a class="code" href="group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4">lws_set_proxy</a>(<span class="keyword">struct</span> lws_vhost *vhost, <span class="keyword">const</span> <span class="keywordtype">char</span> *proxy);</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> </div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span> </div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span> <span class="keyword">struct </span>lws_vhost;</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> </div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span> LWS_EXTERN LWS_VISIBLE <span class="keyword">struct </span>lws_vhost *</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> <a class="code" href="group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c">lws_create_vhost</a>(<span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>  <span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info);</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> </div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span> <a class="code" href="group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73">lwsws_get_config_globals</a>(<span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info, <span class="keyword">const</span> <span class="keywordtype">char</span> *d,</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>  <span class="keywordtype">char</span> **config_strings, <span class="keywordtype">int</span> *len);</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> </div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span> <a class="code" href="group__context-and-vhost.html#ga341064721add2618ae1b29717493a212">lwsws_get_config_vhosts</a>(<span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>  <span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info, <span class="keyword">const</span> <span class="keywordtype">char</span> *d,</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>  <span class="keywordtype">char</span> **config_strings, <span class="keywordtype">int</span> *len);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span> </div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_vhost *</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span> <a class="code" href="group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c">lws_vhost_get</a>(<span class="keyword">struct</span> lws *wsi) LWS_WARN_DEPRECATED;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span> </div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_vhost *</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span> <a class="code" href="group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932">lws_get_vhost</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span> </div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span> <a class="code" href="group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6">lws_json_dump_vhost</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_vhost *vh, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> </div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> <a class="code" href="group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d">lws_json_dump_context</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_context *context, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> </div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> *</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span> <a class="code" href="group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da">lws_context_user</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span> </div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span> </div><div class="line"><a name="l01915"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html"> 1915</a></span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> {</div><div class="line"><a name="l01916"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c"> 1916</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c">next</a>; </div><div class="line"><a name="l01917"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822"> 1917</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822">options</a>; </div><div class="line"><a name="l01918"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9"> 1918</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9">name</a>; </div><div class="line"><a name="l01919"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7"> 1919</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7">value</a>; </div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span> };</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span> </div><div class="line"><a name="l01926"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437"> 1926</a></span> <span class="keyword">enum</span> <a class="code" href="group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437">lws_mount_protocols</a> {</div><div class="line"><a name="l01927"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0"> 1927</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a> = 0, </div><div class="line"><a name="l01928"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1"> 1928</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a> = 1, </div><div class="line"><a name="l01929"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2"> 1929</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a> = 2, </div><div class="line"><a name="l01930"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69"> 1930</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a> = 3, </div><div class="line"><a name="l01931"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970"> 1931</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a> = 4, </div><div class="line"><a name="l01932"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67"> 1932</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a> = 5, </div><div class="line"><a name="l01933"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da"> 1933</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a> = 6, </div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span> };</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span> </div><div class="line"><a name="l01940"></a><span class="lineno"><a class="line" href="structlws__http__mount.html"> 1940</a></span> <span class="keyword">struct </span><a class="code" href="structlws__http__mount.html">lws_http_mount</a> {</div><div class="line"><a name="l01941"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44"> 1941</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__http__mount.html">lws_http_mount</a> *<a class="code" href="structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44">mount_next</a>;</div><div class="line"><a name="l01943"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#aa2391bfcada0b7a290b3c6651f64586c"> 1943</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#aa2391bfcada0b7a290b3c6651f64586c">mountpoint</a>;</div><div class="line"><a name="l01945"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a"> 1945</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a">origin</a>;</div><div class="line"><a name="l01947"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#ae90d1efe7178199fad39de2926902ee4"> 1947</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#ae90d1efe7178199fad39de2926902ee4">def</a>;</div><div class="line"><a name="l01949"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b"> 1949</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b">protocol</a>;</div><div class="line"><a name="l01952"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#ae7b5c0f4c5408061e6ea3a8d281f45af"> 1952</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__http__mount.html#ae7b5c0f4c5408061e6ea3a8d281f45af">cgienv</a>;</div><div class="line"><a name="l01956"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7"> 1956</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7">extra_mimetypes</a>;</div><div class="line"><a name="l01958"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773"> 1958</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773">interpret</a>;</div><div class="line"><a name="l01961"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa"> 1961</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa">cgi_timeout</a>;</div><div class="line"><a name="l01963"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146"> 1963</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146">cache_max_age</a>;</div><div class="line"><a name="l01965"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477"> 1965</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477">auth_mask</a>;</div><div class="line"><a name="l01968"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a8316dd183ffbef50419a5a4968d35d84"> 1968</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cache_reusable:1; </div><div class="line"><a name="l01969"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#ae137203040c6153694bd88a708da5395"> 1969</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cache_revalidate:1; </div><div class="line"><a name="l01970"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#aabec1a326780aafe11b977000983be0c"> 1970</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cache_intermediaries:1; </div><div class="line"><a name="l01972"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a6a9b1492a0b9749e39bd19932717a0b7"> 1972</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structlws__http__mount.html#a6a9b1492a0b9749e39bd19932717a0b7">origin_protocol</a>; </div><div class="line"><a name="l01973"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#ac8489b60b8f969eb19c9abbdeac90743"> 1973</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structlws__http__mount.html#ac8489b60b8f969eb19c9abbdeac90743">mountpoint_len</a>; </div><div class="line"><a name="l01975"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98"> 1975</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98">basic_auth_login_file</a>;</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility</span></div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span> <span class="comment"> *</span></div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span> <span class="comment"> * The below is to ensure later library versions with new</span></div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span> <span class="comment"> * members added above will see 0 (default) even if the app</span></div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> <span class="comment"> * was not built against the newer headers.</span></div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span> <span class="comment"> */</span></div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span> </div><div class="line"><a name="l01986"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a78d58848eed7b544ae83f719abdbe4b6"> 1986</a></span>  <span class="keywordtype">void</span> *_unused[2]; </div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span> };</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span> </div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span> </div><div class="line"><a name="l02003"></a><span class="lineno"><a class="line" href="group__client.html#ga96f3dbad54b2853969cfa933d66871ce"> 2003</a></span> <span class="keyword">enum</span> <a class="code" href="group__client.html#ga96f3dbad54b2853969cfa933d66871ce">lws_client_connect_ssl_connection_flags</a> {</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  LCCSCF_USE_SSL = (1 << 0),</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>  LCCSCF_ALLOW_EXPIRED = (1 << 3)</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span> };</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span> </div><div class="line"><a name="l02013"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html"> 2013</a></span> <span class="keyword">struct </span><a class="code" href="structlws__client__connect__info.html">lws_client_connect_info</a> {</div><div class="line"><a name="l02014"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd"> 2014</a></span>  <span class="keyword">struct </span>lws_context *<a class="code" href="structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd">context</a>;</div><div class="line"><a name="l02016"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502"> 2016</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502">address</a>;</div><div class="line"><a name="l02018"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9"> 2018</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9">port</a>;</div><div class="line"><a name="l02020"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d"> 2020</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d">ssl_connection</a>;</div><div class="line"><a name="l02022"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185"> 2022</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185">path</a>;</div><div class="line"><a name="l02024"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7"> 2024</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7">host</a>;</div><div class="line"><a name="l02026"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a8595f83e64147cb687b6418cf500dd4c"> 2026</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a8595f83e64147cb687b6418cf500dd4c">origin</a>;</div><div class="line"><a name="l02028"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2"> 2028</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2">protocol</a>;</div><div class="line"><a name="l02030"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895"> 2030</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895">ietf_version_or_minus_one</a>;</div><div class="line"><a name="l02032"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836"> 2032</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836">userdata</a>;</div><div class="line"><a name="l02034"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c"> 2034</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> *<a class="code" href="structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c">client_exts</a>;</div><div class="line"><a name="l02036"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#aa9e8e3da4e783a0651b0dea62c2dd1db"> 2036</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#aa9e8e3da4e783a0651b0dea62c2dd1db">method</a>;</div><div class="line"><a name="l02039"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a6843a60e1050b10db9d98d7eeb45f587"> 2039</a></span>  <span class="keyword">struct </span>lws *<a class="code" href="structlws__client__connect__info.html#a6843a60e1050b10db9d98d7eeb45f587">parent_wsi</a>;</div><div class="line"><a name="l02043"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a"> 2043</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a">uri_replace_from</a>;</div><div class="line"><a name="l02046"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3"> 2046</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3">uri_replace_to</a>;</div><div class="line"><a name="l02048"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be"> 2048</a></span>  <span class="keyword">struct </span>lws_vhost *<a class="code" href="structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be">vhost</a>;</div><div class="line"><a name="l02050"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e"> 2050</a></span>  <span class="keyword">struct </span>lws **<a class="code" href="structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e">pwsi</a>;</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility</span></div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> <span class="comment"> *</span></div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span> <span class="comment"> * The below is to ensure later library versions with new</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span> <span class="comment"> * members added above will see 0 (default) even if the app</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span> <span class="comment"> * was not built against the newer headers.</span></div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> <span class="comment"> */</span></div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span> </div><div class="line"><a name="l02070"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#ad47f50d1633dc5df74548606c9a66d73"> 2070</a></span>  <span class="keywordtype">void</span> *_unused[4]; </div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span> };</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span> </div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws *</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span> <a class="code" href="group__client.html#ga0c966136905f467816307cfba6deb5fd">lws_client_connect_via_info</a>(<span class="keyword">struct</span> <a class="code" href="structlws__client__connect__info.html">lws_client_connect_info</a> * ccinfo);</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span> </div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> <span class="comment">/* deprecated, use lws_client_connect_via_info() */</span></div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span> <a class="code" href="group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3">lws_client_connect</a>(<span class="keyword">struct</span> lws_context *clients, <span class="keyword">const</span> <span class="keywordtype">char</span> *address,</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  <span class="keywordtype">int</span> port, <span class="keywordtype">int</span> ssl_connection, <span class="keyword">const</span> <span class="keywordtype">char</span> *path,</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *host, <span class="keyword">const</span> <span class="keywordtype">char</span> *origin, <span class="keyword">const</span> <span class="keywordtype">char</span> *protocol,</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>  <span class="keywordtype">int</span> ietf_version_or_minus_one) LWS_WARN_DEPRECATED;</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span> <span class="comment">/* deprecated, use lws_client_connect_via_info() */</span></div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> <a class="code" href="group__client.html#gac6a8558b4410961a880241c2ac1271e2">lws_client_connect_extended</a>(<span class="keyword">struct</span> lws_context *clients, <span class="keyword">const</span> <span class="keywordtype">char</span> *address,</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  <span class="keywordtype">int</span> port, <span class="keywordtype">int</span> ssl_connection, <span class="keyword">const</span> <span class="keywordtype">char</span> *path,</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *host, <span class="keyword">const</span> <span class="keywordtype">char</span> *origin,</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *protocol, <span class="keywordtype">int</span> ietf_version_or_minus_one,</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  <span class="keywordtype">void</span> *userdata) LWS_WARN_DEPRECATED;</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span> </div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span> <a class="code" href="group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340">lws_init_vhost_client_ssl</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info,</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>  <span class="keyword">struct</span> lws_vhost *vhost);</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> </div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> lws_http_client_read(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">char</span> **buf, <span class="keywordtype">int</span> *len);</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span> </div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span></div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> <a class="code" href="group__client.html#ga715efffc0c4e8fbf72a4293008eb2187">lws_http_client_http_response</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> </div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span> lws_client_http_body_pending(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">int</span> something_left_to_send);</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> </div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span> </div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span> </div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span> <a class="code" href="group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8">lws_service</a>(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> timeout_ms);</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span> </div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span> <a class="code" href="group__service.html#ga9b3cc4473fd8848e5bbee7f310712939">lws_service_tsi</a>(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> timeout_ms, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span> </div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> <a class="code" href="group__service.html#ga29c246707997ab7a466aa709aecd2d7b">lws_cancel_service_pt</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span> </div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> <a class="code" href="group__service.html#ga53e3d0801dfda7960a7249dd559e68a2">lws_cancel_service</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> </div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span> <a class="code" href="group__service.html#gad82efa5466d14a9f05aa06416375b28d">lws_service_fd</a>(<span class="keyword">struct</span> lws_context *context, <span class="keyword">struct</span> <a class="code" href="structlws__pollfd.html">lws_pollfd</a> *<a class="code" href="structpollfd.html">pollfd</a>);</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span> </div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span> <a class="code" href="group__service.html#gaebf426eda371ba23642fc11d8e0ace6b">lws_service_fd_tsi</a>(<span class="keyword">struct</span> lws_context *context, <span class="keyword">struct</span> <a class="code" href="structlws__pollfd.html">lws_pollfd</a> *<a class="code" href="structpollfd.html">pollfd</a>,</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>  <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span> </div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span> <a class="code" href="group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241">lws_service_adjust_timeout</a>(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> timeout_ms, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span> </div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span> <span class="comment">/* Backwards compatibility */</span></div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span> <span class="preprocessor">#define lws_plat_service_tsi lws_service_tsi</span></div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span> </div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span> </div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span> </div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span> </div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span> <a class="code" href="group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c">lws_get_mimetype</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__http__mount.html">lws_http_mount</a> *m);</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span> </div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span> <a class="code" href="group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7">lws_serve_http_file</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keyword">const</span> <span class="keywordtype">char</span> *content_type,</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *other_headers, <span class="keywordtype">int</span> other_headers_len);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span> lws_serve_http_file_fragment(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span> </div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span> </div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span> <span class="keyword">enum</span> http_status {</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>  HTTP_STATUS_OK = 200,</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>  HTTP_STATUS_NO_CONTENT = 204,</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  HTTP_STATUS_PARTIAL_CONTENT = 206,</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span> </div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  HTTP_STATUS_MOVED_PERMANENTLY = 301,</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  HTTP_STATUS_FOUND = 302,</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  HTTP_STATUS_SEE_OTHER = 303,</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span> </div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>  HTTP_STATUS_BAD_REQUEST = 400,</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>  HTTP_STATUS_UNAUTHORIZED,</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  HTTP_STATUS_PAYMENT_REQUIRED,</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>  HTTP_STATUS_FORBIDDEN,</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>  HTTP_STATUS_NOT_FOUND,</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>  HTTP_STATUS_METHOD_NOT_ALLOWED,</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>  HTTP_STATUS_NOT_ACCEPTABLE,</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>  HTTP_STATUS_PROXY_AUTH_REQUIRED,</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  HTTP_STATUS_REQUEST_TIMEOUT,</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>  HTTP_STATUS_CONFLICT,</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  HTTP_STATUS_GONE,</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  HTTP_STATUS_LENGTH_REQUIRED,</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  HTTP_STATUS_PRECONDITION_FAILED,</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  HTTP_STATUS_REQ_URI_TOO_LONG,</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  HTTP_STATUS_EXPECTATION_FAILED,</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span> </div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  HTTP_STATUS_NOT_IMPLEMENTED,</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>  HTTP_STATUS_BAD_GATEWAY,</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  HTTP_STATUS_SERVICE_UNAVAILABLE,</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  HTTP_STATUS_GATEWAY_TIMEOUT,</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span> };</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span> </div><div class="line"><a name="l02459"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html"> 2459</a></span> <span class="keyword">struct </span><a class="code" href="structlws__process__html__args.html">lws_process_html_args</a> {</div><div class="line"><a name="l02460"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html#a11859d8bedd379fbf64543b25c65fe14"> 2460</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structlws__process__html__args.html#a11859d8bedd379fbf64543b25c65fe14">p</a>; </div><div class="line"><a name="l02461"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html#a754513f2311241cabb0cd1c90d7307ef"> 2461</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__process__html__args.html#a754513f2311241cabb0cd1c90d7307ef">len</a>; </div><div class="line"><a name="l02462"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html#a8be7fd396a1942ea2449a2fda990ff99"> 2462</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__process__html__args.html#a8be7fd396a1942ea2449a2fda990ff99">max_len</a>; </div><div class="line"><a name="l02463"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html#a362547891ee0d693f3900a1f807ea475"> 2463</a></span>  <span class="keywordtype">int</span> <span class="keyword">final</span>; </div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span> };</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span> </div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span> <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *(*lws_process_html_state_cb)(<span class="keywordtype">void</span> *data, <span class="keywordtype">int</span> index);</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span> </div><div class="line"><a name="l02468"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html"> 2468</a></span> <span class="keyword">struct </span><a class="code" href="structlws__process__html__state.html">lws_process_html_state</a> {</div><div class="line"><a name="l02469"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3"> 2469</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3">start</a>; </div><div class="line"><a name="l02470"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#a71982bc1cbd8cf876ca0f545144404eb"> 2470</a></span>  <span class="keywordtype">char</span> swallow[16]; </div><div class="line"><a name="l02471"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#a53234f2948812c7208a256f9f5b23c20"> 2471</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__process__html__state.html#a53234f2948812c7208a256f9f5b23c20">pos</a>; </div><div class="line"><a name="l02472"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5"> 2472</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5">data</a>; </div><div class="line"><a name="l02473"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#a3b113e00c03a2fded51b1c85ff5bf077"> 2473</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *<a class="code" href="structlws__process__html__state.html#a3b113e00c03a2fded51b1c85ff5bf077">vars</a>; </div><div class="line"><a name="l02474"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968"> 2474</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968">count_vars</a>; </div><div class="line"><a name="l02476"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#a693d2fb45378afee5da29b539c1ea644"> 2476</a></span>  lws_process_html_state_cb replace; </div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span> };</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span> </div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span> <a class="code" href="group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60">lws_chunked_html_process</a>(<span class="keyword">struct</span> <a class="code" href="structlws__process__html__args.html">lws_process_html_args</a> *args,</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  <span class="keyword">struct</span> <a class="code" href="structlws__process__html__state.html">lws_process_html_state</a> *s);</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span> </div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span> </div><div class="line"><a name="l02528"></a><span class="lineno"><a class="line" href="structlws__tokens.html"> 2528</a></span> <span class="keyword">struct </span><a class="code" href="structlws__tokens.html">lws_tokens</a> {</div><div class="line"><a name="l02529"></a><span class="lineno"><a class="line" href="structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd"> 2529</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd">token</a>; </div><div class="line"><a name="l02530"></a><span class="lineno"><a class="line" href="structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766"> 2530</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766">token_len</a>; </div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span> };</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span> </div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span> <span class="comment">/* enum lws_token_indexes</span></div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span> <span class="comment"> * these have to be kept in sync with lextable.h / minilex.c</span></div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span> <span class="comment"> *</span></div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span> <span class="comment"> */</span></div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span> <span class="keyword">enum</span> lws_token_indexes {</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  WSI_TOKEN_GET_URI = 0,</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  WSI_TOKEN_POST_URI = 1,</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>  WSI_TOKEN_OPTIONS_URI = 2,</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>  WSI_TOKEN_HOST = 3,</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>  WSI_TOKEN_CONNECTION = 4,</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  WSI_TOKEN_UPGRADE = 5,</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>  WSI_TOKEN_ORIGIN = 6,</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  WSI_TOKEN_DRAFT = 7,</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  WSI_TOKEN_CHALLENGE = 8,</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  WSI_TOKEN_EXTENSIONS = 9,</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  WSI_TOKEN_KEY1 = 10,</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>  WSI_TOKEN_KEY2 = 11,</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>  WSI_TOKEN_PROTOCOL = 12,</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  WSI_TOKEN_ACCEPT = 13,</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  WSI_TOKEN_NONCE = 14,</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  WSI_TOKEN_HTTP = 15,</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>  WSI_TOKEN_HTTP2_SETTINGS = 16,</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  WSI_TOKEN_HTTP_ACCEPT = 17,</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  WSI_TOKEN_HTTP_PRAGMA = 23,</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  WSI_TOKEN_HTTP_AUTHORIZATION = 25,</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  WSI_TOKEN_HTTP_COOKIE = 26,</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  WSI_TOKEN_HTTP_DATE = 29,</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  WSI_TOKEN_HTTP_RANGE = 30,</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>  WSI_TOKEN_HTTP_REFERER = 31,</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  WSI_TOKEN_KEY = 32,</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  WSI_TOKEN_VERSION = 33,</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  WSI_TOKEN_SWORIGIN = 34,</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span> </div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  WSI_TOKEN_HTTP_COLON_METHOD = 36,</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  WSI_TOKEN_HTTP_COLON_PATH = 37,</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  WSI_TOKEN_HTTP_COLON_SCHEME = 38,</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  WSI_TOKEN_HTTP_COLON_STATUS = 39,</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span> </div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  WSI_TOKEN_HTTP_AGE = 43,</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  WSI_TOKEN_HTTP_ALLOW = 44,</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>  WSI_TOKEN_HTTP_ETAG = 50,</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  WSI_TOKEN_HTTP_EXPECT = 51,</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>  WSI_TOKEN_HTTP_EXPIRES = 52,</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  WSI_TOKEN_HTTP_FROM = 53,</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>  WSI_TOKEN_HTTP_IF_MATCH = 54,</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>  WSI_TOKEN_HTTP_IF_RANGE = 55,</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>  WSI_TOKEN_HTTP_LINK = 58,</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  WSI_TOKEN_HTTP_LOCATION = 59,</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>  WSI_TOKEN_HTTP_REFRESH = 63,</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  WSI_TOKEN_HTTP_RETRY_AFTER = 64,</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>  WSI_TOKEN_HTTP_SERVER = 65,</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  WSI_TOKEN_HTTP_SET_COOKIE = 66,</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  WSI_TOKEN_HTTP_USER_AGENT = 69,</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  WSI_TOKEN_HTTP_VARY = 70,</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  WSI_TOKEN_HTTP_VIA = 71,</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span> </div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>  WSI_TOKEN_PATCH_URI = 73,</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>  WSI_TOKEN_PUT_URI = 74,</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>  WSI_TOKEN_DELETE_URI = 75,</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span> </div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  WSI_TOKEN_HTTP_URI_ARGS = 76,</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  WSI_TOKEN_PROXY = 77,</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  WSI_TOKEN_HTTP_X_REAL_IP = 78,</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  WSI_TOKEN_HTTP1_0 = 79,</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  WSI_TOKEN_X_FORWARDED_FOR = 80,</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span> </div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span> </div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  <span class="comment">/* use token storage to stash these internally, not for</span></div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span> <span class="comment"> * user use */</span></div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span> </div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  _WSI_TOKEN_CLIENT_PEER_ADDRESS,</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  _WSI_TOKEN_CLIENT_URI,</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  _WSI_TOKEN_CLIENT_HOST,</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  _WSI_TOKEN_CLIENT_ORIGIN,</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>  _WSI_TOKEN_CLIENT_METHOD,</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span> </div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  <span class="comment">/* always last real token index*/</span></div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  WSI_TOKEN_COUNT,</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span> </div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  <span class="comment">/* parser state additions, no storage associated */</span></div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  WSI_TOKEN_NAME_PART,</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  WSI_TOKEN_SKIPPING,</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  WSI_TOKEN_SKIPPING_SAW_CR,</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  WSI_PARSING_COMPLETE,</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>  WSI_INIT_TOKEN_MUXURL,</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span> };</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span> </div><div class="line"><a name="l02649"></a><span class="lineno"><a class="line" href="structlws__token__limits.html"> 2649</a></span> <span class="keyword">struct </span><a class="code" href="structlws__token__limits.html">lws_token_limits</a> {</div><div class="line"><a name="l02650"></a><span class="lineno"><a class="line" href="structlws__token__limits.html#a6ec712306cbf8585bce7a56758a3ceff"> 2650</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> token_limit[WSI_TOKEN_COUNT]; </div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span> };</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span> </div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span> <a class="code" href="group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b">lws_token_to_string</a>(<span class="keyword">enum</span> lws_token_indexes token);</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span> </div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> </div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span> <a class="code" href="group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8">lws_hdr_total_length</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> lws_token_indexes h);</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span> </div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span> <a class="code" href="group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e">lws_hdr_fragment_length</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> lws_token_indexes h, <span class="keywordtype">int</span> frag_idx);</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span> </div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span> <a class="code" href="group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77">lws_hdr_copy</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">char</span> *dest, <span class="keywordtype">int</span> len, <span class="keyword">enum</span> lws_token_indexes h);</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span> </div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span> <a class="code" href="group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9">lws_hdr_copy_fragment</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">char</span> *dest, <span class="keywordtype">int</span> len,</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>  <span class="keyword">enum</span> lws_token_indexes h, <span class="keywordtype">int</span> frag_idx);</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span> </div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span> <a class="code" href="group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2">lws_get_urlarg_by_name</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span> </div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span> </div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span> <a class="code" href="group__HTTP-headers-create.html#ga29b7d6d2ddfdbaff3d8b607e7e3151b6">lws_add_http_header_status</a>(<span class="keyword">struct</span> lws *wsi,</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> code, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p,</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span> <a class="code" href="group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8">lws_add_http_header_by_name</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *value, <span class="keywordtype">int</span> length,</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span> <a class="code" href="group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1">lws_add_http_header_by_token</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> lws_token_indexes token,</div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *value, <span class="keywordtype">int</span> length,</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span> <a class="code" href="group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf">lws_add_http_header_content_length</a>(<span class="keyword">struct</span> lws *wsi,</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> content_length,</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span> <a class="code" href="group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b">lws_finalize_http_header</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p,</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span> </div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span> </div><div class="line"><a name="l02847"></a><span class="lineno"><a class="line" href="group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae"> 2847</a></span> <span class="keyword">enum</span> <a class="code" href="group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae">lws_spa_fileupload_states</a> {</div><div class="line"><a name="l02848"></a><span class="lineno"><a class="line" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f"> 2848</a></span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a>,</div><div class="line"><a name="l02850"></a><span class="lineno"><a class="line" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7"> 2850</a></span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a>,</div><div class="line"><a name="l02852"></a><span class="lineno"><a class="line" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83"> 2852</a></span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span> };</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span> </div><div class="line"><a name="l02869"></a><span class="lineno"><a class="line" href="group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e"> 2869</a></span> <span class="keyword">typedef</span> int (*<a class="code" href="group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e">lws_spa_fileupload_cb</a>)(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len,</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>  <span class="keyword">enum</span> <a class="code" href="group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae">lws_spa_fileupload_states</a> state);</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span> </div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span> <span class="keyword">struct </span>lws_spa;</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span> </div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_spa *</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span> <a class="code" href="group__form-parsing.html#ga162f86762173a2bc8c28497941d74815">lws_spa_create</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *param_names,</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>  <span class="keywordtype">int</span> count_params, <span class="keywordtype">int</span> max_storage, <a class="code" href="group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e">lws_spa_fileupload_cb</a> opt_cb,</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>  <span class="keywordtype">void</span> *opt_data);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span> </div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span> <a class="code" href="group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2">lws_spa_process</a>(<span class="keyword">struct</span> lws_spa *spa, <span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span> </div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span> <a class="code" href="group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24">lws_spa_finalize</a>(<span class="keyword">struct</span> lws_spa *spa);</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span> </div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span> <a class="code" href="group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f">lws_spa_get_length</a>(<span class="keyword">struct</span> lws_spa *spa, <span class="keywordtype">int</span> n);</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span> </div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span> <a class="code" href="group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd">lws_spa_get_string</a>(<span class="keyword">struct</span> lws_spa *spa, <span class="keywordtype">int</span> n);</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span> </div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span> <a class="code" href="group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b">lws_spa_destroy</a>(<span class="keyword">struct</span> lws_spa *spa);</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span> </div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span> </div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span> <a class="code" href="group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7">lws_urlencode</a>(<span class="keywordtype">char</span> *escaped, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l02967"></a><span class="lineno"> 2967</span> </div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span> <span class="comment">/*</span></div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span> <span class="comment"> * URLDECODE 1 / 2</span></div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span> <span class="comment"> *</span></div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span> <span class="comment"> * This simple urldecode only operates until the first '\0' and requires the</span></div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span> <span class="comment"> * data to exist all at once</span></div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span> <span class="comment"> */</span></div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span> <a class="code" href="group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3">lws_urldecode</a>(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *escaped, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span> </div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span> <a class="code" href="group__http.html#gac8a4a71240857dc6b2ed70456b6923f4">lws_return_http_status</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> code,</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *html_body);</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span> </div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span> <a class="code" href="group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25">lws_http_redirect</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">int</span> code, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *loc, <span class="keywordtype">int</span> len,</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span> </div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span> <a class="code" href="group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a">lws_http_transaction_completed</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span> </div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span> </div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span> <a class="code" href="group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865">lws_sql_purify</a>(<span class="keywordtype">char</span> *escaped, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span> </div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span> <a class="code" href="group__pur.html#gab15187efcfa256b7c928562c182b92a3">lws_json_purify</a>(<span class="keywordtype">char</span> *escaped, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span> </div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span> </div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span> <span class="preprocessor">#ifdef LWS_USE_LIBEV</span></div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span> <span class="keyword">typedef</span> void (lws_ev_signal_cb_t)(EV_P_ <span class="keyword">struct </span>ev_signal *w, <span class="keywordtype">int</span> revents);</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span> </div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span> lws_ev_sigint_cfg(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> use_ev_sigint,</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>  lws_ev_signal_cb_t *cb);</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span> </div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span> lws_ev_initloop(<span class="keyword">struct</span> lws_context *context, <span class="keyword">struct</span> ev_loop *loop, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span> </div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span> lws_ev_sigint_cb(<span class="keyword">struct</span> ev_loop *loop, <span class="keyword">struct</span> ev_signal *watcher, <span class="keywordtype">int</span> revents);</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span> <span class="preprocessor">#endif </span><span class="comment">/* LWS_USE_LIBEV */</span><span class="preprocessor"></span></div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span> </div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span> </div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span> <span class="preprocessor">#ifdef LWS_USE_LIBUV</span></div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span> lws_uv_sigint_cfg(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> use_uv_sigint,</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>  uv_signal_cb cb);</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span> </div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span> lws_libuv_run(<span class="keyword">const</span> <span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span> </div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span> lws_libuv_stop(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span> </div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span> lws_uv_initloop(<span class="keyword">struct</span> lws_context *context, uv_loop_t *loop, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span> </div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span> LWS_VISIBLE LWS_EXTERN uv_loop_t *</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span> lws_uv_getloop(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span> </div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span> lws_uv_sigint_cb(uv_signal_t *watcher, <span class="keywordtype">int</span> signum);</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span> <span class="preprocessor">#endif </span><span class="comment">/* LWS_USE_LIBUV */</span><span class="preprocessor"></span></div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span> </div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span> </div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span> <span class="comment">/*</span></div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l03124"></a><span class="lineno"> 3124</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span> <span class="comment"> */</span></div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span> <span class="keyword">enum</span> pending_timeout {</div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>  NO_PENDING_TIMEOUT = 0,</div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,</div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,</div><div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,</div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,</div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>  PENDING_TIMEOUT_AWAITING_PING = 5,</div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>  PENDING_TIMEOUT_CLOSE_ACK = 6,</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,</div><div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,</div><div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>  PENDING_TIMEOUT_SSL_ACCEPT = 9,</div><div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>  PENDING_TIMEOUT_HTTP_CONTENT = 10,</div><div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,</div><div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,</div><div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,</div><div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>  PENDING_TIMEOUT_CGI = 14,</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span> </div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span> };</div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span> </div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span> <a class="code" href="group__timeout.html#gaced9f9237f6172fed9f730a2af51345a">lws_set_timeout</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> pending_timeout reason, <span class="keywordtype">int</span> secs);</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span> </div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span> <span class="preprocessor">#if !defined(LWS_SIZEOFPTR)</span></div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span> <span class="preprocessor">#define LWS_SIZEOFPTR (sizeof (void *))</span></div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span> <span class="preprocessor">#if !defined(u_int64_t)</span></div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span> <span class="preprocessor">#define u_int64_t unsigned long long</span></div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span> </div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span> <span class="preprocessor">#if defined(__x86_64__)</span></div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span> <span class="preprocessor">#define _LWS_PAD_SIZE 16 </span><span class="comment">/* Intel recommended for best performance */</span><span class="preprocessor"></span></div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span> <span class="preprocessor">#define _LWS_PAD_SIZE LWS_SIZEOFPTR </span><span class="comment">/* Size of a pointer on the target arch */</span><span class="preprocessor"></span></div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span> <span class="preprocessor">#define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \</span></div><div class="line"><a name="l03181"></a><span class="lineno"> 3181</span> <span class="preprocessor"> ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))</span></div><div class="line"><a name="l03182"></a><span class="lineno"> 3182</span> <span class="preprocessor">#define LWS_PRE _LWS_PAD(4 + 10)</span></div><div class="line"><a name="l03183"></a><span class="lineno"> 3183</span> <span class="comment">/* used prior to 1.7 and retained for backward compatibility */</span></div><div class="line"><a name="l03184"></a><span class="lineno"> 3184</span> <span class="preprocessor">#define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE</span></div><div class="line"><a name="l03185"></a><span class="lineno"> 3185</span> <span class="preprocessor">#define LWS_SEND_BUFFER_POST_PADDING 0</span></div><div class="line"><a name="l03186"></a><span class="lineno"> 3186</span> </div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span> <span class="comment">/*</span></div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l03189"></a><span class="lineno"> 3189</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span> <span class="comment"> */</span></div><div class="line"><a name="l03191"></a><span class="lineno"><a class="line" href="group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d"> 3191</a></span> <span class="keyword">enum</span> <a class="code" href="group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d">lws_write_protocol</a> {</div><div class="line"><a name="l03192"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db"> 3192</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a> = 0,</div><div class="line"><a name="l03196"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2"> 3196</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a> = 1,</div><div class="line"><a name="l03199"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826"> 3199</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a> = 2,</div><div class="line"><a name="l03202"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e"> 3202</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a> = 3,</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>  <span class="comment">/* LWS_WRITE_CLOSE is handled by lws_close_reason() */</span></div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  LWS_WRITE_PING = 5,</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>  LWS_WRITE_PONG = 6,</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span> </div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  <span class="comment">/* Same as write_http but we know this write ends the transaction */</span></div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>  LWS_WRITE_HTTP_FINAL = 7,</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span> </div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  <span class="comment">/* HTTP2 */</span></div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span> </div><div class="line"><a name="l03214"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917"> 3214</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a> = 8,</div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span> </div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  <span class="comment">/* flags */</span></div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span> </div><div class="line"><a name="l03225"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3"> 3225</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a> = 0x40,</div><div class="line"><a name="l03228"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce"> 3228</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a> = 0x80</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span> };</div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span> </div><div class="line"><a name="l03234"></a><span class="lineno"> 3234</span> </div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span> <a class="code" href="group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001">lws_write</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len,</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>  <span class="keyword">enum</span> <a class="code" href="group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d">lws_write_protocol</a> protocol);</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span> </div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span> <span class="comment">/* helper for case where buffer may be const */</span></div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span> <span class="preprocessor">#define lws_write_http(wsi, buf, len) \</span></div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span> <span class="preprocessor"> lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)</span></div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span> </div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span> </div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span> <a class="code" href="group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d">lws_callback_on_writable</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span> </div><div class="line"><a name="l03377"></a><span class="lineno"> 3377</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03378"></a><span class="lineno"> 3378</span> <a class="code" href="group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107">lws_callback_on_writable_all_protocol</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol);</div><div class="line"><a name="l03380"></a><span class="lineno"> 3380</span> </div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03395"></a><span class="lineno"> 3395</span> <a class="code" href="group__callback-when-writeable.html#ga8570860e191b62db264f2bac67354ea8">lws_callback_on_writable_all_protocol_vhost</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_vhost *vhost,</div><div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol);</div><div class="line"><a name="l03397"></a><span class="lineno"> 3397</span> </div><div class="line"><a name="l03410"></a><span class="lineno"> 3410</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span> <a class="code" href="group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70">lws_callback_all_protocol</a>(<span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol, <span class="keywordtype">int</span> reason);</div><div class="line"><a name="l03413"></a><span class="lineno"> 3413</span> </div><div class="line"><a name="l03426"></a><span class="lineno"> 3426</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03427"></a><span class="lineno"> 3427</span> <a class="code" href="group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053">lws_callback_all_protocol_vhost</a>(<span class="keyword">struct</span> lws_vhost *vh,</div><div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol, <span class="keywordtype">int</span> reason);</div><div class="line"><a name="l03429"></a><span class="lineno"> 3429</span> </div><div class="line"><a name="l03443"></a><span class="lineno"> 3443</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03444"></a><span class="lineno"> 3444</span> <a class="code" href="group__callback-when-writeable.html#ga60939cf0c073d933fde3d17f3591caf5">lws_callback_vhost_protocols</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">int</span> reason, <span class="keywordtype">void</span> *in, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03445"></a><span class="lineno"> 3445</span> </div><div class="line"><a name="l03446"></a><span class="lineno"> 3446</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03447"></a><span class="lineno"> 3447</span> lws_callback_http_dummy(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> <a class="code" href="group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7">lws_callback_reasons</a> reason,</div><div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>  <span class="keywordtype">void</span> *user, <span class="keywordtype">void</span> *in, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l03449"></a><span class="lineno"> 3449</span> </div><div class="line"><a name="l03457"></a><span class="lineno"> 3457</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03458"></a><span class="lineno"> 3458</span> <a class="code" href="group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba">lws_get_socket_fd</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03459"></a><span class="lineno"> 3459</span> </div><div class="line"><a name="l03481"></a><span class="lineno"> 3481</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">size_t</span></div><div class="line"><a name="l03482"></a><span class="lineno"> 3482</span> <a class="code" href="group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde">lws_get_peer_write_allowance</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03484"></a><span class="lineno"> 3484</span> </div><div class="line"><a name="l03495"></a><span class="lineno"> 3495</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03496"></a><span class="lineno"> 3496</span> <a class="code" href="libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e">lws_rx_flow_control</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">int</span> enable);</div><div class="line"><a name="l03497"></a><span class="lineno"> 3497</span> </div><div class="line"><a name="l03507"></a><span class="lineno"> 3507</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03508"></a><span class="lineno"> 3508</span> <a class="code" href="libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672">lws_rx_flow_allow_all_protocol</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol);</div><div class="line"><a name="l03510"></a><span class="lineno"> 3510</span> </div><div class="line"><a name="l03527"></a><span class="lineno"> 3527</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">size_t</span></div><div class="line"><a name="l03528"></a><span class="lineno"> 3528</span> <a class="code" href="libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536">lws_remaining_packet_payload</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03529"></a><span class="lineno"> 3529</span> </div><div class="line"><a name="l03530"></a><span class="lineno"> 3530</span> </div><div class="line"><a name="l03539"></a><span class="lineno"> 3539</span> </div><div class="line"><a name="l03552"></a><span class="lineno"> 3552</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws *</div><div class="line"><a name="l03553"></a><span class="lineno"> 3553</span> <a class="code" href="group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af">lws_adopt_socket</a>(<span class="keyword">struct</span> lws_context *context, lws_sockfd_type accept_fd);</div><div class="line"><a name="l03576"></a><span class="lineno"> 3576</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws *</div><div class="line"><a name="l03577"></a><span class="lineno"> 3577</span> <a class="code" href="group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b">lws_adopt_socket_readbuf</a>(<span class="keyword">struct</span> lws_context *context, lws_sockfd_type accept_fd,</div><div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *readbuf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l03580"></a><span class="lineno"> 3580</span> </div><div class="line"><a name="l03586"></a><span class="lineno"> 3586</span> </div><div class="line"><a name="l03597"></a><span class="lineno"> 3597</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03598"></a><span class="lineno"> 3598</span> <a class="code" href="group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4">lws_canonical_hostname</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l03599"></a><span class="lineno"> 3599</span> </div><div class="line"><a name="l03614"></a><span class="lineno"> 3614</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03615"></a><span class="lineno"> 3615</span> <a class="code" href="group__net.html#ga092e5f473b3347f03ffeef8a950080f3">lws_get_peer_addresses</a>(<span class="keyword">struct</span> lws *wsi, lws_sockfd_type fd, <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l03616"></a><span class="lineno"> 3616</span>  <span class="keywordtype">int</span> name_len, <span class="keywordtype">char</span> *rip, <span class="keywordtype">int</span> rip_len);</div><div class="line"><a name="l03617"></a><span class="lineno"> 3617</span> </div><div class="line"><a name="l03628"></a><span class="lineno"> 3628</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l03629"></a><span class="lineno"> 3629</span> <a class="code" href="group__net.html#gad01014fed09759741b6d23afccfdaacc">lws_get_peer_simple</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">char</span> *name, <span class="keywordtype">int</span> namelen);</div><div class="line"><a name="l03630"></a><span class="lineno"> 3630</span> <span class="preprocessor">#ifndef LWS_WITH_ESP8266</span></div><div class="line"><a name="l03631"></a><span class="lineno"> 3631</span> </div><div class="line"><a name="l03642"></a><span class="lineno"> 3642</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03643"></a><span class="lineno"> 3643</span> <a class="code" href="group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8">lws_interface_to_sa</a>(<span class="keywordtype">int</span> ipv6, <span class="keyword">const</span> <span class="keywordtype">char</span> *ifname, <span class="keyword">struct</span> sockaddr_in *addr,</div><div class="line"><a name="l03644"></a><span class="lineno"> 3644</span>  <span class="keywordtype">size_t</span> addrlen);</div><div class="line"><a name="l03646"></a><span class="lineno"> 3646</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03647"></a><span class="lineno"> 3647</span> </div><div class="line"><a name="l03653"></a><span class="lineno"> 3653</span> </div><div class="line"><a name="l03666"></a><span class="lineno"> 3666</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03667"></a><span class="lineno"> 3667</span> <a class="code" href="group__misc.html#ga9f37d0e357de2ab4170723fcdb665d21">lws_snprintf</a>(<span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> size, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div><div class="line"><a name="l03668"></a><span class="lineno"> 3668</span> </div><div class="line"><a name="l03680"></a><span class="lineno"> 3680</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03681"></a><span class="lineno"> 3681</span> <a class="code" href="group__misc.html#ga58f906c6be0ca80efd813f694569dd4a">lws_get_random</a>(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">void</span> *buf, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03689"></a><span class="lineno"> 3689</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03690"></a><span class="lineno"> 3690</span> <a class="code" href="group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af">lws_daemonize</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *_lock_path);</div><div class="line"><a name="l03696"></a><span class="lineno"> 3696</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03697"></a><span class="lineno"> 3697</span> <a class="code" href="group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0">lws_get_library_version</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l03698"></a><span class="lineno"> 3698</span> </div><div class="line"><a name="l03705"></a><span class="lineno"> 3705</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> *</div><div class="line"><a name="l03706"></a><span class="lineno"> 3706</span> <a class="code" href="group__misc.html#gaa194584fff9698f3b280658f770ccd0f">lws_wsi_user</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03707"></a><span class="lineno"> 3707</span> </div><div class="line"><a name="l03719"></a><span class="lineno"> 3719</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03720"></a><span class="lineno"> 3720</span> <a class="code" href="group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa">lws_parse_uri</a>(<span class="keywordtype">char</span> *p, <span class="keyword">const</span> <span class="keywordtype">char</span> **prot, <span class="keyword">const</span> <span class="keywordtype">char</span> **ads, <span class="keywordtype">int</span> *port,</div><div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> **path);</div><div class="line"><a name="l03722"></a><span class="lineno"> 3722</span> </div><div class="line"><a name="l03726"></a><span class="lineno"> 3726</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span></div><div class="line"><a name="l03727"></a><span class="lineno"> 3727</span> <a class="code" href="group__misc.html#ga33bf2635033710b25f931b57ed663e1e">lws_now_secs</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l03728"></a><span class="lineno"> 3728</span> </div><div class="line"><a name="l03738"></a><span class="lineno"> 3738</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_context * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03739"></a><span class="lineno"> 3739</span> <a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03740"></a><span class="lineno"> 3740</span> </div><div class="line"><a name="l03750"></a><span class="lineno"> 3750</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03751"></a><span class="lineno"> 3751</span> <a class="code" href="group__misc.html#ga629f48268fd1856b54b11172991b97d9">lws_get_count_threads</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l03752"></a><span class="lineno"> 3752</span> </div><div class="line"><a name="l03760"></a><span class="lineno"> 3760</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03761"></a><span class="lineno"> 3761</span> <a class="code" href="group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899">lws_get_parent</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03762"></a><span class="lineno"> 3762</span> </div><div class="line"><a name="l03769"></a><span class="lineno"> 3769</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03770"></a><span class="lineno"> 3770</span> <a class="code" href="group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234">lws_get_child</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03771"></a><span class="lineno"> 3771</span> </div><div class="line"><a name="l03772"></a><span class="lineno"> 3772</span> </div><div class="line"><a name="l03773"></a><span class="lineno"> 3773</span> <span class="comment">/*</span></div><div class="line"><a name="l03774"></a><span class="lineno"> 3774</span> <span class="comment"> * \deprecated DEPRECATED Note: this is not normally needed as a user api.</span></div><div class="line"><a name="l03775"></a><span class="lineno"> 3775</span> <span class="comment"> * It's provided in case it is</span></div><div class="line"><a name="l03776"></a><span class="lineno"> 3776</span> <span class="comment"> * useful when integrating with other app poll loop service code.</span></div><div class="line"><a name="l03777"></a><span class="lineno"> 3777</span> <span class="comment"> */</span></div><div class="line"><a name="l03778"></a><span class="lineno"> 3778</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03779"></a><span class="lineno"> 3779</span> lws_read(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l03780"></a><span class="lineno"> 3780</span> </div><div class="line"><a name="l03788"></a><span class="lineno"> 3788</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03789"></a><span class="lineno"> 3789</span> <a class="code" href="group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b">lws_set_allocator</a>(<span class="keywordtype">void</span> *(*realloc)(<span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> size));</div><div class="line"><a name="l03791"></a><span class="lineno"> 3791</span> </div><div class="line"><a name="l03797"></a><span class="lineno"> 3797</span> </div><div class="line"><a name="l03804"></a><span class="lineno"> 3804</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03805"></a><span class="lineno"> 3805</span> <a class="code" href="group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421">lws_send_pipe_choked</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03806"></a><span class="lineno"> 3806</span> </div><div class="line"><a name="l03811"></a><span class="lineno"> 3811</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03812"></a><span class="lineno"> 3812</span> <a class="code" href="group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37">lws_is_final_fragment</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03813"></a><span class="lineno"> 3813</span> </div><div class="line"><a name="l03818"></a><span class="lineno"> 3818</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span></div><div class="line"><a name="l03819"></a><span class="lineno"> 3819</span> <a class="code" href="group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2">lws_get_reserved_bits</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03820"></a><span class="lineno"> 3820</span> </div><div class="line"><a name="l03837"></a><span class="lineno"> 3837</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03838"></a><span class="lineno"> 3838</span> <a class="code" href="group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85">lws_partial_buffered</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03839"></a><span class="lineno"> 3839</span> </div><div class="line"><a name="l03849"></a><span class="lineno"> 3849</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03850"></a><span class="lineno"> 3850</span> <a class="code" href="group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd">lws_frame_is_binary</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03851"></a><span class="lineno"> 3851</span> </div><div class="line"><a name="l03860"></a><span class="lineno"> 3860</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03861"></a><span class="lineno"> 3861</span> <a class="code" href="group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa">lws_is_ssl</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03866"></a><span class="lineno"> 3866</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03867"></a><span class="lineno"> 3867</span> <a class="code" href="group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1">lws_is_cgi</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03869"></a><span class="lineno"> 3869</span> </div><div class="line"><a name="l03870"></a><span class="lineno"> 3870</span> </div><div class="line"><a name="l03876"></a><span class="lineno"> 3876</span> <span class="preprocessor">#ifdef LWS_SHA1_USE_OPENSSL_NAME</span></div><div class="line"><a name="l03878"></a><span class="lineno"> 3878</span> <span class="preprocessor">#define lws_SHA1 SHA1</span></div><div class="line"><a name="l03879"></a><span class="lineno"> 3879</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l03880"></a><span class="lineno"> 3880</span> </div><div class="line"><a name="l03889"></a><span class="lineno"> 3889</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l03890"></a><span class="lineno"> 3890</span> <a class="code" href="group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5">lws_SHA1</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *d, <span class="keywordtype">size_t</span> n, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *md);</div><div class="line"><a name="l03891"></a><span class="lineno"> 3891</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03892"></a><span class="lineno"> 3892</span> </div><div class="line"><a name="l03902"></a><span class="lineno"> 3902</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03903"></a><span class="lineno"> 3903</span> <a class="code" href="group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575">lws_b64_encode_string</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">int</span> in_len, <span class="keywordtype">char</span> *out, <span class="keywordtype">int</span> out_size);</div><div class="line"><a name="l03913"></a><span class="lineno"> 3913</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03914"></a><span class="lineno"> 3914</span> <a class="code" href="group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d">lws_b64_decode_string</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">char</span> *out, <span class="keywordtype">int</span> out_size);</div><div class="line"><a name="l03916"></a><span class="lineno"> 3916</span> </div><div class="line"><a name="l03917"></a><span class="lineno"> 3917</span> </div><div class="line"><a name="l03927"></a><span class="lineno"> 3927</span> <span class="preprocessor">#ifdef LWS_WITH_CGI</span></div><div class="line"><a name="l03928"></a><span class="lineno"> 3928</span> <span class="keyword">enum</span> lws_enum_stdinouterr {</div><div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>  LWS_STDIN = 0,</div><div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>  LWS_STDOUT = 1,</div><div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>  LWS_STDERR = 2,</div><div class="line"><a name="l03932"></a><span class="lineno"> 3932</span> };</div><div class="line"><a name="l03933"></a><span class="lineno"> 3933</span> </div><div class="line"><a name="l03934"></a><span class="lineno"> 3934</span> <span class="keyword">enum</span> lws_cgi_hdr_state {</div><div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>  LCHS_HEADER,</div><div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>  LCHS_CR1,</div><div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>  LCHS_LF1,</div><div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>  LCHS_CR2,</div><div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>  LCHS_LF2,</div><div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>  LHCS_PAYLOAD,</div><div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>  LCHS_SINGLE_0A,</div><div class="line"><a name="l03942"></a><span class="lineno"> 3942</span> };</div><div class="line"><a name="l03943"></a><span class="lineno"> 3943</span> </div><div class="line"><a name="l03944"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html"> 3944</a></span> <span class="keyword">struct </span><a class="code" href="structlws__cgi__args.html">lws_cgi_args</a> {</div><div class="line"><a name="l03945"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#a4ccc1058e7e914a26eef31ab2ad46aa1"> 3945</a></span>  <span class="keyword">struct </span>lws **<a class="code" href="structlws__cgi__args.html#a4ccc1058e7e914a26eef31ab2ad46aa1">stdwsi</a>; </div><div class="line"><a name="l03946"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#adeee220b29aeacc34632c38e50f0f5a5"> 3946</a></span>  <span class="keyword">enum</span> lws_enum_stdinouterr ch; </div><div class="line"><a name="l03947"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#a8ac842084688c02f3f94694ef700d8f7"> 3947</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__cgi__args.html#a8ac842084688c02f3f94694ef700d8f7">data</a>; </div><div class="line"><a name="l03948"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#a741c11b9aa05997ec45a3400d7fb7739"> 3948</a></span>  <span class="keyword">enum</span> lws_cgi_hdr_state hdr_state; </div><div class="line"><a name="l03949"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#a36e5c256433c187bd0eaa9c1ca667f1d"> 3949</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__cgi__args.html#a36e5c256433c187bd0eaa9c1ca667f1d">len</a>; </div><div class="line"><a name="l03950"></a><span class="lineno"> 3950</span> };</div><div class="line"><a name="l03951"></a><span class="lineno"> 3951</span> </div><div class="line"><a name="l03952"></a><span class="lineno"> 3952</span> </div><div class="line"><a name="l03962"></a><span class="lineno"> 3962</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03963"></a><span class="lineno"> 3963</span> <a class="code" href="libwebsockets_8h.html#af52923473c59e643a974d65e12290831">lws_cgi</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *exec_array,</div><div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>  <span class="keywordtype">int</span> script_uri_path_len, <span class="keywordtype">int</span> timeout_secs,</div><div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *mp_cgienv);</div><div class="line"><a name="l03966"></a><span class="lineno"> 3966</span> </div><div class="line"><a name="l03972"></a><span class="lineno"> 3972</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03973"></a><span class="lineno"> 3973</span> <a class="code" href="libwebsockets_8h.html#a5326d3402af8429a166dd991dc65c4a2">lws_cgi_write_split_stdout_headers</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03974"></a><span class="lineno"> 3974</span> </div><div class="line"><a name="l03980"></a><span class="lineno"> 3980</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03981"></a><span class="lineno"> 3981</span> <a class="code" href="libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4">lws_cgi_kill</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03983"></a><span class="lineno"> 3983</span> </div><div class="line"><a name="l03985"></a><span class="lineno"> 3985</span> </div><div class="line"><a name="l04002"></a><span class="lineno"> 4002</span> </div><div class="line"><a name="l04008"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html"> 4008</a></span> <span class="keyword">struct </span><a class="code" href="structlws__plat__file__ops.html">lws_plat_file_ops</a> {</div><div class="line"><a name="l04009"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#ad37a97abc68d0af967cef874f4d8df32"> 4009</a></span>  lws_filefd_type (*open)(<span class="keyword">struct </span>lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename,</div><div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *filelen, <span class="keywordtype">int</span> flags);</div><div class="line"><a name="l04014"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#a034ec96f2fbaf52b4aa3e82d20795f7b"> 4014</a></span>  int (*close)(<span class="keyword">struct </span>lws *wsi, lws_filefd_type fd);</div><div class="line"><a name="l04016"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#abfcda19b003dcc13c61ff9e2bb4ff869"> 4016</a></span>  <span class="keywordtype">unsigned</span> long (*seek_cur)(<span class="keyword">struct </span>lws *wsi, lws_filefd_type fd,</div><div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>  <span class="keywordtype">long</span> offset_from_cur_pos);</div><div class="line"><a name="l04019"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#a01f483807a9862736b17ba9ed5110c40"> 4019</a></span>  int (*read)(<span class="keyword">struct </span>lws *wsi, lws_filefd_type fd, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *amount,</div><div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> len);</div><div class="line"><a name="l04022"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793"> 4022</a></span>  int (*write)(<span class="keyword">struct </span>lws *wsi, lws_filefd_type fd, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *amount,</div><div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> len);</div><div class="line"><a name="l04026"></a><span class="lineno"> 4026</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l04027"></a><span class="lineno"> 4027</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l04028"></a><span class="lineno"> 4028</span> };</div><div class="line"><a name="l04029"></a><span class="lineno"> 4029</span> </div><div class="line"><a name="l04035"></a><span class="lineno"> 4035</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span><a class="code" href="structlws__plat__file__ops.html">lws_plat_file_ops</a> * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l04036"></a><span class="lineno"> 4036</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l04037"></a><span class="lineno"> 4037</span> </div><div class="line"><a name="l04046"></a><span class="lineno"> 4046</span> <span class="keyword">static</span> LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l04047"></a><span class="lineno"> 4047</span> lws_plat_file_open(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename,</div><div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *filelen, <span class="keywordtype">int</span> flags)</div><div class="line"><a name="l04049"></a><span class="lineno"> 4049</span> {</div><div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#ad37a97abc68d0af967cef874f4d8df32">open</a>(wsi, filename,</div><div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>  filelen, flags);</div><div class="line"><a name="l04052"></a><span class="lineno"> 4052</span> }</div><div class="line"><a name="l04053"></a><span class="lineno"> 4053</span> </div><div class="line"><a name="l04060"></a><span class="lineno"> 4060</span> <span class="keyword">static</span> LWS_INLINE <span class="keywordtype">int</span></div><div class="line"><a name="l04061"></a><span class="lineno"> 4061</span> lws_plat_file_close(<span class="keyword">struct</span> lws *wsi, lws_filefd_type fd)</div><div class="line"><a name="l04062"></a><span class="lineno"> 4062</span> {</div><div class="line"><a name="l04063"></a><span class="lineno"> 4063</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#a034ec96f2fbaf52b4aa3e82d20795f7b">close</a>(wsi, fd);</div><div class="line"><a name="l04064"></a><span class="lineno"> 4064</span> }</div><div class="line"><a name="l04065"></a><span class="lineno"> 4065</span> </div><div class="line"><a name="l04073"></a><span class="lineno"> 4073</span> <span class="keyword">static</span> LWS_INLINE <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span></div><div class="line"><a name="l04074"></a><span class="lineno"> 4074</span> lws_plat_file_seek_cur(<span class="keyword">struct</span> lws *wsi, lws_filefd_type fd, <span class="keywordtype">long</span> offset)</div><div class="line"><a name="l04075"></a><span class="lineno"> 4075</span> {</div><div class="line"><a name="l04076"></a><span class="lineno"> 4076</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#abfcda19b003dcc13c61ff9e2bb4ff869">seek_cur</a>(wsi, fd, offset);</div><div class="line"><a name="l04077"></a><span class="lineno"> 4077</span> }</div><div class="line"><a name="l04087"></a><span class="lineno"> 4087</span> <span class="keyword">static</span> LWS_INLINE <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l04088"></a><span class="lineno"> 4088</span> lws_plat_file_read(<span class="keyword">struct</span> lws *wsi, lws_filefd_type fd, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *amount,</div><div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> len)</div><div class="line"><a name="l04090"></a><span class="lineno"> 4090</span> {</div><div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#a01f483807a9862736b17ba9ed5110c40">read</a>(wsi, fd, amount, buf,</div><div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>  len);</div><div class="line"><a name="l04093"></a><span class="lineno"> 4093</span> }</div><div class="line"><a name="l04103"></a><span class="lineno"> 4103</span> <span class="keyword">static</span> LWS_INLINE <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l04104"></a><span class="lineno"> 4104</span> lws_plat_file_write(<span class="keyword">struct</span> lws *wsi, lws_filefd_type fd, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *amount,</div><div class="line"><a name="l04105"></a><span class="lineno"> 4105</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> len)</div><div class="line"><a name="l04106"></a><span class="lineno"> 4106</span> {</div><div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793">write</a>(wsi, fd, amount, buf,</div><div class="line"><a name="l04108"></a><span class="lineno"> 4108</span>  len);</div><div class="line"><a name="l04109"></a><span class="lineno"> 4109</span> }</div><div class="line"><a name="l04111"></a><span class="lineno"> 4111</span> </div><div class="line"><a name="l04143"></a><span class="lineno"> 4143</span> <span class="preprocessor">#ifdef LWS_WITH_SMTP</span></div><div class="line"><a name="l04144"></a><span class="lineno"> 4144</span> </div><div class="line"><a name="l04146"></a><span class="lineno"><a class="line" href="group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0"> 4146</a></span> <span class="keyword">enum</span> <a class="code" href="group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0">lwsgs_smtp_states</a> {</div><div class="line"><a name="l04147"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c"> 4147</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a>, </div><div class="line"><a name="l04148"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933"> 4148</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a>, </div><div class="line"><a name="l04149"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d"> 4149</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a>, </div><div class="line"><a name="l04150"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad"> 4150</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a>, </div><div class="line"><a name="l04151"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab"> 4151</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a>, </div><div class="line"><a name="l04152"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83"> 4152</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a>, </div><div class="line"><a name="l04153"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14"> 4153</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a>, </div><div class="line"><a name="l04154"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69"> 4154</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a>, </div><div class="line"><a name="l04155"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5"> 4155</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a>, </div><div class="line"><a name="l04156"></a><span class="lineno"> 4156</span> };</div><div class="line"><a name="l04157"></a><span class="lineno"> 4157</span> </div><div class="line"><a name="l04159"></a><span class="lineno"><a class="line" href="structlws__email.html"> 4159</a></span> <span class="keyword">struct </span><a class="code" href="structlws__email.html">lws_email</a> {</div><div class="line"><a name="l04160"></a><span class="lineno"><a class="line" href="structlws__email.html#add1341456045382c183f4c763bdea6bc"> 4160</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__email.html#add1341456045382c183f4c763bdea6bc">data</a>;</div><div class="line"><a name="l04162"></a><span class="lineno"><a class="line" href="structlws__email.html#ab5fbf121195a8e67509c78a42cfbe168"> 4162</a></span>  uv_loop_t *<a class="code" href="structlws__email.html#ab5fbf121195a8e67509c78a42cfbe168">loop</a>;</div><div class="line"><a name="l04165"></a><span class="lineno"><a class="line" href="structlws__email.html#a472ae23fc9fca6599e5c512bc21458d2"> 4165</a></span>  <span class="keywordtype">char</span> email_smtp_ip[32]; </div><div class="line"><a name="l04166"></a><span class="lineno"><a class="line" href="structlws__email.html#a939e5d7ee0339a16de73bde71ab4d4d9"> 4166</a></span>  <span class="keywordtype">char</span> email_helo[32]; </div><div class="line"><a name="l04167"></a><span class="lineno"><a class="line" href="structlws__email.html#af7f0ae934347d81071f63a963301f9e2"> 4167</a></span>  <span class="keywordtype">char</span> email_from[100]; </div><div class="line"><a name="l04168"></a><span class="lineno"><a class="line" href="structlws__email.html#a6453a8b92b3de6d2c2101af3edce685e"> 4168</a></span>  <span class="keywordtype">char</span> email_to[100]; </div><div class="line"><a name="l04170"></a><span class="lineno"><a class="line" href="structlws__email.html#a7bbc1964889c984b3da723c86a210e05"> 4170</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__email.html#a7bbc1964889c984b3da723c86a210e05">max_content_size</a>;</div><div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>  <span class="comment">/* Fill all the callbacks before init */</span></div><div class="line"><a name="l04174"></a><span class="lineno"> 4174</span> </div><div class="line"><a name="l04175"></a><span class="lineno"><a class="line" href="structlws__email.html#ad8dc60353ee246d84dd59ec0591e9719"> 4175</a></span>  int (*on_next)(<span class="keyword">struct </span><a class="code" href="structlws__email.html">lws_email</a> *email);</div><div class="line"><a name="l04180"></a><span class="lineno"><a class="line" href="structlws__email.html#a39ef6263d58eb40cca417c8697b227d8"> 4180</a></span>  int (*<a class="code" href="structlws__email.html#a39ef6263d58eb40cca417c8697b227d8">on_sent</a>)(<span class="keyword">struct </span><a class="code" href="structlws__email.html">lws_email</a> *email);</div><div class="line"><a name="l04185"></a><span class="lineno"><a class="line" href="structlws__email.html#a2aff78c8e04db243052aa91b4d87e987"> 4185</a></span>  int (*<a class="code" href="structlws__email.html#a2aff78c8e04db243052aa91b4d87e987">on_get_body</a>)(<span class="keyword">struct </span><a class="code" href="structlws__email.html">lws_email</a> *email, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>  <span class="comment">/* private things */</span></div><div class="line"><a name="l04192"></a><span class="lineno"><a class="line" href="structlws__email.html#a77723e2f2b940b1c879ef5e1cd88c2be"> 4192</a></span>  uv_timer_t <a class="code" href="structlws__email.html#a77723e2f2b940b1c879ef5e1cd88c2be">timeout_email</a>; </div><div class="line"><a name="l04193"></a><span class="lineno"><a class="line" href="structlws__email.html#ac6115d3cbef2e8bac62cc00895bf5fd3"> 4193</a></span>  <span class="keyword">enum</span> <a class="code" href="group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0">lwsgs_smtp_states</a> <a class="code" href="structlws__email.html#ac6115d3cbef2e8bac62cc00895bf5fd3">estate</a>; </div><div class="line"><a name="l04194"></a><span class="lineno"><a class="line" href="structlws__email.html#a5f53d4c5a1e34b0dcaa8787e2eabb1b3"> 4194</a></span>  uv_connect_t <a class="code" href="structlws__email.html#a5f53d4c5a1e34b0dcaa8787e2eabb1b3">email_connect_req</a>; </div><div class="line"><a name="l04195"></a><span class="lineno"><a class="line" href="structlws__email.html#a01f31934166dc6d01e8a375012f8ad1e"> 4195</a></span>  uv_tcp_t <a class="code" href="structlws__email.html#a01f31934166dc6d01e8a375012f8ad1e">email_client</a>; </div><div class="line"><a name="l04196"></a><span class="lineno"><a class="line" href="structlws__email.html#a9747ca85597788c2d118d287df47b7c1"> 4196</a></span>  time_t <a class="code" href="structlws__email.html#a9747ca85597788c2d118d287df47b7c1">email_connect_started</a>; </div><div class="line"><a name="l04197"></a><span class="lineno"><a class="line" href="structlws__email.html#a8f34ec0643a817be67ef4276aeb7fb82"> 4197</a></span>  <span class="keywordtype">char</span> <a class="code" href="structlws__email.html#a8f34ec0643a817be67ef4276aeb7fb82">email_buf</a>[256]; </div><div class="line"><a name="l04198"></a><span class="lineno"><a class="line" href="structlws__email.html#a6fff03c5a5d369a2aa3cab0c897b1bed"> 4198</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structlws__email.html#a6fff03c5a5d369a2aa3cab0c897b1bed">content</a>; </div><div class="line"><a name="l04199"></a><span class="lineno"> 4199</span> };</div><div class="line"><a name="l04200"></a><span class="lineno"> 4200</span> </div><div class="line"><a name="l04210"></a><span class="lineno"> 4210</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l04211"></a><span class="lineno"> 4211</span> <a class="code" href="group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29">lws_email_init</a>(<span class="keyword">struct</span> <a class="code" href="structlws__email.html">lws_email</a> *email, uv_loop_t *<a class="code" href="structlws__email.html#ab5fbf121195a8e67509c78a42cfbe168">loop</a>, <span class="keywordtype">int</span> max_content);</div><div class="line"><a name="l04212"></a><span class="lineno"> 4212</span> </div><div class="line"><a name="l04221"></a><span class="lineno"> 4221</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l04222"></a><span class="lineno"> 4222</span> <a class="code" href="group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb">lws_email_check</a>(<span class="keyword">struct</span> <a class="code" href="structlws__email.html">lws_email</a> *email);</div><div class="line"><a name="l04230"></a><span class="lineno"> 4230</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l04231"></a><span class="lineno"> 4231</span> <a class="code" href="group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2">lws_email_destroy</a>(<span class="keyword">struct</span> <a class="code" href="structlws__email.html">lws_email</a> *email);</div><div class="line"><a name="l04232"></a><span class="lineno"> 4232</span> </div><div class="line"><a name="l04233"></a><span class="lineno"> 4233</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l04234"></a><span class="lineno"> 4234</span> </div><div class="line"><a name="l04235"></a><span class="lineno"> 4235</span> </div><div class="line"><a name="l04236"></a><span class="lineno"> 4236</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l04237"></a><span class="lineno"> 4237</span> }</div><div class="line"><a name="l04238"></a><span class="lineno"> 4238</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l04239"></a><span class="lineno"> 4239</span> </div><div class="line"><a name="l04240"></a><span class="lineno"> 4240</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="group__form-parsing_html_gaaa482f07dad3f04b391cccf0a814e13b"><div class="ttname"><a href="group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b">lws_spa_destroy</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_spa_destroy(struct lws_spa *spa)</div></div> +<a href="libwebsockets_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * libwebsockets - small server side websockets and web server implementation</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * This library is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * modify it under the terms of the GNU Lesser General Public</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * License as published by the Free Software Foundation:</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * version 2.1 of the License.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * This library is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * Lesser General Public License for more details.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * You should have received a copy of the GNU Lesser General Public</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * License along with this library; if not, write to the Free Software</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * MA 02110-1301 USA</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> */</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <cstddef></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <cstdarg></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifdef MBED_OPERATORS</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "mbed-drivers/mbed.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "sal-iface-eth/EthernetInterface.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "sockets/TCPListener.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "sal-stack-lwip/lwipv4_init.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span>{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">using namespace </span><a class="code" href="namespacembed_1_1Sockets_1_1v0.html">mbed::Sockets::v0</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">struct </span>sockaddr_in;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">struct </span>lws;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classlws__conn.html"> 44</a></span> <span class="keyword">class </span><a class="code" href="classlws__conn.html">lws_conn</a> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classlws__conn.html">lws_conn</a>():</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ts(NULL),</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wsi(NULL),</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  writeable(1),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  awaiting_on_writeable(0)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">void</span> set_wsi(<span class="keyword">struct</span> lws *_wsi) { wsi = _wsi; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">int</span> actual_onRX(Socket *s);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> onRX(Socket *s);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> onError(Socket *s, socket_error_t err);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> onDisconnect(TCPStream *s);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> onSent(Socket *s, uint16_t len);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span> serialized_writeable(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  TCPStream *ts;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">struct </span>lws *wsi;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">char</span> writeable;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">char</span> awaiting_on_writeable;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classlws__conn__listener.html"> 72</a></span> <span class="keyword">class </span><a class="code" href="classlws__conn__listener.html">lws_conn_listener</a> : <a class="code" href="classlws__conn.html">lws_conn</a> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classlws__conn__listener.html">lws_conn_listener</a>():</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  srv(SOCKET_STACK_LWIP_IPV4)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  srv.setOnError(TCPStream::ErrorHandler_t(<span class="keyword">this</span>,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  &<a class="code" href="classlws__conn__listener.html#a271ac4f8ad5770b3bc96cce5b265b72c">lws_conn_listener::onError</a>));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">void</span> start(<span class="keyword">const</span> uint16_t port); </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">void</span> onRX(Socket *s); </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> onError(Socket *s, socket_error_t err); </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> onIncoming(TCPListener *s, <span class="keywordtype">void</span> *impl); </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> onDisconnect(TCPStream *s); </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  TCPListener srv;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> };</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#include <stdarg.h></span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#if defined(MBED_OPERATORS) || defined(LWS_WITH_ESP8266)</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">struct </span>sockaddr_in;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#define LWS_POSIX 0</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#define LWS_POSIX 1</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#include "lws_config.h"</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#if defined(WIN32) || defined(_WIN32)</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#ifndef WIN32_LEAN_AND_MEAN</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#define WIN32_LEAN_AND_MEAN</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#include <winsock2.h></span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#include <ws2tcpip.h></span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#include <basetsd.h></span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#ifndef _WIN32_WCE</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#define _O_RDONLY 0x0000</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#define O_RDONLY _O_RDONLY</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// Visual studio older than 2015 and WIN_CE has only _stricmp</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#define strcasecmp _stricmp</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#elif !defined(__MINGW32__)</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#define strcasecmp stricmp</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#define getdtablesize() 30000</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define LWS_INLINE __inline</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#define LWS_VISIBLE</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#define LWS_WARN_UNUSED_RESULT</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#define LWS_WARN_DEPRECATED</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#ifdef LWS_DLL</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#ifdef LWS_INTERNAL</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#define LWS_EXTERN extern __declspec(dllexport)</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#define LWS_EXTERN extern __declspec(dllimport)</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">#define LWS_EXTERN</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#define LWS_INVALID_FILE INVALID_HANDLE_VALUE</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">#define LWS_O_RDONLY _O_RDONLY</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#if !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER < 1900) </span><span class="comment">/* Visual Studio 2015 already defines this in <stdio.h> */</span><span class="preprocessor"></span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#define lws_snprintf _snprintf</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#ifndef __func__</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#define __func__ __FUNCTION__</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor">#else </span><span class="comment">/* NOT WIN32 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#if defined(__NetBSD__) || defined(__FreeBSD__)</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#include <netinet/in.h></span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#define LWS_INLINE inline</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define LWS_O_RDONLY O_RDONLY</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#if !defined(MBED_OPERATORS) && !defined(LWS_WITH_ESP8266)</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#include <poll.h></span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#include <netdb.h></span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#define LWS_INVALID_FILE -1</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#define getdtablesize() (20)</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#define LWS_INVALID_FILE NULL</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#if defined(__GNUC__)</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">/* warn_unused_result attribute only supported by GCC 3.4 or later */</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#define LWS_WARN_UNUSED_RESULT</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#define LWS_VISIBLE __attribute__((visibility("default")))</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#define LWS_WARN_DEPRECATED __attribute__ ((deprecated))</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#define LWS_VISIBLE</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor">#define LWS_WARN_UNUSED_RESULT</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor">#define LWS_WARN_DEPRECATED</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor">#if defined(__ANDROID__)</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor">#define getdtablesize() sysconf(_SC_OPEN_MAX)</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor">#ifdef LWS_USE_LIBEV</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#include <ev.h></span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor">#endif </span><span class="comment">/* LWS_USE_LIBEV */</span><span class="preprocessor"></span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#ifdef LWS_USE_LIBUV</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="preprocessor">#include <uv.h></span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor">#ifdef LWS_HAVE_UV_VERSION_H</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor">#include <uv-version.h></span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor">#endif </span><span class="comment">/* LWS_USE_LIBUV */</span><span class="preprocessor"></span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor">#ifndef LWS_EXTERN</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor">#define LWS_EXTERN extern</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor">#ifdef _WIN32</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor">#define random rand</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor">#include <sys/time.h></span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor">#ifdef LWS_OPENSSL_SUPPORT</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor">#ifdef USE_WOLFSSL</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor">#ifdef USE_OLD_CYASSL</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#include <cyassl/openssl/ssl.h></span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor">#include <cyassl/error-ssl.h></span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#include <wolfssl/openssl/ssl.h></span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="preprocessor">#include <wolfssl/error-ssl.h></span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor">#endif </span><span class="comment">/* not USE_OLD_CYASSL */</span><span class="preprocessor"></span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor">#if defined(LWS_USE_POLARSSL)</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor">#include <polarssl/ssl.h></span></div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="structlws__polarssl__context.html"> 236</a></span> <span class="keyword">struct </span><a class="code" href="structlws__polarssl__context.html">lws_polarssl_context</a> {</div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="structlws__polarssl__context.html#a1872f2ea24878d807ae20ca8513674af"> 237</a></span>  x509_crt <a class="code" href="structlws__polarssl__context.html#a1872f2ea24878d807ae20ca8513674af">ca</a>; </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="structlws__polarssl__context.html#ae7e11c9129ff71c7ee71b3b2e320ff27"> 238</a></span>  x509_crt <a class="code" href="structlws__polarssl__context.html#ae7e11c9129ff71c7ee71b3b2e320ff27">certificate</a>; </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="structlws__polarssl__context.html#a919c33af37aab170f828d954de1fa270"> 239</a></span>  rsa_context <a class="code" href="structlws__polarssl__context.html#a919c33af37aab170f828d954de1fa270">key</a>; </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> };</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlws__polarssl__context.html">lws_polarssl_context</a> <a class="code" href="structlws__polarssl__context.html">SSL_CTX</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="keyword">typedef</span> ssl_context SSL;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#if defined(LWS_USE_MBEDTLS)</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor">#include <mbedtls/ssl.h></span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor">#include <openssl/ssl.h></span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor">#include <openssl/err.h></span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="preprocessor">#endif </span><span class="comment">/* not USE_MBEDTLS */</span><span class="preprocessor"></span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor">#endif </span><span class="comment">/* not USE_POLARSSL */</span><span class="preprocessor"></span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor">#endif </span><span class="comment">/* not USE_WOLFSSL */</span><span class="preprocessor"></span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor">#define CONTEXT_PORT_NO_LISTEN -1</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keyword">enum</span> lws_log_levels {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  LLL_ERR = 1 << 0,</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  LLL_WARN = 1 << 1,</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  LLL_NOTICE = 1 << 2,</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  LLL_INFO = 1 << 3,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  LLL_DEBUG = 1 << 4,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  LLL_PARSER = 1 << 5,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  LLL_HEADER = 1 << 6,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  LLL_EXT = 1 << 7,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  LLL_CLIENT = 1 << 8,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  LLL_LATENCY = 1 << 9,</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  LLL_COUNT = 10 <span class="comment">/* set to count of valid flags */</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> };</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> _lws_log(<span class="keywordtype">int</span> filter, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> _lws_logv(<span class="keywordtype">int</span> filter, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, va_list vl);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <a class="code" href="group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd">lwsl_timestamp</a>(<span class="keywordtype">int</span> level, <span class="keywordtype">char</span> *p, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor">#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="preprocessor">#if !defined(LWS_WITH_NO_LOGS)</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment">/* notice, warn and log are always compiled in */</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor">#define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor">#define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="comment">/*</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="comment"> * weaker logging can be deselected at configure time using --disable-debug</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="comment"> * that gets rid of the overhead of checking while keeping _warn and _err</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="comment"> * active</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="comment"> */</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor">#if defined(LWS_WITH_ESP8266)</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor">#undef _DEBUG</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor">#if defined(LWS_WITH_NO_LOGS)</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="comment">/* notice, warn and log are always compiled in */</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="comment">//#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor">#define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="preprocessor">#define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor">#define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="preprocessor">#define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="preprocessor">#define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="preprocessor">#define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor">#define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="preprocessor">#define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> <a class="code" href="group__log.html#ga898b1f03872ad019f507d4e35bbefa90">lwsl_hexdump</a>(<span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor">#else </span><span class="comment">/* no debug */</span><span class="preprocessor"></span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor">#if defined(LWS_WITH_NO_LOGS)</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment">//#define lwsl_err(...) do {} while(0)</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor">#define lwsl_warn(...) do {} while(0)</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="preprocessor">#define lwsl_notice(...) do {} while(0)</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="preprocessor">#define lwsl_info(...) do {} while(0)</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor">#define lwsl_debug(...) do {} while(0)</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="preprocessor">#define lwsl_parser(...) do {} while(0)</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="preprocessor">#define lwsl_header(...) do {} while(0)</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor">#define lwsl_ext(...) do {} while(0)</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor">#define lwsl_client(...) do {} while(0)</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor">#define lwsl_latency(...) do {} while(0)</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor">#define lwsl_hexdump(a, b)</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <a class="code" href="group__log.html#ga244647f9e1bf0097ccdde66d74f41e26">lws_set_log_level</a>(<span class="keywordtype">int</span> level,</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordtype">void</span> (*log_emit_function)(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span> *line));</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <a class="code" href="group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c">lwsl_emit_syslog</a>(<span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span> *line);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor">#ifndef lws_container_of</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="preprocessor">#define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="keyword">struct </span>lws;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor">#ifndef ARRAY_SIZE</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor">#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="comment">/* api change list for user code to test against */</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="preprocessor">#define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="comment">/* the struct lws_protocols has the id field present */</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="preprocessor">#define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="comment">/* you can call lws_get_peer_write_allowance */</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="preprocessor">#define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="comment">/* extra parameter introduced in 917f43ab821 */</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="preprocessor">#define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="comment">/* File operations stuff exists */</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor">#define LWS_FEATURE_FOPS</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor">#if defined(_WIN32)</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="keyword">typedef</span> SOCKET lws_sockfd_type;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="keyword">typedef</span> HANDLE lws_filefd_type;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor">#define lws_sockfd_valid(sfd) (!!sfd)</span></div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="structlws__pollfd.html"> 416</a></span> <span class="keyword">struct </span><a class="code" href="structlws__pollfd.html">lws_pollfd</a> {</div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="structlws__pollfd.html#a714cf5ca90b41926117fdde9fa6542be"> 417</a></span>  lws_sockfd_type <a class="code" href="structlws__pollfd.html#a714cf5ca90b41926117fdde9fa6542be">fd</a>; </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="structlws__pollfd.html#ac393db6fc7fb6ed8fe7ca20936908ee9"> 418</a></span>  SHORT <a class="code" href="structlws__pollfd.html#ac393db6fc7fb6ed8fe7ca20936908ee9">events</a>; </div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="structlws__pollfd.html#ae7cecfe7511c59d4a3a44f876d030932"> 419</a></span>  SHORT <a class="code" href="structlws__pollfd.html#ae7cecfe7511c59d4a3a44f876d030932">revents</a>; </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> };</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor">#define LWS_POLLHUP (FD_CLOSE)</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="preprocessor">#define LWS_POLLIN (FD_READ | FD_ACCEPT)</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor">#define LWS_POLLOUT (FD_WRITE)</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="preprocessor">#if defined(MBED_OPERATORS)</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="comment">/* it's a class lws_conn * */</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> * lws_sockfd_type;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> * lws_filefd_type;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="preprocessor">#define lws_sockfd_valid(sfd) (!!sfd)</span></div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="structpollfd.html"> 431</a></span> <span class="keyword">struct </span><a class="code" href="structpollfd.html">pollfd</a> {</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="structpollfd.html#af084f089bdece61d177f85782d6673d0"> 432</a></span>  lws_sockfd_type <a class="code" href="structpollfd.html#af084f089bdece61d177f85782d6673d0">fd</a>; </div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="structpollfd.html#ac9b2f2c5b1f9a7487eb57e67cd4960ef"> 433</a></span>  <span class="keywordtype">short</span> <a class="code" href="structpollfd.html#ac9b2f2c5b1f9a7487eb57e67cd4960ef">events</a>; </div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="structpollfd.html#aafb457d11cac415faf0e1e2b825118c2"> 434</a></span>  <span class="keywordtype">short</span> <a class="code" href="structpollfd.html#aafb457d11cac415faf0e1e2b825118c2">revents</a>; </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> };</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor">#define POLLIN 0x0001</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#define POLLPRI 0x0002</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="preprocessor">#define POLLOUT 0x0004</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="preprocessor">#define POLLERR 0x0008</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor">#define POLLHUP 0x0010</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="preprocessor">#define POLLNVAL 0x0020</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="keyword">struct </span>lws;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="keywordtype">void</span> * mbed3_create_tcp_stream_socket(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="keywordtype">void</span> mbed3_delete_tcp_stream_socket(<span class="keywordtype">void</span> *sockfd);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="keywordtype">void</span> mbed3_tcp_stream_bind(<span class="keywordtype">void</span> *sock, <span class="keywordtype">int</span> port, <span class="keyword">struct</span> lws *);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="keywordtype">void</span> mbed3_tcp_stream_accept(<span class="keywordtype">void</span> *sock, <span class="keyword">struct</span> lws *);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="preprocessor">#if defined(LWS_WITH_ESP8266)</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor">#include <user_interface.h></span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="preprocessor">#include <espconn.h></span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="keyword">typedef</span> <span class="keyword">struct </span>espconn * lws_sockfd_type;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> * lws_filefd_type;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="preprocessor">#define lws_sockfd_valid(sfd) (!!sfd)</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="keyword">struct </span><a class="code" href="structpollfd.html">pollfd</a> {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  lws_sockfd_type fd; </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordtype">short</span> events; </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordtype">short</span> revents; </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> };</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="preprocessor">#define POLLIN 0x0001</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="preprocessor">#define POLLPRI 0x0002</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="preprocessor">#define POLLOUT 0x0004</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="preprocessor">#define POLLERR 0x0008</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="preprocessor">#define POLLHUP 0x0010</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="preprocessor">#define POLLNVAL 0x0020</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="keyword">struct </span>lws_vhost;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> lws_sockfd_type esp8266_create_tcp_listen_socket(<span class="keyword">struct</span> lws_vhost *vh);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="keywordtype">void</span> esp8266_tcp_stream_accept(lws_sockfd_type fd, <span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="preprocessor">#include <os_type.h></span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="preprocessor">#include <osapi.h></span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="preprocessor">#include "ets_sys.h"</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keywordtype">int</span> ets_snprintf(<span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> size, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="preprocessor">#define snprintf ets_snprintf</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="keyword">typedef</span> os_timer_t uv_timer_t;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> uv_cb_t(uv_timer_t *);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="keywordtype">void</span> os_timer_disarm(<span class="keywordtype">void</span> *);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="keywordtype">void</span> os_timer_setfn(os_timer_t *, os_timer_func_t *, <span class="keywordtype">void</span> *);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="keywordtype">void</span> ets_timer_arm_new(os_timer_t *, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment">//void os_timer_arm(os_timer_t *, int, int);</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="preprocessor">#define UV_VERSION_MAJOR 1</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor">#define lws_uv_getloop(a, b) (NULL)</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> uv_timer_init(<span class="keywordtype">void</span> *l, uv_timer_t *t)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  (void)l;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  memset(t, 0, <span class="keyword">sizeof</span>(*t));</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  os_timer_disarm(t);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> uv_timer_start(uv_timer_t *t, uv_cb_t *cb, <span class="keywordtype">int</span> first, <span class="keywordtype">int</span> rep)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  os_timer_setfn(t, (os_timer_func_t *)cb, t);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">/* ms, repeat */</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  os_timer_arm(t, first, !!rep);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> uv_timer_stop(uv_timer_t *t)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  os_timer_disarm(t);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="keyword">typedef</span> <span class="keywordtype">int</span> lws_sockfd_type;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="keyword">typedef</span> <span class="keywordtype">int</span> lws_filefd_type;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="preprocessor">#define lws_sockfd_valid(sfd) (sfd >= 0)</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor">#define lws_pollfd pollfd</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="preprocessor">#define LWS_POLLHUP (POLLHUP|POLLERR)</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor">#define LWS_POLLIN (POLLIN)</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="preprocessor">#define LWS_POLLOUT (POLLOUT)</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> </div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="structlws__pollargs.html"> 530</a></span> <span class="keyword">struct </span><a class="code" href="structlws__pollargs.html">lws_pollargs</a> {</div><div class="line"><a name="l00531"></a><span class="lineno"><a class="line" href="structlws__pollargs.html#af14a48ef4e78128aef9a76902b104a81"> 531</a></span>  lws_sockfd_type <a class="code" href="structlws__pollargs.html#af14a48ef4e78128aef9a76902b104a81">fd</a>; </div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="structlws__pollargs.html#a00bbffea9f55de342783e32d71ce1de6"> 532</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__pollargs.html#a00bbffea9f55de342783e32d71ce1de6">events</a>; </div><div class="line"><a name="l00533"></a><span class="lineno"><a class="line" href="structlws__pollargs.html#a437fec0de5cf264371e1ab5a401e86d8"> 533</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__pollargs.html#a437fec0de5cf264371e1ab5a401e86d8">prev_events</a>; </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> };</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="keyword">struct </span><a class="code" href="structlws__tokens.html">lws_tokens</a>;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="keyword">struct </span><a class="code" href="structlws__token__limits.html">lws_token_limits</a>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="comment">/*</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="comment"> */</span></div><div class="line"><a name="l00553"></a><span class="lineno"><a class="line" href="group__wsclose.html#gae399c571df32ba532c0ca67da9284985"> 553</a></span> <span class="keyword">enum</span> <a class="code" href="group__wsclose.html#gae399c571df32ba532c0ca67da9284985">lws_close_status</a> {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  LWS_CLOSE_STATUS_NOSTATUS = 0,</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4"> 555</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4">LWS_CLOSE_STATUS_NORMAL</a> = 1000,</div><div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218"> 558</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218">LWS_CLOSE_STATUS_GOINGAWAY</a> = 1001,</div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98"> 561</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98">LWS_CLOSE_STATUS_PROTOCOL_ERR</a> = 1002,</div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276"> 564</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276">LWS_CLOSE_STATUS_UNACCEPTABLE_OPCODE</a> = 1003,</div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2"> 569</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2">LWS_CLOSE_STATUS_RESERVED</a> = 1004,</div><div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044"> 571</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044">LWS_CLOSE_STATUS_NO_STATUS</a> = 1005,</div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c"> 576</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c">LWS_CLOSE_STATUS_ABNORMAL_CLOSE</a> = 1006,</div><div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050"> 582</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050">LWS_CLOSE_STATUS_INVALID_PAYLOAD</a> = 1007,</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5"> 587</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5">LWS_CLOSE_STATUS_POLICY_VIOLATION</a> = 1008,</div><div class="line"><a name="l00593"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8"> 593</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8">LWS_CLOSE_STATUS_MESSAGE_TOO_LARGE</a> = 1009,</div><div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e"> 597</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e">LWS_CLOSE_STATUS_EXTENSION_REQUIRED</a> = 1010,</div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350"> 605</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350">LWS_CLOSE_STATUS_UNEXPECTED_CONDITION</a> = 1011,</div><div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390"> 609</a></span>  <a class="code" href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390">LWS_CLOSE_STATUS_TLS_FAILURE</a> = 1015,</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> };</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <a class="code" href="group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262">lws_close_reason</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> <a class="code" href="group__wsclose.html#gae399c571df32ba532c0ca67da9284985">lws_close_status</a> status,</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> </div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="keyword">struct </span>lws;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="keyword">struct </span>lws_context;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="comment">/* needed even with extensions disabled for create context */</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="comment">/*</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="comment"> */</span></div><div class="line"><a name="l00663"></a><span class="lineno"><a class="line" href="group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7"> 663</a></span> <span class="keyword">enum</span> <a class="code" href="group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7">lws_callback_reasons</a> {</div><div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439"> 664</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439">LWS_CALLBACK_ESTABLISHED</a> = 0,</div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8"> 668</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8">LWS_CALLBACK_CLIENT_CONNECTION_ERROR</a> = 1,</div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2"> 712</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2">LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH</a> = 2,</div><div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604"> 719</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604">LWS_CALLBACK_CLIENT_ESTABLISHED</a> = 3,</div><div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8"> 722</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8">LWS_CALLBACK_CLOSED</a> = 4,</div><div class="line"><a name="l00724"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba"> 724</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba">LWS_CALLBACK_CLOSED_HTTP</a> = 5,</div><div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c"> 726</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c">LWS_CALLBACK_RECEIVE</a> = 6,</div><div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738"> 730</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738">LWS_CALLBACK_RECEIVE_PONG</a> = 7,</div><div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1"> 732</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1">LWS_CALLBACK_CLIENT_RECEIVE</a> = 8,</div><div class="line"><a name="l00735"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9"> 735</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9">LWS_CALLBACK_CLIENT_RECEIVE_PONG</a> = 9,</div><div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514"> 737</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514">LWS_CALLBACK_CLIENT_WRITEABLE</a> = 10,</div><div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc"> 745</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc">LWS_CALLBACK_SERVER_WRITEABLE</a> = 11,</div><div class="line"><a name="l00747"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e"> 747</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e">LWS_CALLBACK_HTTP</a> = 12,</div><div class="line"><a name="l00761"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae"> 761</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae">LWS_CALLBACK_HTTP_BODY</a> = 13,</div><div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804"> 764</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804">LWS_CALLBACK_HTTP_BODY_COMPLETION</a> = 14,</div><div class="line"><a name="l00766"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587"> 766</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587">LWS_CALLBACK_HTTP_FILE_COMPLETION</a> = 15,</div><div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09"> 768</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09">LWS_CALLBACK_HTTP_WRITEABLE</a> = 16,</div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6"> 770</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6">LWS_CALLBACK_FILTER_NETWORK_CONNECTION</a> = 17,</div><div class="line"><a name="l00781"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c"> 781</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c">LWS_CALLBACK_FILTER_HTTP_CONNECTION</a> = 18,</div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3"> 793</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3">LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED</a> = 19,</div><div class="line"><a name="l00801"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d"> 801</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d">LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION</a> = 20,</div><div class="line"><a name="l00813"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c"> 813</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c">LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS</a> = 21,</div><div class="line"><a name="l00820"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493"> 820</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493">LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS</a> = 22,</div><div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac"> 826</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac">LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION</a> = 23,</div><div class="line"><a name="l00844"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f"> 844</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f">LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER</a> = 24,</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e"> 868</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e">LWS_CALLBACK_CONFIRM_EXTENSION_OKAY</a> = 25,</div><div class="line"><a name="l00879"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46"> 879</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46">LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED</a> = 26,</div><div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49"> 888</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49">LWS_CALLBACK_PROTOCOL_INIT</a> = 27,</div><div class="line"><a name="l00891"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa"> 891</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa">LWS_CALLBACK_PROTOCOL_DESTROY</a> = 28,</div><div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01"> 896</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01">LWS_CALLBACK_WSI_CREATE</a> = 29,</div><div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e"> 898</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e">LWS_CALLBACK_WSI_DESTROY</a> = 30,</div><div class="line"><a name="l00900"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34"> 900</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34">LWS_CALLBACK_GET_THREAD_ID</a> = 31,</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="comment">/* external poll() management support */</span></div><div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412"> 906</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412">LWS_CALLBACK_ADD_POLL_FD</a> = 32,</div><div class="line"><a name="l00922"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768"> 922</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768">LWS_CALLBACK_DEL_POLL_FD</a> = 33,</div><div class="line"><a name="l00928"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e"> 928</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e">LWS_CALLBACK_CHANGE_MODE_POLL_FD</a> = 34,</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428"> 936</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428">LWS_CALLBACK_LOCK_POLL</a> = 35,</div><div class="line"><a name="l00948"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79"> 948</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79">LWS_CALLBACK_UNLOCK_POLL</a> = 36,</div><div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b"> 951</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b">LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY</a> = 37,</div><div class="line"><a name="l00959"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51"> 959</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51">LWS_CALLBACK_WS_PEER_INITIATED_CLOSE</a> = 38,</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  LWS_CALLBACK_CGI = 40,</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  LWS_CALLBACK_CGI_TERMINATED = 41,</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  LWS_CALLBACK_CGI_STDIN_DATA = 42,</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  LWS_CALLBACK_PROCESS_HTML = 52,</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  LWS_CALLBACK_ADD_HEADERS = 53,</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  LWS_CALLBACK_SESSION_INFO = 54,</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  LWS_CALLBACK_GS_EVENT = 55,</div><div class="line"><a name="l01004"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a"> 1004</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a">LWS_CALLBACK_HTTP_PMO</a> = 56,</div><div class="line"><a name="l01009"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6"> 1009</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6">LWS_CALLBACK_CLIENT_HTTP_WRITEABLE</a> = 57,</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a"> 1021</a></span>  <a class="code" href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a">LWS_CALLBACK_USER</a> = 1000,</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> };</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> </div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="keyword">typedef</span> <span class="keywordtype">int</span></div><div class="line"><a name="l01043"></a><span class="lineno"><a class="line" href="group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f"> 1043</a></span> <a class="code" href="group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f">lws_callback_function</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> <a class="code" href="group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7">lws_callback_reasons</a> reason,</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordtype">void</span> *user, <span class="keywordtype">void</span> *in, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> </div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="comment">/*</span></div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="comment"> */</span></div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="keyword">enum</span> lws_extension_callback_reasons {</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  LWS_EXT_CB_CONSTRUCT = 4,</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  LWS_EXT_CB_DESTROY = 8,</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  LWS_EXT_CB_PACKET_TX_PRESEND = 12,</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  LWS_EXT_CB_FLUSH_PENDING_TX = 15,</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  LWS_EXT_CB_1HZ = 18,</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  LWS_EXT_CB_IS_WRITEABLE = 20,</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  LWS_EXT_CB_PAYLOAD_TX = 21,</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  LWS_EXT_CB_PAYLOAD_RX = 22,</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  LWS_EXT_CB_OPTION_DEFAULT = 23,</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  LWS_EXT_CB_OPTION_SET = 24,</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  LWS_EXT_CB_OPTION_CONFIRM = 25,</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  LWS_EXT_CB_NAMED_OPTION_SET = 26,</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> </div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> };</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> </div><div class="line"><a name="l01095"></a><span class="lineno"><a class="line" href="group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e"> 1095</a></span> <span class="keyword">enum</span> <a class="code" href="group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e">lws_ext_options_types</a> {</div><div class="line"><a name="l01096"></a><span class="lineno"><a class="line" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c"> 1096</a></span>  <a class="code" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c">EXTARG_NONE</a>, </div><div class="line"><a name="l01097"></a><span class="lineno"><a class="line" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e"> 1097</a></span>  <a class="code" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e">EXTARG_DEC</a>, </div><div class="line"><a name="l01098"></a><span class="lineno"><a class="line" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880"> 1098</a></span>  <a class="code" href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880">EXTARG_OPT_DEC</a> </div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> };</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div><div class="line"><a name="l01108"></a><span class="lineno"><a class="line" href="structlws__ext__options.html"> 1108</a></span> <span class="keyword">struct </span><a class="code" href="structlws__ext__options.html">lws_ext_options</a> {</div><div class="line"><a name="l01109"></a><span class="lineno"><a class="line" href="structlws__ext__options.html#a1769e4a9805bbdda227821e9578ddc7e"> 1109</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__ext__options.html#a1769e4a9805bbdda227821e9578ddc7e">name</a>; </div><div class="line"><a name="l01110"></a><span class="lineno"><a class="line" href="structlws__ext__options.html#a7c4dbd62dbeba63a9d50d2306bd1cc61"> 1110</a></span>  <span class="keyword">enum</span> <a class="code" href="group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e">lws_ext_options_types</a> type; </div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> };</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> </div><div class="line"><a name="l01117"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html"> 1117</a></span> <span class="keyword">struct </span><a class="code" href="structlws__ext__option__arg.html">lws_ext_option_arg</a> {</div><div class="line"><a name="l01118"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html#a0a320c56b79271b8f059eeaad9423ac9"> 1118</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__ext__option__arg.html#a0a320c56b79271b8f059eeaad9423ac9">option_name</a>; </div><div class="line"><a name="l01119"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f"> 1119</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f">option_index</a>; </div><div class="line"><a name="l01120"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html#a0b1f7b30c3ceaf5f1bf9d105c24568d1"> 1120</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__ext__option__arg.html#a0b1f7b30c3ceaf5f1bf9d105c24568d1">start</a>; </div><div class="line"><a name="l01121"></a><span class="lineno"><a class="line" href="structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5"> 1121</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5">len</a>; </div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> };</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> </div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> <span class="keyword">typedef</span> <span class="keywordtype">int</span></div><div class="line"><a name="l01185"></a><span class="lineno"><a class="line" href="group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0"> 1185</a></span> <a class="code" href="group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0">lws_extension_callback_function</a>(<span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__extension.html">lws_extension</a> *ext, <span class="keyword">struct</span> lws *wsi,</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keyword">enum</span> lws_extension_callback_reasons reason,</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keywordtype">void</span> *user, <span class="keywordtype">void</span> *in, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div><div class="line"><a name="l01191"></a><span class="lineno"><a class="line" href="structlws__extension.html"> 1191</a></span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> {</div><div class="line"><a name="l01192"></a><span class="lineno"><a class="line" href="structlws__extension.html#a1e5018c883d85176f5c2152176843f9e"> 1192</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__extension.html#a1e5018c883d85176f5c2152176843f9e">name</a>; </div><div class="line"><a name="l01193"></a><span class="lineno"><a class="line" href="structlws__extension.html#afa21f3b3c8c2c9212a276c52b680c3af"> 1193</a></span>  <a class="code" href="group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0">lws_extension_callback_function</a> *<a class="code" href="structlws__extension.html#afa21f3b3c8c2c9212a276c52b680c3af">callback</a>; </div><div class="line"><a name="l01194"></a><span class="lineno"><a class="line" href="structlws__extension.html#a36b06c213aedb02bf9a402651751855b"> 1194</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__extension.html#a36b06c213aedb02bf9a402651751855b">client_offer</a>; </div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> };</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> </div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> <a class="code" href="group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9">lws_set_extension_option</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *ext_name,</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *opt_name, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt_val);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> </div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> <span class="preprocessor">#ifndef LWS_NO_EXTENSIONS</span></div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> <span class="comment">/* lws_get_internal_extensions() - DEPRECATED</span></div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> <span class="comment"> *</span></div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> <span class="comment"> * \Deprecated There is no longer a set internal extensions table. The table is provided</span></div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> <span class="comment"> * by user code along with application-specific settings. See the test</span></div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> <span class="comment"> * client and server for how to do.</span></div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> <span class="comment"> */</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="keyword">static</span> LWS_INLINE LWS_WARN_DEPRECATED <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> *</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> lws_get_internal_extensions(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> NULL; }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> </div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> <a class="code" href="group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b">lws_ext_parse_options</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__extension.html">lws_extension</a> *ext, <span class="keyword">struct</span> lws *wsi,</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <span class="keywordtype">void</span> *ext_user, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__ext__options.html">lws_ext_options</a> *opts,</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *o, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> </div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> LWS_EXTERN</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> <span class="keywordtype">int</span> <a class="code" href="group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e">lws_extension_callback_pm_deflate</a>(</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keyword">struct</span> lws_context *context, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__extension.html">lws_extension</a> *ext,</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  <span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> lws_extension_callback_reasons reason,</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="keywordtype">void</span> *user, <span class="keywordtype">void</span> *in, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> </div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> <span class="comment">/*</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> <span class="comment"> * The internal exts are part of the public abi</span></div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> <span class="comment"> * If we add more extensions, publish the callback here ------v</span></div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> <span class="comment"> */</span></div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> </div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> </div><div class="line"><a name="l01281"></a><span class="lineno"><a class="line" href="structlws__protocols.html"> 1281</a></span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> {</div><div class="line"><a name="l01282"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624"> 1282</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624">name</a>;</div><div class="line"><a name="l01285"></a><span class="lineno"><a class="line" href="structlws__protocols.html#acabf94c1a9bfe7be0387fbb0e0c56b2d"> 1285</a></span>  <a class="code" href="group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f">lws_callback_function</a> *<a class="code" href="structlws__protocols.html#acabf94c1a9bfe7be0387fbb0e0c56b2d">callback</a>;</div><div class="line"><a name="l01289"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a9bbd85f591ffb4259711cb5acbb05bea"> 1289</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structlws__protocols.html#a9bbd85f591ffb4259711cb5acbb05bea">per_session_data_size</a>;</div><div class="line"><a name="l01294"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5"> 1294</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5">rx_buffer_size</a>;</div><div class="line"><a name="l01303"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a6b632018590c2b1bbe43fbab6d5e6fac"> 1303</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__protocols.html#a6b632018590c2b1bbe43fbab6d5e6fac">id</a>;</div><div class="line"><a name="l01310"></a><span class="lineno"><a class="line" href="structlws__protocols.html#a3cbd903ad076736ae934a54cae36580e"> 1310</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__protocols.html#a3cbd903ad076736ae934a54cae36580e">user</a>; </div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> };</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> </div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> <span class="keyword">struct </span>lws_vhost;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> </div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> <a class="code" href="group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d">lws_vhost_name_to_protocol</a>(<span class="keyword">struct</span> lws_vhost *vh, <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624">name</a>);</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> </div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> <a class="code" href="group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112">lws_get_protocol</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> </div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> <a class="code" href="group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030">lws_protocol_get</a>(<span class="keyword">struct</span> lws *wsi) LWS_WARN_DEPRECATED;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> </div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> *</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> <a class="code" href="group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1">lws_protocol_vh_priv_zalloc</a>(<span class="keyword">struct</span> lws_vhost *vhost, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *prot,</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <span class="keywordtype">int</span> size);</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> </div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> *</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> <a class="code" href="group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129">lws_protocol_vh_priv_get</a>(<span class="keyword">struct</span> lws_vhost *vhost, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *prot);</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> </div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> <a class="code" href="group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43">lws_finalize_startup</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> </div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> <span class="preprocessor">#ifdef LWS_WITH_PLUGINS</span></div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> </div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> <span class="comment">/* PLUGINS implies LIBUV */</span></div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> </div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <span class="preprocessor">#define LWS_PLUGIN_API_MAGIC 180</span></div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span> </div><div class="line"><a name="l01390"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html"> 1390</a></span> <span class="keyword">struct </span><a class="code" href="structlws__plugin__capability.html">lws_plugin_capability</a> {</div><div class="line"><a name="l01391"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#a523c7cde6f15bba345f56493dcf6b32a"> 1391</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__plugin__capability.html#a523c7cde6f15bba345f56493dcf6b32a">api_magic</a>; </div><div class="line"><a name="l01392"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#a6a4d9d01e770f378ddadc77b37522033"> 1392</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *<a class="code" href="structlws__plugin__capability.html#a6a4d9d01e770f378ddadc77b37522033">protocols</a>; </div><div class="line"><a name="l01393"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f"> 1393</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f">count_protocols</a>; </div><div class="line"><a name="l01394"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#a7936f0eb93d79dea76b903d0f8a5f623"> 1394</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> *<a class="code" href="structlws__plugin__capability.html#a7936f0eb93d79dea76b903d0f8a5f623">extensions</a>; </div><div class="line"><a name="l01395"></a><span class="lineno"><a class="line" href="structlws__plugin__capability.html#abcf51db969522fdda9aaf902e65739d3"> 1395</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__plugin__capability.html#abcf51db969522fdda9aaf902e65739d3">count_extensions</a>; </div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> };</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> </div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="keyword">typedef</span> int (*lws_plugin_init_func)(<span class="keyword">struct </span>lws_context *,</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <span class="keyword">struct </span><a class="code" href="structlws__plugin__capability.html">lws_plugin_capability</a> *);</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> <span class="keyword">typedef</span> int (*lws_plugin_destroy_func)(<span class="keyword">struct </span>lws_context *);</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> </div><div class="line"><a name="l01403"></a><span class="lineno"><a class="line" href="structlws__plugin.html"> 1403</a></span> <span class="keyword">struct </span><a class="code" href="structlws__plugin.html">lws_plugin</a> {</div><div class="line"><a name="l01404"></a><span class="lineno"><a class="line" href="structlws__plugin.html#a65dffd68fd267ce17b988790d1d35f22"> 1404</a></span>  <span class="keyword">struct </span><a class="code" href="structlws__plugin.html">lws_plugin</a> *<a class="code" href="structlws__plugin.html#a65dffd68fd267ce17b988790d1d35f22">list</a>; </div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="preprocessor">#if (UV_VERSION_MAJOR > 0)</span></div><div class="line"><a name="l01406"></a><span class="lineno"><a class="line" href="structlws__plugin.html#af9e1042dc1de5b9d202c2f5fd1834330"> 1406</a></span>  uv_lib_t <a class="code" href="structlws__plugin.html#af9e1042dc1de5b9d202c2f5fd1834330">lib</a>; </div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01408"></a><span class="lineno"><a class="line" href="structlws__plugin.html#a4ef37a43653715b6c69cbf8a7be747f4"> 1408</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__plugin.html#a4ef37a43653715b6c69cbf8a7be747f4">l</a>; </div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01410"></a><span class="lineno"><a class="line" href="structlws__plugin.html#af4ac8fcb79e10e0c2d960e1804d98105"> 1410</a></span>  <span class="keywordtype">char</span> <a class="code" href="structlws__plugin.html#af4ac8fcb79e10e0c2d960e1804d98105">name</a>[64]; </div><div class="line"><a name="l01411"></a><span class="lineno"><a class="line" href="structlws__plugin.html#ac7f1fdfe8cf8a21f8ee9720c21934a3f"> 1411</a></span>  <span class="keyword">struct </span><a class="code" href="structlws__plugin__capability.html">lws_plugin_capability</a> caps; </div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> };</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span> </div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span> </div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span> </div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> </div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> <span class="preprocessor">#define LWSGS_EMAIL_CONTENT_SIZE 16384</span></div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> </div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> <span class="comment">/* SHA-1 binary and hexified versions */</span></div><div class="line"><a name="l01434"></a><span class="lineno"><a class="line" href="structlwsgw__hash__bin.html#ac92f50d9471058525d110597a4e0de6b"> 1434</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> bin[20]; } <a class="code" href="structlwsgw__hash__bin.html">lwsgw_hash_bin</a>;</div><div class="line"><a name="l01436"></a><span class="lineno"><a class="line" href="structlwsgw__hash.html#a29435f5cf78747d4257695b0f141d164"> 1436</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="keywordtype">char</span> <span class="keywordtype">id</span>[41]; } <a class="code" href="structlwsgw__hash.html">lwsgw_hash</a>;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> </div><div class="line"><a name="l01439"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1"> 1439</a></span> <span class="keyword">enum</span> <a class="code" href="group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1">lwsgs_auth_bits</a> {</div><div class="line"><a name="l01440"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57"> 1440</a></span>  <a class="code" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57">LWSGS_AUTH_LOGGED_IN</a> = 1, </div><div class="line"><a name="l01441"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf"> 1441</a></span>  <a class="code" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf">LWSGS_AUTH_ADMIN</a> = 2, </div><div class="line"><a name="l01442"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887"> 1442</a></span>  <a class="code" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887">LWSGS_AUTH_VERIFIED</a> = 4, </div><div class="line"><a name="l01443"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a"> 1443</a></span>  <a class="code" href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a">LWSGS_AUTH_FORGOT_FLOW</a> = 8, </div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> };</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> </div><div class="line"><a name="l01447"></a><span class="lineno"><a class="line" href="structlws__session__info.html"> 1447</a></span> <span class="keyword">struct </span><a class="code" href="structlws__session__info.html">lws_session_info</a> {</div><div class="line"><a name="l01448"></a><span class="lineno"><a class="line" href="structlws__session__info.html#a3d57a70b6e7181d95a8bec429b1a7697"> 1448</a></span>  <span class="keywordtype">char</span> username[32]; </div><div class="line"><a name="l01449"></a><span class="lineno"><a class="line" href="structlws__session__info.html#a94b813cfc6b0da4b182659de30038ad3"> 1449</a></span>  <span class="keywordtype">char</span> email[100]; </div><div class="line"><a name="l01450"></a><span class="lineno"><a class="line" href="structlws__session__info.html#a53eed02325e8717a53297391e3e98fac"> 1450</a></span>  <span class="keywordtype">char</span> ip[72]; </div><div class="line"><a name="l01451"></a><span class="lineno"><a class="line" href="structlws__session__info.html#afb924864b70f40372920688a5c1c895e"> 1451</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__session__info.html#afb924864b70f40372920688a5c1c895e">mask</a>; </div><div class="line"><a name="l01453"></a><span class="lineno"><a class="line" href="structlws__session__info.html#a4353b5dd19400b2b15edfd7cee1e4cd5"> 1453</a></span>  <span class="keywordtype">char</span> session[42]; </div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span> };</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> </div><div class="line"><a name="l01457"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e"> 1457</a></span> <span class="keyword">enum</span> <a class="code" href="group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e">lws_gs_event</a> {</div><div class="line"><a name="l01458"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308"> 1458</a></span>  <a class="code" href="group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308">LWSGSE_CREATED</a>, </div><div class="line"><a name="l01459"></a><span class="lineno"><a class="line" href="group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde"> 1459</a></span>  <a class="code" href="group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde">LWSGSE_DELETED</a> </div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> };</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> </div><div class="line"><a name="l01463"></a><span class="lineno"><a class="line" href="structlws__gs__event__args.html"> 1463</a></span> <span class="keyword">struct </span><a class="code" href="structlws__gs__event__args.html">lws_gs_event_args</a> {</div><div class="line"><a name="l01464"></a><span class="lineno"><a class="line" href="structlws__gs__event__args.html#a477274f8ca22ba7411b9285b9dc8dd06"> 1464</a></span>  <span class="keyword">enum</span> <a class="code" href="group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e">lws_gs_event</a> event; </div><div class="line"><a name="l01465"></a><span class="lineno"><a class="line" href="structlws__gs__event__args.html#a2bec693d8a43730d487004a44326178b"> 1465</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__gs__event__args.html#a2bec693d8a43730d487004a44326178b">username</a>; </div><div class="line"><a name="l01466"></a><span class="lineno"><a class="line" href="structlws__gs__event__args.html#acd17e4f9f91f7f9a8f0fbf0744a3a463"> 1466</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__gs__event__args.html#acd17e4f9f91f7f9a8f0fbf0744a3a463">email</a>; </div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> };</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> </div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> </div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> </div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> <span class="comment">/*</span></div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> <span class="comment"> */</span></div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> </div><div class="line"><a name="l01493"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5"> 1493</a></span> <span class="keyword">enum</span> <a class="code" href="group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5">lws_context_options</a> {</div><div class="line"><a name="l01494"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092"> 1494</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092">LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT</a> = (1 << 1) |</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  (1 << 12),</div><div class="line"><a name="l01499"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c"> 1499</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c">LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME</a> = (1 << 2),</div><div class="line"><a name="l01501"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d"> 1501</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d">LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT</a> = (1 << 3) |</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  (1 << 12),</div><div class="line"><a name="l01506"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6"> 1506</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6">LWS_SERVER_OPTION_LIBEV</a> = (1 << 4),</div><div class="line"><a name="l01508"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9"> 1508</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9">LWS_SERVER_OPTION_DISABLE_IPV6</a> = (1 << 5),</div><div class="line"><a name="l01510"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93"> 1510</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93">LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS</a> = (1 << 6),</div><div class="line"><a name="l01513"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc"> 1513</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc">LWS_SERVER_OPTION_PEER_CERT_NOT_REQUIRED</a> = (1 << 7),</div><div class="line"><a name="l01515"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f"> 1515</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f">LWS_SERVER_OPTION_VALIDATE_UTF8</a> = (1 << 8),</div><div class="line"><a name="l01517"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c"> 1517</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c">LWS_SERVER_OPTION_SSL_ECDH</a> = (1 << 9) |</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  (1 << 12),</div><div class="line"><a name="l01520"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e"> 1520</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e">LWS_SERVER_OPTION_LIBUV</a> = (1 << 10),</div><div class="line"><a name="l01522"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada"> 1522</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada">LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPS</a> = (1 << 11) |</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  (1 << 12),</div><div class="line"><a name="l01526"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a"> 1526</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a">LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT</a> = (1 << 12),</div><div class="line"><a name="l01528"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e"> 1528</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e">LWS_SERVER_OPTION_EXPLICIT_VHOSTS</a> = (1 << 13),</div><div class="line"><a name="l01531"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941"> 1531</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941">LWS_SERVER_OPTION_UNIX_SOCK</a> = (1 << 14),</div><div class="line"><a name="l01533"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016"> 1533</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016">LWS_SERVER_OPTION_STS</a> = (1 << 15),</div><div class="line"><a name="l01536"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8"> 1536</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8">LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY</a> = (1 << 16),</div><div class="line"><a name="l01538"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160"> 1538</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160">LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE</a> = (1 << 17),</div><div class="line"><a name="l01540"></a><span class="lineno"><a class="line" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd"> 1540</a></span>  <a class="code" href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd">LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN</a> = (1 << 18),</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span> };</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> </div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> <span class="preprocessor">#define lws_check_opt(c, f) (((c) & (f)) == (f))</span></div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> </div><div class="line"><a name="l01561"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html"> 1561</a></span> <span class="keyword">struct </span><a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> {</div><div class="line"><a name="l01562"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a424a5ce268d6903e42243be94487ab85"> 1562</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a424a5ce268d6903e42243be94487ab85">port</a>;</div><div class="line"><a name="l01567"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a75434932bb5df54665ea678eb8ac104a"> 1567</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#a75434932bb5df54665ea678eb8ac104a">iface</a>;</div><div class="line"><a name="l01574"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#abb90ffb3e6d6db2db20f529d61bd9122"> 1574</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocols.html">lws_protocols</a> *<a class="code" href="structlws__context__creation__info.html#abb90ffb3e6d6db2db20f529d61bd9122">protocols</a>;</div><div class="line"><a name="l01578"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a4a3d1155fc52f5048b481884f6fb947c"> 1578</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> *<a class="code" href="structlws__context__creation__info.html#a4a3d1155fc52f5048b481884f6fb947c">extensions</a>;</div><div class="line"><a name="l01581"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29"> 1581</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__token__limits.html">lws_token_limits</a> *<a class="code" href="structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29">token_limits</a>;</div><div class="line"><a name="l01584"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#af3fb447be15c4fcb01d3285a6678ab54"> 1584</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#af3fb447be15c4fcb01d3285a6678ab54">ssl_private_key_password</a>;</div><div class="line"><a name="l01586"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ac62b0f0e8e402412ba5011d15c244103"> 1586</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#ac62b0f0e8e402412ba5011d15c244103">ssl_cert_filepath</a>;</div><div class="line"><a name="l01590"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ab9ec8893e0f7843cf5d783d2f350ef14"> 1590</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#ab9ec8893e0f7843cf5d783d2f350ef14">ssl_private_key_filepath</a>;</div><div class="line"><a name="l01596"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a4f8e65c3a059d3b586fafa9ef3282c29"> 1596</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#a4f8e65c3a059d3b586fafa9ef3282c29">ssl_ca_filepath</a>;</div><div class="line"><a name="l01598"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a3e1516fd7fed26bfa77c0246ed26c2eb"> 1598</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#a3e1516fd7fed26bfa77c0246ed26c2eb">ssl_cipher_list</a>;</div><div class="line"><a name="l01602"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#aef917c0b23976a264d2474901b4f5aa3"> 1602</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#aef917c0b23976a264d2474901b4f5aa3">http_proxy_address</a>;</div><div class="line"><a name="l01605"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a7b59f2bdc869871e7bde232db94f5ca6"> 1605</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a7b59f2bdc869871e7bde232db94f5ca6">http_proxy_port</a>;</div><div class="line"><a name="l01607"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a9c9d22437de92c197f3cee52912b2c03"> 1607</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a9c9d22437de92c197f3cee52912b2c03">gid</a>;</div><div class="line"><a name="l01609"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e"> 1609</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e">uid</a>;</div><div class="line"><a name="l01611"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a9d3b17a25e1fbc772f21eb4959a82724"> 1611</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a9d3b17a25e1fbc772f21eb4959a82724">options</a>;</div><div class="line"><a name="l01613"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0"> 1613</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0">user</a>;</div><div class="line"><a name="l01616"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ac583ce92b8e1c949cb6fef6bfe713d56"> 1616</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#ac583ce92b8e1c949cb6fef6bfe713d56">ka_time</a>;</div><div class="line"><a name="l01619"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a3baab4285c679fbe027c2504621d7410"> 1619</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a3baab4285c679fbe027c2504621d7410">ka_probes</a>;</div><div class="line"><a name="l01623"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a381342a398883d6204955ff3c1849ddd"> 1623</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a381342a398883d6204955ff3c1849ddd">ka_interval</a>;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> <span class="preprocessor">#ifdef LWS_OPENSSL_SUPPORT</span></div><div class="line"><a name="l01627"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a1654d41bea6fb2f619b57e6a264b26a4"> 1627</a></span>  <a class="code" href="structlws__polarssl__context.html">SSL_CTX</a> *<a class="code" href="structlws__context__creation__info.html#a1654d41bea6fb2f619b57e6a264b26a4">provided_client_ssl_ctx</a>;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> <span class="preprocessor">#else </span><span class="comment">/* maintain structure layout either way */</span><span class="preprocessor"></span></div><div class="line"><a name="l01633"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a0e790dda6202604f73a03b6149bc12bb"> 1633</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__context__creation__info.html#a0e790dda6202604f73a03b6149bc12bb">provided_client_ssl_ctx</a>; </div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> </div><div class="line"><a name="l01636"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a0cdfd3c484689ba6f0f2cc91b38ce948"> 1636</a></span>  <span class="keywordtype">short</span> <a class="code" href="structlws__context__creation__info.html#a0cdfd3c484689ba6f0f2cc91b38ce948">max_http_header_data</a>;</div><div class="line"><a name="l01639"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a0b154e79abc1167ba4ac3539f4af6720"> 1639</a></span>  <span class="keywordtype">short</span> <a class="code" href="structlws__context__creation__info.html#a0b154e79abc1167ba4ac3539f4af6720">max_http_header_pool</a>;</div><div class="line"><a name="l01646"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ae52f3237e144e9ddcab5e2cf91d1e419"> 1646</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#ae52f3237e144e9ddcab5e2cf91d1e419">count_threads</a>;</div><div class="line"><a name="l01648"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a45e63e24c88289e0c8352377ef4d3646"> 1648</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a45e63e24c88289e0c8352377ef4d3646">fd_limit_per_thread</a>;</div><div class="line"><a name="l01652"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a6cfa3d51df2def3349a5cbf0d712822d"> 1652</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a6cfa3d51df2def3349a5cbf0d712822d">timeout_secs</a>;</div><div class="line"><a name="l01657"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#afa5d4e7d9f86b58a1c6fac14f0a5f5f9"> 1657</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#afa5d4e7d9f86b58a1c6fac14f0a5f5f9">ecdh_curve</a>;</div><div class="line"><a name="l01659"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9"> 1659</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9">vhost_name</a>;</div><div class="line"><a name="l01663"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a8122cfc0810bafe51edb3ba6bf9a1251"> 1663</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *<a class="code" href="structlws__context__creation__info.html#a8122cfc0810bafe51edb3ba6bf9a1251">plugin_dirs</a>;</div><div class="line"><a name="l01666"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a999866fcd15dbd621773436f97190458"> 1666</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__context__creation__info.html#a999866fcd15dbd621773436f97190458">pvo</a>;</div><div class="line"><a name="l01669"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a81697c6b763b5ef3ee52862bc70b07d6"> 1669</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a81697c6b763b5ef3ee52862bc70b07d6">keepalive_timeout</a>;</div><div class="line"><a name="l01672"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#ad0e95ba721f7bd2b676719f8093c23a2"> 1672</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#ad0e95ba721f7bd2b676719f8093c23a2">log_filepath</a>;</div><div class="line"><a name="l01675"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a13ffbb0d010309669611f8c4eda7d7f8"> 1675</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__http__mount.html">lws_http_mount</a> *<a class="code" href="structlws__context__creation__info.html#a13ffbb0d010309669611f8c4eda7d7f8">mounts</a>;</div><div class="line"><a name="l01677"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a137a9b9de4f6a7993fed8746d551e616"> 1677</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__context__creation__info.html#a137a9b9de4f6a7993fed8746d551e616">server_string</a>;</div><div class="line"><a name="l01680"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a57f88c0745adbd1d6b9b619b8de30209"> 1680</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#a57f88c0745adbd1d6b9b619b8de30209">pt_serv_buf_size</a>;</div><div class="line"><a name="l01686"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#aa8d9e85e137f35fb006f2e4a53f0887a"> 1686</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__context__creation__info.html#aa8d9e85e137f35fb006f2e4a53f0887a">max_http_header_data2</a>;</div><div class="line"><a name="l01691"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a704940261951ced6b5d8191bd8b9bb2d"> 1691</a></span>  <span class="keywordtype">long</span> <a class="code" href="structlws__context__creation__info.html#a704940261951ced6b5d8191bd8b9bb2d">ssl_options_set</a>;</div><div class="line"><a name="l01693"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#adb0bc0b28cd7d90ab306723d8ffa96fa"> 1693</a></span>  <span class="keywordtype">long</span> <a class="code" href="structlws__context__creation__info.html#adb0bc0b28cd7d90ab306723d8ffa96fa">ssl_options_clear</a>;</div><div class="line"><a name="l01695"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078"> 1695</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078">ws_ping_pong_interval</a>;</div><div class="line"><a name="l01707"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a8ca0ec6b8675c13849bbdcdc0d50c9a3"> 1707</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__context__creation__info.html#a8ca0ec6b8675c13849bbdcdc0d50c9a3">headers</a>;</div><div class="line"><a name="l01711"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#a6b059b7ee248cba72a3a4fd6141b0b34"> 1711</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__context__creation__info.html#a6b059b7ee248cba72a3a4fd6141b0b34">reject_service_keywords</a>;</div><div class="line"><a name="l01718"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#aadbc1b141d16c1084ec4c543e7768a72"> 1718</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__context__creation__info.html#aadbc1b141d16c1084ec4c543e7768a72">external_baggage_free_on_destroy</a>;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span> <span class="comment"> *</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> <span class="comment"> * The below is to ensure later library versions with new</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <span class="comment"> * members added above will see 0 (default) even if the app</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> <span class="comment"> * was not built against the newer headers.</span></div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="comment"> */</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> </div><div class="line"><a name="l01734"></a><span class="lineno"><a class="line" href="structlws__context__creation__info.html#afce3b59950eca3203faa07381bbed5d7"> 1734</a></span>  <span class="keywordtype">void</span> *_unused[8]; </div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> };</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> </div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_context *</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> <a class="code" href="group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648">lws_create_context</a>(<span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info);</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> </div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span> <a class="code" href="group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb">lws_context_destroy</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span> </div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> lws_context_destroy2(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span> </div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span> <span class="keyword">typedef</span> int (*lws_reload_func)(void);</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span> </div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span> <a class="code" href="group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232">lws_context_deprecate</a>(<span class="keyword">struct</span> lws_context *context, lws_reload_func cb);</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span> </div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> lws_context_is_deprecated(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span> </div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> <a class="code" href="group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4">lws_set_proxy</a>(<span class="keyword">struct</span> lws_vhost *vhost, <span class="keyword">const</span> <span class="keywordtype">char</span> *proxy);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> </div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span> </div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span> <span class="keyword">struct </span>lws_vhost;</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span> LWS_EXTERN LWS_VISIBLE <span class="keyword">struct </span>lws_vhost *</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span> <a class="code" href="group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c">lws_create_vhost</a>(<span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  <span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info);</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span> </div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> <a class="code" href="group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73">lwsws_get_config_globals</a>(<span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info, <span class="keyword">const</span> <span class="keywordtype">char</span> *d,</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>  <span class="keywordtype">char</span> **config_strings, <span class="keywordtype">int</span> *len);</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> </div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> <a class="code" href="group__context-and-vhost.html#ga341064721add2618ae1b29717493a212">lwsws_get_config_vhosts</a>(<span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>  <span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info, <span class="keyword">const</span> <span class="keywordtype">char</span> *d,</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>  <span class="keywordtype">char</span> **config_strings, <span class="keywordtype">int</span> *len);</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span> </div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_vhost *</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span> <a class="code" href="group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c">lws_vhost_get</a>(<span class="keyword">struct</span> lws *wsi) LWS_WARN_DEPRECATED;</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span> </div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_vhost *</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span> <a class="code" href="group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932">lws_get_vhost</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span> </div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> <a class="code" href="group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6">lws_json_dump_vhost</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_vhost *vh, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span> </div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span> <a class="code" href="group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135">lws_json_dump_context</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_context *context, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len,</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>  <span class="keywordtype">int</span> hide_vhosts);</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span> </div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> *</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span> <a class="code" href="group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da">lws_context_user</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span> </div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span> </div><div class="line"><a name="l01951"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html"> 1951</a></span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> {</div><div class="line"><a name="l01952"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c"> 1952</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c">next</a>; </div><div class="line"><a name="l01953"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822"> 1953</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822">options</a>; </div><div class="line"><a name="l01954"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9"> 1954</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9">name</a>; </div><div class="line"><a name="l01955"></a><span class="lineno"><a class="line" href="structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7"> 1955</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7">value</a>; </div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span> };</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span> </div><div class="line"><a name="l01962"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437"> 1962</a></span> <span class="keyword">enum</span> <a class="code" href="group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437">lws_mount_protocols</a> {</div><div class="line"><a name="l01963"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0"> 1963</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a> = 0, </div><div class="line"><a name="l01964"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1"> 1964</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a> = 1, </div><div class="line"><a name="l01965"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2"> 1965</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a> = 2, </div><div class="line"><a name="l01966"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69"> 1966</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a> = 3, </div><div class="line"><a name="l01967"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970"> 1967</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a> = 4, </div><div class="line"><a name="l01968"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67"> 1968</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a> = 5, </div><div class="line"><a name="l01969"></a><span class="lineno"><a class="line" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da"> 1969</a></span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a> = 6, </div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span> };</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span> </div><div class="line"><a name="l01976"></a><span class="lineno"><a class="line" href="structlws__http__mount.html"> 1976</a></span> <span class="keyword">struct </span><a class="code" href="structlws__http__mount.html">lws_http_mount</a> {</div><div class="line"><a name="l01977"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44"> 1977</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__http__mount.html">lws_http_mount</a> *<a class="code" href="structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44">mount_next</a>;</div><div class="line"><a name="l01979"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#aa2391bfcada0b7a290b3c6651f64586c"> 1979</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#aa2391bfcada0b7a290b3c6651f64586c">mountpoint</a>;</div><div class="line"><a name="l01981"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a"> 1981</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a">origin</a>;</div><div class="line"><a name="l01983"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#ae90d1efe7178199fad39de2926902ee4"> 1983</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#ae90d1efe7178199fad39de2926902ee4">def</a>;</div><div class="line"><a name="l01985"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b"> 1985</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b">protocol</a>;</div><div class="line"><a name="l01988"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#ae7b5c0f4c5408061e6ea3a8d281f45af"> 1988</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__http__mount.html#ae7b5c0f4c5408061e6ea3a8d281f45af">cgienv</a>;</div><div class="line"><a name="l01992"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7"> 1992</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7">extra_mimetypes</a>;</div><div class="line"><a name="l01994"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773"> 1994</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *<a class="code" href="structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773">interpret</a>;</div><div class="line"><a name="l01997"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa"> 1997</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa">cgi_timeout</a>;</div><div class="line"><a name="l01999"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146"> 1999</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146">cache_max_age</a>;</div><div class="line"><a name="l02001"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477"> 2001</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477">auth_mask</a>;</div><div class="line"><a name="l02004"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a8316dd183ffbef50419a5a4968d35d84"> 2004</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cache_reusable:1; </div><div class="line"><a name="l02005"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#ae137203040c6153694bd88a708da5395"> 2005</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cache_revalidate:1; </div><div class="line"><a name="l02006"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#aabec1a326780aafe11b977000983be0c"> 2006</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cache_intermediaries:1; </div><div class="line"><a name="l02008"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a6a9b1492a0b9749e39bd19932717a0b7"> 2008</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structlws__http__mount.html#a6a9b1492a0b9749e39bd19932717a0b7">origin_protocol</a>; </div><div class="line"><a name="l02009"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#ac8489b60b8f969eb19c9abbdeac90743"> 2009</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structlws__http__mount.html#ac8489b60b8f969eb19c9abbdeac90743">mountpoint_len</a>; </div><div class="line"><a name="l02011"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98"> 2011</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98">basic_auth_login_file</a>;</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility</span></div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span> <span class="comment"> *</span></div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span> <span class="comment"> * The below is to ensure later library versions with new</span></div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span> <span class="comment"> * members added above will see 0 (default) even if the app</span></div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span> <span class="comment"> * was not built against the newer headers.</span></div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span> <span class="comment"> */</span></div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span> </div><div class="line"><a name="l02022"></a><span class="lineno"><a class="line" href="structlws__http__mount.html#a78d58848eed7b544ae83f719abdbe4b6"> 2022</a></span>  <span class="keywordtype">void</span> *_unused[2]; </div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span> };</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span> </div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span> </div><div class="line"><a name="l02039"></a><span class="lineno"><a class="line" href="group__client.html#ga96f3dbad54b2853969cfa933d66871ce"> 2039</a></span> <span class="keyword">enum</span> <a class="code" href="group__client.html#ga96f3dbad54b2853969cfa933d66871ce">lws_client_connect_ssl_connection_flags</a> {</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>  LCCSCF_USE_SSL = (1 << 0),</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>  LCCSCF_ALLOW_EXPIRED = (1 << 3)</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span> };</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span> </div><div class="line"><a name="l02049"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html"> 2049</a></span> <span class="keyword">struct </span><a class="code" href="structlws__client__connect__info.html">lws_client_connect_info</a> {</div><div class="line"><a name="l02050"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd"> 2050</a></span>  <span class="keyword">struct </span>lws_context *<a class="code" href="structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd">context</a>;</div><div class="line"><a name="l02052"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502"> 2052</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502">address</a>;</div><div class="line"><a name="l02054"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9"> 2054</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9">port</a>;</div><div class="line"><a name="l02056"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d"> 2056</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d">ssl_connection</a>;</div><div class="line"><a name="l02058"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185"> 2058</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185">path</a>;</div><div class="line"><a name="l02060"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7"> 2060</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7">host</a>;</div><div class="line"><a name="l02062"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a8595f83e64147cb687b6418cf500dd4c"> 2062</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a8595f83e64147cb687b6418cf500dd4c">origin</a>;</div><div class="line"><a name="l02064"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2"> 2064</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2">protocol</a>;</div><div class="line"><a name="l02066"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895"> 2066</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895">ietf_version_or_minus_one</a>;</div><div class="line"><a name="l02068"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836"> 2068</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836">userdata</a>;</div><div class="line"><a name="l02070"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c"> 2070</a></span>  <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlws__extension.html">lws_extension</a> *<a class="code" href="structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c">client_exts</a>;</div><div class="line"><a name="l02072"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#aa9e8e3da4e783a0651b0dea62c2dd1db"> 2072</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#aa9e8e3da4e783a0651b0dea62c2dd1db">method</a>;</div><div class="line"><a name="l02075"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a6843a60e1050b10db9d98d7eeb45f587"> 2075</a></span>  <span class="keyword">struct </span>lws *<a class="code" href="structlws__client__connect__info.html#a6843a60e1050b10db9d98d7eeb45f587">parent_wsi</a>;</div><div class="line"><a name="l02079"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a"> 2079</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a">uri_replace_from</a>;</div><div class="line"><a name="l02082"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3"> 2082</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3">uri_replace_to</a>;</div><div class="line"><a name="l02084"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be"> 2084</a></span>  <span class="keyword">struct </span>lws_vhost *<a class="code" href="structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be">vhost</a>;</div><div class="line"><a name="l02086"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e"> 2086</a></span>  <span class="keyword">struct </span>lws **<a class="code" href="structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e">pwsi</a>;</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility</span></div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span> <span class="comment"> *</span></div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span> <span class="comment"> * The below is to ensure later library versions with new</span></div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span> <span class="comment"> * members added above will see 0 (default) even if the app</span></div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> <span class="comment"> * was not built against the newer headers.</span></div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span> <span class="comment"> */</span></div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span> </div><div class="line"><a name="l02106"></a><span class="lineno"><a class="line" href="structlws__client__connect__info.html#ad47f50d1633dc5df74548606c9a66d73"> 2106</a></span>  <span class="keywordtype">void</span> *_unused[4]; </div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span> };</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span> </div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws *</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span> <a class="code" href="group__client.html#ga0c966136905f467816307cfba6deb5fd">lws_client_connect_via_info</a>(<span class="keyword">struct</span> <a class="code" href="structlws__client__connect__info.html">lws_client_connect_info</a> * ccinfo);</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span> </div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span> <span class="comment">/* deprecated, use lws_client_connect_via_info() */</span></div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span> <a class="code" href="group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3">lws_client_connect</a>(<span class="keyword">struct</span> lws_context *clients, <span class="keyword">const</span> <span class="keywordtype">char</span> *address,</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>  <span class="keywordtype">int</span> port, <span class="keywordtype">int</span> ssl_connection, <span class="keyword">const</span> <span class="keywordtype">char</span> *path,</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *host, <span class="keyword">const</span> <span class="keywordtype">char</span> *origin, <span class="keyword">const</span> <span class="keywordtype">char</span> *protocol,</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>  <span class="keywordtype">int</span> ietf_version_or_minus_one) LWS_WARN_DEPRECATED;</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span> <span class="comment">/* deprecated, use lws_client_connect_via_info() */</span></div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> <a class="code" href="group__client.html#gac6a8558b4410961a880241c2ac1271e2">lws_client_connect_extended</a>(<span class="keyword">struct</span> lws_context *clients, <span class="keyword">const</span> <span class="keywordtype">char</span> *address,</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>  <span class="keywordtype">int</span> port, <span class="keywordtype">int</span> ssl_connection, <span class="keyword">const</span> <span class="keywordtype">char</span> *path,</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *host, <span class="keyword">const</span> <span class="keywordtype">char</span> *origin,</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *protocol, <span class="keywordtype">int</span> ietf_version_or_minus_one,</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  <span class="keywordtype">void</span> *userdata) LWS_WARN_DEPRECATED;</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span> </div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span> <a class="code" href="group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340">lws_init_vhost_client_ssl</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__context__creation__info.html">lws_context_creation_info</a> *info,</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>  <span class="keyword">struct</span> lws_vhost *vhost);</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span> </div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span> lws_http_client_read(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">char</span> **buf, <span class="keywordtype">int</span> *len);</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span> </div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span></div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span> <a class="code" href="group__client.html#ga715efffc0c4e8fbf72a4293008eb2187">lws_http_client_http_response</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span> </div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span> lws_client_http_body_pending(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">int</span> something_left_to_send);</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span> </div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span> </div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span> </div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span> <a class="code" href="group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8">lws_service</a>(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> timeout_ms);</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span> </div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span> <a class="code" href="group__service.html#ga9b3cc4473fd8848e5bbee7f310712939">lws_service_tsi</a>(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> timeout_ms, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span> </div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span> <a class="code" href="group__service.html#ga29c246707997ab7a466aa709aecd2d7b">lws_cancel_service_pt</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span> </div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span> <a class="code" href="group__service.html#ga53e3d0801dfda7960a7249dd559e68a2">lws_cancel_service</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span> </div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span> <a class="code" href="group__service.html#gad82efa5466d14a9f05aa06416375b28d">lws_service_fd</a>(<span class="keyword">struct</span> lws_context *context, <span class="keyword">struct</span> <a class="code" href="structlws__pollfd.html">lws_pollfd</a> *<a class="code" href="structpollfd.html">pollfd</a>);</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span> </div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> <a class="code" href="group__service.html#gaebf426eda371ba23642fc11d8e0ace6b">lws_service_fd_tsi</a>(<span class="keyword">struct</span> lws_context *context, <span class="keyword">struct</span> <a class="code" href="structlws__pollfd.html">lws_pollfd</a> *<a class="code" href="structpollfd.html">pollfd</a>,</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>  <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span> </div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span> <a class="code" href="group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241">lws_service_adjust_timeout</a>(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> timeout_ms, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span> </div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span> <span class="comment">/* Backwards compatibility */</span></div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span> <span class="preprocessor">#define lws_plat_service_tsi lws_service_tsi</span></div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span> </div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span> </div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span> </div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span> </div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span> <a class="code" href="group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c">lws_get_mimetype</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__http__mount.html">lws_http_mount</a> *m);</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span> </div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span> <a class="code" href="group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7">lws_serve_http_file</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keyword">const</span> <span class="keywordtype">char</span> *content_type,</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *other_headers, <span class="keywordtype">int</span> other_headers_len);</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span> lws_serve_http_file_fragment(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> </div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span> </div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> <span class="keyword">enum</span> http_status {</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  HTTP_STATUS_OK = 200,</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  HTTP_STATUS_NO_CONTENT = 204,</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  HTTP_STATUS_PARTIAL_CONTENT = 206,</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span> </div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>  HTTP_STATUS_MOVED_PERMANENTLY = 301,</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  HTTP_STATUS_FOUND = 302,</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  HTTP_STATUS_SEE_OTHER = 303,</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span> </div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>  HTTP_STATUS_BAD_REQUEST = 400,</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  HTTP_STATUS_UNAUTHORIZED,</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  HTTP_STATUS_PAYMENT_REQUIRED,</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>  HTTP_STATUS_FORBIDDEN,</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  HTTP_STATUS_NOT_FOUND,</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  HTTP_STATUS_METHOD_NOT_ALLOWED,</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  HTTP_STATUS_NOT_ACCEPTABLE,</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  HTTP_STATUS_PROXY_AUTH_REQUIRED,</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  HTTP_STATUS_REQUEST_TIMEOUT,</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  HTTP_STATUS_CONFLICT,</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  HTTP_STATUS_GONE,</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  HTTP_STATUS_LENGTH_REQUIRED,</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  HTTP_STATUS_PRECONDITION_FAILED,</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  HTTP_STATUS_REQ_URI_TOO_LONG,</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  HTTP_STATUS_EXPECTATION_FAILED,</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span> </div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  HTTP_STATUS_NOT_IMPLEMENTED,</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  HTTP_STATUS_BAD_GATEWAY,</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  HTTP_STATUS_SERVICE_UNAVAILABLE,</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>  HTTP_STATUS_GATEWAY_TIMEOUT,</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span> };</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span> </div><div class="line"><a name="l02495"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html"> 2495</a></span> <span class="keyword">struct </span><a class="code" href="structlws__process__html__args.html">lws_process_html_args</a> {</div><div class="line"><a name="l02496"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html#a11859d8bedd379fbf64543b25c65fe14"> 2496</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structlws__process__html__args.html#a11859d8bedd379fbf64543b25c65fe14">p</a>; </div><div class="line"><a name="l02497"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html#a754513f2311241cabb0cd1c90d7307ef"> 2497</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__process__html__args.html#a754513f2311241cabb0cd1c90d7307ef">len</a>; </div><div class="line"><a name="l02498"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html#a8be7fd396a1942ea2449a2fda990ff99"> 2498</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__process__html__args.html#a8be7fd396a1942ea2449a2fda990ff99">max_len</a>; </div><div class="line"><a name="l02499"></a><span class="lineno"><a class="line" href="structlws__process__html__args.html#a362547891ee0d693f3900a1f807ea475"> 2499</a></span>  <span class="keywordtype">int</span> <span class="keyword">final</span>; </div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span> };</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span> </div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span> <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *(*lws_process_html_state_cb)(<span class="keywordtype">void</span> *data, <span class="keywordtype">int</span> index);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span> </div><div class="line"><a name="l02504"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html"> 2504</a></span> <span class="keyword">struct </span><a class="code" href="structlws__process__html__state.html">lws_process_html_state</a> {</div><div class="line"><a name="l02505"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3"> 2505</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3">start</a>; </div><div class="line"><a name="l02506"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#a71982bc1cbd8cf876ca0f545144404eb"> 2506</a></span>  <span class="keywordtype">char</span> swallow[16]; </div><div class="line"><a name="l02507"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#a53234f2948812c7208a256f9f5b23c20"> 2507</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__process__html__state.html#a53234f2948812c7208a256f9f5b23c20">pos</a>; </div><div class="line"><a name="l02508"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5"> 2508</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5">data</a>; </div><div class="line"><a name="l02509"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#a3b113e00c03a2fded51b1c85ff5bf077"> 2509</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *<a class="code" href="structlws__process__html__state.html#a3b113e00c03a2fded51b1c85ff5bf077">vars</a>; </div><div class="line"><a name="l02510"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968"> 2510</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968">count_vars</a>; </div><div class="line"><a name="l02512"></a><span class="lineno"><a class="line" href="structlws__process__html__state.html#a693d2fb45378afee5da29b539c1ea644"> 2512</a></span>  lws_process_html_state_cb replace; </div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span> };</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span> </div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span> <a class="code" href="group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60">lws_chunked_html_process</a>(<span class="keyword">struct</span> <a class="code" href="structlws__process__html__args.html">lws_process_html_args</a> *args,</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  <span class="keyword">struct</span> <a class="code" href="structlws__process__html__state.html">lws_process_html_state</a> *s);</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span> </div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span> </div><div class="line"><a name="l02564"></a><span class="lineno"><a class="line" href="structlws__tokens.html"> 2564</a></span> <span class="keyword">struct </span><a class="code" href="structlws__tokens.html">lws_tokens</a> {</div><div class="line"><a name="l02565"></a><span class="lineno"><a class="line" href="structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd"> 2565</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd">token</a>; </div><div class="line"><a name="l02566"></a><span class="lineno"><a class="line" href="structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766"> 2566</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766">token_len</a>; </div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span> };</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span> </div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span> <span class="comment">/* enum lws_token_indexes</span></div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span> <span class="comment"> * these have to be kept in sync with lextable.h / minilex.c</span></div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span> <span class="comment"> *</span></div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span> <span class="comment"> */</span></div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span> <span class="keyword">enum</span> lws_token_indexes {</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  WSI_TOKEN_GET_URI = 0,</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  WSI_TOKEN_POST_URI = 1,</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  WSI_TOKEN_OPTIONS_URI = 2,</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  WSI_TOKEN_HOST = 3,</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  WSI_TOKEN_CONNECTION = 4,</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  WSI_TOKEN_UPGRADE = 5,</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  WSI_TOKEN_ORIGIN = 6,</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>  WSI_TOKEN_DRAFT = 7,</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  WSI_TOKEN_CHALLENGE = 8,</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  WSI_TOKEN_EXTENSIONS = 9,</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  WSI_TOKEN_KEY1 = 10,</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  WSI_TOKEN_KEY2 = 11,</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  WSI_TOKEN_PROTOCOL = 12,</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  WSI_TOKEN_ACCEPT = 13,</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  WSI_TOKEN_NONCE = 14,</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  WSI_TOKEN_HTTP = 15,</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>  WSI_TOKEN_HTTP2_SETTINGS = 16,</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  WSI_TOKEN_HTTP_ACCEPT = 17,</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>  WSI_TOKEN_HTTP_PRAGMA = 23,</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  WSI_TOKEN_HTTP_AUTHORIZATION = 25,</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  WSI_TOKEN_HTTP_COOKIE = 26,</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>  WSI_TOKEN_HTTP_DATE = 29,</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  WSI_TOKEN_HTTP_RANGE = 30,</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>  WSI_TOKEN_HTTP_REFERER = 31,</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  WSI_TOKEN_KEY = 32,</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>  WSI_TOKEN_VERSION = 33,</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  WSI_TOKEN_SWORIGIN = 34,</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span> </div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  WSI_TOKEN_HTTP_COLON_METHOD = 36,</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  WSI_TOKEN_HTTP_COLON_PATH = 37,</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  WSI_TOKEN_HTTP_COLON_SCHEME = 38,</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>  WSI_TOKEN_HTTP_COLON_STATUS = 39,</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span> </div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  WSI_TOKEN_HTTP_AGE = 43,</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  WSI_TOKEN_HTTP_ALLOW = 44,</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  WSI_TOKEN_HTTP_ETAG = 50,</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  WSI_TOKEN_HTTP_EXPECT = 51,</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  WSI_TOKEN_HTTP_EXPIRES = 52,</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  WSI_TOKEN_HTTP_FROM = 53,</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  WSI_TOKEN_HTTP_IF_MATCH = 54,</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  WSI_TOKEN_HTTP_IF_RANGE = 55,</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>  WSI_TOKEN_HTTP_LINK = 58,</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  WSI_TOKEN_HTTP_LOCATION = 59,</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  WSI_TOKEN_HTTP_REFRESH = 63,</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  WSI_TOKEN_HTTP_RETRY_AFTER = 64,</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  WSI_TOKEN_HTTP_SERVER = 65,</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  WSI_TOKEN_HTTP_SET_COOKIE = 66,</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>  WSI_TOKEN_HTTP_USER_AGENT = 69,</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>  WSI_TOKEN_HTTP_VARY = 70,</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>  WSI_TOKEN_HTTP_VIA = 71,</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span> </div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>  WSI_TOKEN_PATCH_URI = 73,</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  WSI_TOKEN_PUT_URI = 74,</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>  WSI_TOKEN_DELETE_URI = 75,</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span> </div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  WSI_TOKEN_HTTP_URI_ARGS = 76,</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>  WSI_TOKEN_PROXY = 77,</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>  WSI_TOKEN_HTTP_X_REAL_IP = 78,</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>  WSI_TOKEN_HTTP1_0 = 79,</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>  WSI_TOKEN_X_FORWARDED_FOR = 80,</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> </div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span> </div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>  <span class="comment">/* use token storage to stash these internally, not for</span></div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span> <span class="comment"> * user use */</span></div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span> </div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>  _WSI_TOKEN_CLIENT_PEER_ADDRESS,</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>  _WSI_TOKEN_CLIENT_URI,</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>  _WSI_TOKEN_CLIENT_HOST,</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>  _WSI_TOKEN_CLIENT_ORIGIN,</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  _WSI_TOKEN_CLIENT_METHOD,</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span> </div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>  <span class="comment">/* always last real token index*/</span></div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>  WSI_TOKEN_COUNT,</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span> </div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>  <span class="comment">/* parser state additions, no storage associated */</span></div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>  WSI_TOKEN_NAME_PART,</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>  WSI_TOKEN_SKIPPING,</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>  WSI_TOKEN_SKIPPING_SAW_CR,</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>  WSI_PARSING_COMPLETE,</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>  WSI_INIT_TOKEN_MUXURL,</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span> };</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span> </div><div class="line"><a name="l02685"></a><span class="lineno"><a class="line" href="structlws__token__limits.html"> 2685</a></span> <span class="keyword">struct </span><a class="code" href="structlws__token__limits.html">lws_token_limits</a> {</div><div class="line"><a name="l02686"></a><span class="lineno"><a class="line" href="structlws__token__limits.html#a6ec712306cbf8585bce7a56758a3ceff"> 2686</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> token_limit[WSI_TOKEN_COUNT]; </div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span> };</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span> </div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span> <a class="code" href="group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b">lws_token_to_string</a>(<span class="keyword">enum</span> lws_token_indexes token);</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span> </div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span> </div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span> <a class="code" href="group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8">lws_hdr_total_length</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> lws_token_indexes h);</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span> </div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span> <a class="code" href="group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e">lws_hdr_fragment_length</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> lws_token_indexes h, <span class="keywordtype">int</span> frag_idx);</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span> </div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span> <a class="code" href="group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77">lws_hdr_copy</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">char</span> *dest, <span class="keywordtype">int</span> len, <span class="keyword">enum</span> lws_token_indexes h);</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span> </div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span> <a class="code" href="group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9">lws_hdr_copy_fragment</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">char</span> *dest, <span class="keywordtype">int</span> len,</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>  <span class="keyword">enum</span> lws_token_indexes h, <span class="keywordtype">int</span> frag_idx);</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span> </div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span> <a class="code" href="group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2">lws_get_urlarg_by_name</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span> </div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span> </div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span> <a class="code" href="group__HTTP-headers-create.html#ga29b7d6d2ddfdbaff3d8b607e7e3151b6">lws_add_http_header_status</a>(<span class="keyword">struct</span> lws *wsi,</div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> code, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p,</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span> <a class="code" href="group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8">lws_add_http_header_by_name</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *value, <span class="keywordtype">int</span> length,</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span> <a class="code" href="group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1">lws_add_http_header_by_token</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> lws_token_indexes token,</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *value, <span class="keywordtype">int</span> length,</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span> <a class="code" href="group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf">lws_add_http_header_content_length</a>(<span class="keyword">struct</span> lws *wsi,</div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> content_length,</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span> <a class="code" href="group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b">lws_finalize_http_header</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p,</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span> </div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span> </div><div class="line"><a name="l02883"></a><span class="lineno"><a class="line" href="group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae"> 2883</a></span> <span class="keyword">enum</span> <a class="code" href="group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae">lws_spa_fileupload_states</a> {</div><div class="line"><a name="l02884"></a><span class="lineno"><a class="line" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f"> 2884</a></span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a>,</div><div class="line"><a name="l02886"></a><span class="lineno"><a class="line" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7"> 2886</a></span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a>,</div><div class="line"><a name="l02888"></a><span class="lineno"><a class="line" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83"> 2888</a></span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span> };</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span> </div><div class="line"><a name="l02905"></a><span class="lineno"><a class="line" href="group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e"> 2905</a></span> <span class="keyword">typedef</span> int (*<a class="code" href="group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e">lws_spa_fileupload_cb</a>)(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len,</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>  <span class="keyword">enum</span> <a class="code" href="group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae">lws_spa_fileupload_states</a> state);</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span> </div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span> <span class="keyword">struct </span>lws_spa;</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span> </div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_spa *</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span> <a class="code" href="group__form-parsing.html#ga162f86762173a2bc8c28497941d74815">lws_spa_create</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *param_names,</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>  <span class="keywordtype">int</span> count_params, <span class="keywordtype">int</span> max_storage, <a class="code" href="group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e">lws_spa_fileupload_cb</a> opt_cb,</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>  <span class="keywordtype">void</span> *opt_data);</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span> </div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span> <a class="code" href="group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2">lws_spa_process</a>(<span class="keyword">struct</span> lws_spa *spa, <span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span> </div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span> <a class="code" href="group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24">lws_spa_finalize</a>(<span class="keyword">struct</span> lws_spa *spa);</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span> </div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span> <a class="code" href="group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f">lws_spa_get_length</a>(<span class="keyword">struct</span> lws_spa *spa, <span class="keywordtype">int</span> n);</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span> </div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span> <a class="code" href="group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd">lws_spa_get_string</a>(<span class="keyword">struct</span> lws_spa *spa, <span class="keywordtype">int</span> n);</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span> </div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span> <a class="code" href="group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b">lws_spa_destroy</a>(<span class="keyword">struct</span> lws_spa *spa);</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span> </div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span> </div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span> <a class="code" href="group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7">lws_urlencode</a>(<span class="keywordtype">char</span> *escaped, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span> </div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span> <span class="comment">/*</span></div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span> <span class="comment"> * URLDECODE 1 / 2</span></div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span> <span class="comment"> *</span></div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span> <span class="comment"> * This simple urldecode only operates until the first '\0' and requires the</span></div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span> <span class="comment"> * data to exist all at once</span></div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span> <span class="comment"> */</span></div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span> <a class="code" href="group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3">lws_urldecode</a>(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *escaped, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span> </div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span> <a class="code" href="group__http.html#gac8a4a71240857dc6b2ed70456b6923f4">lws_return_http_status</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> code,</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *html_body);</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span> </div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span> <a class="code" href="group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25">lws_http_redirect</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">int</span> code, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *loc, <span class="keywordtype">int</span> len,</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **p, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *end);</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span> </div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span> <a class="code" href="group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a">lws_http_transaction_completed</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span> </div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span> </div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span> <a class="code" href="group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865">lws_sql_purify</a>(<span class="keywordtype">char</span> *escaped, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span> </div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span> <a class="code" href="group__pur.html#gab15187efcfa256b7c928562c182b92a3">lws_json_purify</a>(<span class="keywordtype">char</span> *escaped, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span> </div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span> </div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span> <span class="preprocessor">#ifdef LWS_USE_LIBEV</span></div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span> <span class="keyword">typedef</span> void (lws_ev_signal_cb_t)(EV_P_ <span class="keyword">struct </span>ev_signal *w, <span class="keywordtype">int</span> revents);</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span> </div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span> lws_ev_sigint_cfg(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> use_ev_sigint,</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>  lws_ev_signal_cb_t *cb);</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span> </div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span> lws_ev_initloop(<span class="keyword">struct</span> lws_context *context, <span class="keyword">struct</span> ev_loop *loop, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span> </div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span> lws_ev_sigint_cb(<span class="keyword">struct</span> ev_loop *loop, <span class="keyword">struct</span> ev_signal *watcher, <span class="keywordtype">int</span> revents);</div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span> <span class="preprocessor">#endif </span><span class="comment">/* LWS_USE_LIBEV */</span><span class="preprocessor"></span></div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span> </div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span> </div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span> <span class="preprocessor">#ifdef LWS_USE_LIBUV</span></div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span> lws_uv_sigint_cfg(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> use_uv_sigint,</div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>  uv_signal_cb cb);</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span> </div><div class="line"><a name="l03135"></a><span class="lineno"> 3135</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03136"></a><span class="lineno"> 3136</span> lws_libuv_run(<span class="keyword">const</span> <span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l03137"></a><span class="lineno"> 3137</span> </div><div class="line"><a name="l03138"></a><span class="lineno"> 3138</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03139"></a><span class="lineno"> 3139</span> lws_libuv_stop(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l03140"></a><span class="lineno"> 3140</span> </div><div class="line"><a name="l03141"></a><span class="lineno"> 3141</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span> lws_libuv_stop_without_kill(<span class="keyword">const</span> <span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span> </div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span> lws_uv_initloop(<span class="keyword">struct</span> lws_context *context, uv_loop_t *loop, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span> </div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span> LWS_VISIBLE LWS_EXTERN uv_loop_t *</div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span> lws_uv_getloop(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">int</span> tsi);</div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span> </div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span> lws_uv_sigint_cb(uv_signal_t *watcher, <span class="keywordtype">int</span> signum);</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span> <span class="preprocessor">#endif </span><span class="comment">/* LWS_USE_LIBUV */</span><span class="preprocessor"></span></div><div class="line"><a name="l03153"></a><span class="lineno"> 3153</span> </div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span> </div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span> <span class="comment">/*</span></div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span> <span class="comment"> */</span></div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span> <span class="keyword">enum</span> pending_timeout {</div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>  NO_PENDING_TIMEOUT = 0,</div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,</div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,</div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>  PENDING_TIMEOUT_AWAITING_PING = 5,</div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>  PENDING_TIMEOUT_CLOSE_ACK = 6,</div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,</div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>  PENDING_TIMEOUT_SSL_ACCEPT = 9,</div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>  PENDING_TIMEOUT_HTTP_CONTENT = 10,</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>  PENDING_TIMEOUT_CGI = 14,</div><div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,</div><div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,</div><div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,</div><div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,</div><div class="line"><a name="l03185"></a><span class="lineno"> 3185</span> </div><div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span> };</div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span> </div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span> <a class="code" href="group__timeout.html#gaced9f9237f6172fed9f730a2af51345a">lws_set_timeout</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> pending_timeout reason, <span class="keywordtype">int</span> secs);</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span> </div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span> <span class="preprocessor">#if !defined(LWS_SIZEOFPTR)</span></div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span> <span class="preprocessor">#define LWS_SIZEOFPTR (sizeof (void *))</span></div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span> <span class="preprocessor">#if !defined(u_int64_t)</span></div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span> <span class="preprocessor">#define u_int64_t unsigned long long</span></div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span> </div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span> <span class="preprocessor">#if defined(__x86_64__)</span></div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span> <span class="preprocessor">#define _LWS_PAD_SIZE 16 </span><span class="comment">/* Intel recommended for best performance */</span><span class="preprocessor"></span></div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span> <span class="preprocessor">#define _LWS_PAD_SIZE LWS_SIZEOFPTR </span><span class="comment">/* Size of a pointer on the target arch */</span><span class="preprocessor"></span></div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span> <span class="preprocessor">#define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \</span></div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span> <span class="preprocessor"> ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))</span></div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span> <span class="preprocessor">#define LWS_PRE _LWS_PAD(4 + 10)</span></div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span> <span class="comment">/* used prior to 1.7 and retained for backward compatibility */</span></div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span> <span class="preprocessor">#define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE</span></div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span> <span class="preprocessor">#define LWS_SEND_BUFFER_POST_PADDING 0</span></div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span> </div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span> <span class="comment">/*</span></div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span> <span class="comment"> * NOTE: These public enums are part of the abi. If you want to add one,</span></div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span> <span class="comment"> * add it at where specified so existing users are unaffected.</span></div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span> <span class="comment"> */</span></div><div class="line"><a name="l03230"></a><span class="lineno"><a class="line" href="group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d"> 3230</a></span> <span class="keyword">enum</span> <a class="code" href="group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d">lws_write_protocol</a> {</div><div class="line"><a name="l03231"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db"> 3231</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a> = 0,</div><div class="line"><a name="l03235"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2"> 3235</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a> = 1,</div><div class="line"><a name="l03238"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826"> 3238</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a> = 2,</div><div class="line"><a name="l03241"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e"> 3241</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a> = 3,</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>  <span class="comment">/* LWS_WRITE_CLOSE is handled by lws_close_reason() */</span></div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>  LWS_WRITE_PING = 5,</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>  LWS_WRITE_PONG = 6,</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span> </div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  <span class="comment">/* Same as write_http but we know this write ends the transaction */</span></div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>  LWS_WRITE_HTTP_FINAL = 7,</div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span> </div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>  <span class="comment">/* HTTP2 */</span></div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span> </div><div class="line"><a name="l03253"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917"> 3253</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a> = 8,</div><div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03261"></a><span class="lineno"> 3261</span> </div><div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>  <span class="comment">/* flags */</span></div><div class="line"><a name="l03263"></a><span class="lineno"> 3263</span> </div><div class="line"><a name="l03264"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3"> 3264</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a> = 0x40,</div><div class="line"><a name="l03267"></a><span class="lineno"><a class="line" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce"> 3267</a></span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a> = 0x80</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span> };</div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span> </div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span> </div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span> <a class="code" href="group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001">lws_write</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len,</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>  <span class="keyword">enum</span> <a class="code" href="group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d">lws_write_protocol</a> protocol);</div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span> </div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span> <span class="comment">/* helper for case where buffer may be const */</span></div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span> <span class="preprocessor">#define lws_write_http(wsi, buf, len) \</span></div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span> <span class="preprocessor"> lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)</span></div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span> </div><div class="line"><a name="l03387"></a><span class="lineno"> 3387</span> </div><div class="line"><a name="l03400"></a><span class="lineno"> 3400</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03401"></a><span class="lineno"> 3401</span> <a class="code" href="group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d">lws_callback_on_writable</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03402"></a><span class="lineno"> 3402</span> </div><div class="line"><a name="l03416"></a><span class="lineno"> 3416</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span> <a class="code" href="group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107">lws_callback_on_writable_all_protocol</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol);</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span> </div><div class="line"><a name="l03433"></a><span class="lineno"> 3433</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03434"></a><span class="lineno"> 3434</span> <a class="code" href="group__callback-when-writeable.html#ga8570860e191b62db264f2bac67354ea8">lws_callback_on_writable_all_protocol_vhost</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_vhost *vhost,</div><div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol);</div><div class="line"><a name="l03436"></a><span class="lineno"> 3436</span> </div><div class="line"><a name="l03449"></a><span class="lineno"> 3449</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03450"></a><span class="lineno"> 3450</span> <a class="code" href="group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70">lws_callback_all_protocol</a>(<span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol, <span class="keywordtype">int</span> reason);</div><div class="line"><a name="l03452"></a><span class="lineno"> 3452</span> </div><div class="line"><a name="l03465"></a><span class="lineno"> 3465</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03466"></a><span class="lineno"> 3466</span> <a class="code" href="group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053">lws_callback_all_protocol_vhost</a>(<span class="keyword">struct</span> lws_vhost *vh,</div><div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol, <span class="keywordtype">int</span> reason);</div><div class="line"><a name="l03468"></a><span class="lineno"> 3468</span> </div><div class="line"><a name="l03482"></a><span class="lineno"> 3482</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03483"></a><span class="lineno"> 3483</span> <a class="code" href="group__callback-when-writeable.html#ga60939cf0c073d933fde3d17f3591caf5">lws_callback_vhost_protocols</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">int</span> reason, <span class="keywordtype">void</span> *in, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03484"></a><span class="lineno"> 3484</span> </div><div class="line"><a name="l03485"></a><span class="lineno"> 3485</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03486"></a><span class="lineno"> 3486</span> lws_callback_http_dummy(<span class="keyword">struct</span> lws *wsi, <span class="keyword">enum</span> <a class="code" href="group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7">lws_callback_reasons</a> reason,</div><div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>  <span class="keywordtype">void</span> *user, <span class="keywordtype">void</span> *in, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l03488"></a><span class="lineno"> 3488</span> </div><div class="line"><a name="l03496"></a><span class="lineno"> 3496</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03497"></a><span class="lineno"> 3497</span> <a class="code" href="group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba">lws_get_socket_fd</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03498"></a><span class="lineno"> 3498</span> </div><div class="line"><a name="l03520"></a><span class="lineno"> 3520</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">size_t</span></div><div class="line"><a name="l03521"></a><span class="lineno"> 3521</span> <a class="code" href="group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde">lws_get_peer_write_allowance</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03523"></a><span class="lineno"> 3523</span> </div><div class="line"><a name="l03534"></a><span class="lineno"> 3534</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03535"></a><span class="lineno"> 3535</span> <a class="code" href="libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e">lws_rx_flow_control</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">int</span> enable);</div><div class="line"><a name="l03536"></a><span class="lineno"> 3536</span> </div><div class="line"><a name="l03546"></a><span class="lineno"> 3546</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03547"></a><span class="lineno"> 3547</span> <a class="code" href="libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672">lws_rx_flow_allow_all_protocol</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws_context *context,</div><div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocols.html">lws_protocols</a> *protocol);</div><div class="line"><a name="l03549"></a><span class="lineno"> 3549</span> </div><div class="line"><a name="l03566"></a><span class="lineno"> 3566</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">size_t</span></div><div class="line"><a name="l03567"></a><span class="lineno"> 3567</span> <a class="code" href="libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536">lws_remaining_packet_payload</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03568"></a><span class="lineno"> 3568</span> </div><div class="line"><a name="l03569"></a><span class="lineno"> 3569</span> </div><div class="line"><a name="l03578"></a><span class="lineno"> 3578</span> </div><div class="line"><a name="l03591"></a><span class="lineno"> 3591</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws *</div><div class="line"><a name="l03592"></a><span class="lineno"> 3592</span> <a class="code" href="group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af">lws_adopt_socket</a>(<span class="keyword">struct</span> lws_context *context, lws_sockfd_type accept_fd);</div><div class="line"><a name="l03615"></a><span class="lineno"> 3615</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws *</div><div class="line"><a name="l03616"></a><span class="lineno"> 3616</span> <a class="code" href="group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b">lws_adopt_socket_readbuf</a>(<span class="keyword">struct</span> lws_context *context, lws_sockfd_type accept_fd,</div><div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *readbuf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l03619"></a><span class="lineno"> 3619</span> </div><div class="line"><a name="l03625"></a><span class="lineno"> 3625</span> </div><div class="line"><a name="l03636"></a><span class="lineno"> 3636</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03637"></a><span class="lineno"> 3637</span> <a class="code" href="group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4">lws_canonical_hostname</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l03638"></a><span class="lineno"> 3638</span> </div><div class="line"><a name="l03653"></a><span class="lineno"> 3653</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03654"></a><span class="lineno"> 3654</span> <a class="code" href="group__net.html#ga092e5f473b3347f03ffeef8a950080f3">lws_get_peer_addresses</a>(<span class="keyword">struct</span> lws *wsi, lws_sockfd_type fd, <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>  <span class="keywordtype">int</span> name_len, <span class="keywordtype">char</span> *rip, <span class="keywordtype">int</span> rip_len);</div><div class="line"><a name="l03656"></a><span class="lineno"> 3656</span> </div><div class="line"><a name="l03667"></a><span class="lineno"> 3667</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l03668"></a><span class="lineno"> 3668</span> <a class="code" href="group__net.html#gad01014fed09759741b6d23afccfdaacc">lws_get_peer_simple</a>(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">char</span> *name, <span class="keywordtype">int</span> namelen);</div><div class="line"><a name="l03669"></a><span class="lineno"> 3669</span> <span class="preprocessor">#ifndef LWS_WITH_ESP8266</span></div><div class="line"><a name="l03670"></a><span class="lineno"> 3670</span> </div><div class="line"><a name="l03681"></a><span class="lineno"> 3681</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03682"></a><span class="lineno"> 3682</span> <a class="code" href="group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8">lws_interface_to_sa</a>(<span class="keywordtype">int</span> ipv6, <span class="keyword">const</span> <span class="keywordtype">char</span> *ifname, <span class="keyword">struct</span> sockaddr_in *addr,</div><div class="line"><a name="l03683"></a><span class="lineno"> 3683</span>  <span class="keywordtype">size_t</span> addrlen);</div><div class="line"><a name="l03685"></a><span class="lineno"> 3685</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03686"></a><span class="lineno"> 3686</span> </div><div class="line"><a name="l03692"></a><span class="lineno"> 3692</span> </div><div class="line"><a name="l03705"></a><span class="lineno"> 3705</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03706"></a><span class="lineno"> 3706</span> <a class="code" href="group__misc.html#ga9f37d0e357de2ab4170723fcdb665d21">lws_snprintf</a>(<span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> size, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div><div class="line"><a name="l03707"></a><span class="lineno"> 3707</span> </div><div class="line"><a name="l03719"></a><span class="lineno"> 3719</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03720"></a><span class="lineno"> 3720</span> <a class="code" href="group__misc.html#ga58f906c6be0ca80efd813f694569dd4a">lws_get_random</a>(<span class="keyword">struct</span> lws_context *context, <span class="keywordtype">void</span> *buf, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l03728"></a><span class="lineno"> 3728</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03729"></a><span class="lineno"> 3729</span> <a class="code" href="group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af">lws_daemonize</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *_lock_path);</div><div class="line"><a name="l03735"></a><span class="lineno"> 3735</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">const</span> <span class="keywordtype">char</span> * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03736"></a><span class="lineno"> 3736</span> <a class="code" href="group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0">lws_get_library_version</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l03737"></a><span class="lineno"> 3737</span> </div><div class="line"><a name="l03744"></a><span class="lineno"> 3744</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span> *</div><div class="line"><a name="l03745"></a><span class="lineno"> 3745</span> <a class="code" href="group__misc.html#gaa194584fff9698f3b280658f770ccd0f">lws_wsi_user</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03746"></a><span class="lineno"> 3746</span> </div><div class="line"><a name="l03758"></a><span class="lineno"> 3758</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03759"></a><span class="lineno"> 3759</span> <a class="code" href="group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa">lws_parse_uri</a>(<span class="keywordtype">char</span> *p, <span class="keyword">const</span> <span class="keywordtype">char</span> **prot, <span class="keyword">const</span> <span class="keywordtype">char</span> **ads, <span class="keywordtype">int</span> *port,</div><div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> **path);</div><div class="line"><a name="l03761"></a><span class="lineno"> 3761</span> </div><div class="line"><a name="l03765"></a><span class="lineno"> 3765</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span></div><div class="line"><a name="l03766"></a><span class="lineno"> 3766</span> <a class="code" href="group__misc.html#ga33bf2635033710b25f931b57ed663e1e">lws_now_secs</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l03767"></a><span class="lineno"> 3767</span> </div><div class="line"><a name="l03777"></a><span class="lineno"> 3777</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws_context * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03778"></a><span class="lineno"> 3778</span> <a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03779"></a><span class="lineno"> 3779</span> </div><div class="line"><a name="l03789"></a><span class="lineno"> 3789</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03790"></a><span class="lineno"> 3790</span> <a class="code" href="group__misc.html#ga629f48268fd1856b54b11172991b97d9">lws_get_count_threads</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l03791"></a><span class="lineno"> 3791</span> </div><div class="line"><a name="l03799"></a><span class="lineno"> 3799</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03800"></a><span class="lineno"> 3800</span> <a class="code" href="group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899">lws_get_parent</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03801"></a><span class="lineno"> 3801</span> </div><div class="line"><a name="l03808"></a><span class="lineno"> 3808</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span>lws * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03809"></a><span class="lineno"> 3809</span> <a class="code" href="group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234">lws_get_child</a>(<span class="keyword">const</span> <span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03810"></a><span class="lineno"> 3810</span> </div><div class="line"><a name="l03811"></a><span class="lineno"> 3811</span> </div><div class="line"><a name="l03812"></a><span class="lineno"> 3812</span> <span class="comment">/*</span></div><div class="line"><a name="l03813"></a><span class="lineno"> 3813</span> <span class="comment"> * \deprecated DEPRECATED Note: this is not normally needed as a user api.</span></div><div class="line"><a name="l03814"></a><span class="lineno"> 3814</span> <span class="comment"> * It's provided in case it is</span></div><div class="line"><a name="l03815"></a><span class="lineno"> 3815</span> <span class="comment"> * useful when integrating with other app poll loop service code.</span></div><div class="line"><a name="l03816"></a><span class="lineno"> 3816</span> <span class="comment"> */</span></div><div class="line"><a name="l03817"></a><span class="lineno"> 3817</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03818"></a><span class="lineno"> 3818</span> lws_read(<span class="keyword">struct</span> lws *wsi, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l03819"></a><span class="lineno"> 3819</span> </div><div class="line"><a name="l03827"></a><span class="lineno"> 3827</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l03828"></a><span class="lineno"> 3828</span> <a class="code" href="group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b">lws_set_allocator</a>(<span class="keywordtype">void</span> *(*realloc)(<span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> size));</div><div class="line"><a name="l03830"></a><span class="lineno"> 3830</span> </div><div class="line"><a name="l03836"></a><span class="lineno"> 3836</span> </div><div class="line"><a name="l03843"></a><span class="lineno"> 3843</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03844"></a><span class="lineno"> 3844</span> <a class="code" href="group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421">lws_send_pipe_choked</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03845"></a><span class="lineno"> 3845</span> </div><div class="line"><a name="l03850"></a><span class="lineno"> 3850</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03851"></a><span class="lineno"> 3851</span> <a class="code" href="group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37">lws_is_final_fragment</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03852"></a><span class="lineno"> 3852</span> </div><div class="line"><a name="l03857"></a><span class="lineno"> 3857</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span></div><div class="line"><a name="l03858"></a><span class="lineno"> 3858</span> <a class="code" href="group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2">lws_get_reserved_bits</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03859"></a><span class="lineno"> 3859</span> </div><div class="line"><a name="l03876"></a><span class="lineno"> 3876</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03877"></a><span class="lineno"> 3877</span> <a class="code" href="group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85">lws_partial_buffered</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03878"></a><span class="lineno"> 3878</span> </div><div class="line"><a name="l03888"></a><span class="lineno"> 3888</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l03889"></a><span class="lineno"> 3889</span> <a class="code" href="group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd">lws_frame_is_binary</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03890"></a><span class="lineno"> 3890</span> </div><div class="line"><a name="l03899"></a><span class="lineno"> 3899</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03900"></a><span class="lineno"> 3900</span> <a class="code" href="group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa">lws_is_ssl</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03905"></a><span class="lineno"> 3905</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03906"></a><span class="lineno"> 3906</span> <a class="code" href="group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1">lws_is_cgi</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l03908"></a><span class="lineno"> 3908</span> </div><div class="line"><a name="l03909"></a><span class="lineno"> 3909</span> </div><div class="line"><a name="l03915"></a><span class="lineno"> 3915</span> <span class="preprocessor">#ifdef LWS_SHA1_USE_OPENSSL_NAME</span></div><div class="line"><a name="l03917"></a><span class="lineno"> 3917</span> <span class="preprocessor">#define lws_SHA1 SHA1</span></div><div class="line"><a name="l03918"></a><span class="lineno"> 3918</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l03919"></a><span class="lineno"> 3919</span> </div><div class="line"><a name="l03928"></a><span class="lineno"> 3928</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l03929"></a><span class="lineno"> 3929</span> <a class="code" href="group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5">lws_SHA1</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *d, <span class="keywordtype">size_t</span> n, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *md);</div><div class="line"><a name="l03930"></a><span class="lineno"> 3930</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03931"></a><span class="lineno"> 3931</span> </div><div class="line"><a name="l03941"></a><span class="lineno"> 3941</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03942"></a><span class="lineno"> 3942</span> <a class="code" href="group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575">lws_b64_encode_string</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">int</span> in_len, <span class="keywordtype">char</span> *out, <span class="keywordtype">int</span> out_size);</div><div class="line"><a name="l03952"></a><span class="lineno"> 3952</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l03953"></a><span class="lineno"> 3953</span> <a class="code" href="group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d">lws_b64_decode_string</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keywordtype">char</span> *out, <span class="keywordtype">int</span> out_size);</div><div class="line"><a name="l03955"></a><span class="lineno"> 3955</span> </div><div class="line"><a name="l03956"></a><span class="lineno"> 3956</span> </div><div class="line"><a name="l03966"></a><span class="lineno"> 3966</span> <span class="preprocessor">#ifdef LWS_WITH_CGI</span></div><div class="line"><a name="l03967"></a><span class="lineno"> 3967</span> <span class="keyword">enum</span> lws_enum_stdinouterr {</div><div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>  LWS_STDIN = 0,</div><div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>  LWS_STDOUT = 1,</div><div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>  LWS_STDERR = 2,</div><div class="line"><a name="l03971"></a><span class="lineno"> 3971</span> };</div><div class="line"><a name="l03972"></a><span class="lineno"> 3972</span> </div><div class="line"><a name="l03973"></a><span class="lineno"> 3973</span> <span class="keyword">enum</span> lws_cgi_hdr_state {</div><div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>  LCHS_HEADER,</div><div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>  LCHS_CR1,</div><div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>  LCHS_LF1,</div><div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>  LCHS_CR2,</div><div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>  LCHS_LF2,</div><div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>  LHCS_PAYLOAD,</div><div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>  LCHS_SINGLE_0A,</div><div class="line"><a name="l03981"></a><span class="lineno"> 3981</span> };</div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span> </div><div class="line"><a name="l03983"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html"> 3983</a></span> <span class="keyword">struct </span><a class="code" href="structlws__cgi__args.html">lws_cgi_args</a> {</div><div class="line"><a name="l03984"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#a4ccc1058e7e914a26eef31ab2ad46aa1"> 3984</a></span>  <span class="keyword">struct </span>lws **<a class="code" href="structlws__cgi__args.html#a4ccc1058e7e914a26eef31ab2ad46aa1">stdwsi</a>; </div><div class="line"><a name="l03985"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#adeee220b29aeacc34632c38e50f0f5a5"> 3985</a></span>  <span class="keyword">enum</span> lws_enum_stdinouterr ch; </div><div class="line"><a name="l03986"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#a8ac842084688c02f3f94694ef700d8f7"> 3986</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code" href="structlws__cgi__args.html#a8ac842084688c02f3f94694ef700d8f7">data</a>; </div><div class="line"><a name="l03987"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#a741c11b9aa05997ec45a3400d7fb7739"> 3987</a></span>  <span class="keyword">enum</span> lws_cgi_hdr_state hdr_state; </div><div class="line"><a name="l03988"></a><span class="lineno"><a class="line" href="structlws__cgi__args.html#a36e5c256433c187bd0eaa9c1ca667f1d"> 3988</a></span>  <span class="keywordtype">int</span> <a class="code" href="structlws__cgi__args.html#a36e5c256433c187bd0eaa9c1ca667f1d">len</a>; </div><div class="line"><a name="l03989"></a><span class="lineno"> 3989</span> };</div><div class="line"><a name="l03990"></a><span class="lineno"> 3990</span> </div><div class="line"><a name="l03991"></a><span class="lineno"> 3991</span> </div><div class="line"><a name="l04001"></a><span class="lineno"> 4001</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l04002"></a><span class="lineno"> 4002</span> <a class="code" href="libwebsockets_8h.html#af52923473c59e643a974d65e12290831">lws_cgi</a>(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> *exec_array,</div><div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>  <span class="keywordtype">int</span> script_uri_path_len, <span class="keywordtype">int</span> timeout_secs,</div><div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a> *mp_cgienv);</div><div class="line"><a name="l04005"></a><span class="lineno"> 4005</span> </div><div class="line"><a name="l04011"></a><span class="lineno"> 4011</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l04012"></a><span class="lineno"> 4012</span> <a class="code" href="libwebsockets_8h.html#a5326d3402af8429a166dd991dc65c4a2">lws_cgi_write_split_stdout_headers</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l04013"></a><span class="lineno"> 4013</span> </div><div class="line"><a name="l04019"></a><span class="lineno"> 4019</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l04020"></a><span class="lineno"> 4020</span> <a class="code" href="libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4">lws_cgi_kill</a>(<span class="keyword">struct</span> lws *wsi);</div><div class="line"><a name="l04021"></a><span class="lineno"> 4021</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l04022"></a><span class="lineno"> 4022</span> </div><div class="line"><a name="l04024"></a><span class="lineno"> 4024</span> </div><div class="line"><a name="l04041"></a><span class="lineno"> 4041</span> </div><div class="line"><a name="l04047"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html"> 4047</a></span> <span class="keyword">struct </span><a class="code" href="structlws__plat__file__ops.html">lws_plat_file_ops</a> {</div><div class="line"><a name="l04048"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#ad37a97abc68d0af967cef874f4d8df32"> 4048</a></span>  lws_filefd_type (*open)(<span class="keyword">struct </span>lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename,</div><div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *filelen, <span class="keywordtype">int</span> flags);</div><div class="line"><a name="l04053"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#a034ec96f2fbaf52b4aa3e82d20795f7b"> 4053</a></span>  int (*close)(<span class="keyword">struct </span>lws *wsi, lws_filefd_type fd);</div><div class="line"><a name="l04055"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#abfcda19b003dcc13c61ff9e2bb4ff869"> 4055</a></span>  <span class="keywordtype">unsigned</span> long (*seek_cur)(<span class="keyword">struct </span>lws *wsi, lws_filefd_type fd,</div><div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>  <span class="keywordtype">long</span> offset_from_cur_pos);</div><div class="line"><a name="l04058"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#a01f483807a9862736b17ba9ed5110c40"> 4058</a></span>  int (*read)(<span class="keyword">struct </span>lws *wsi, lws_filefd_type fd, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *amount,</div><div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> len);</div><div class="line"><a name="l04061"></a><span class="lineno"><a class="line" href="structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793"> 4061</a></span>  int (*write)(<span class="keyword">struct </span>lws *wsi, lws_filefd_type fd, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *amount,</div><div class="line"><a name="l04062"></a><span class="lineno"> 4062</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> len);</div><div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>  <span class="comment">/* Add new things just above here ---^</span></div><div class="line"><a name="l04066"></a><span class="lineno"> 4066</span> <span class="comment"> * This is part of the ABI, don't needlessly break compatibility */</span></div><div class="line"><a name="l04067"></a><span class="lineno"> 4067</span> };</div><div class="line"><a name="l04068"></a><span class="lineno"> 4068</span> </div><div class="line"><a name="l04074"></a><span class="lineno"> 4074</span> LWS_VISIBLE LWS_EXTERN <span class="keyword">struct </span><a class="code" href="structlws__plat__file__ops.html">lws_plat_file_ops</a> * LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l04075"></a><span class="lineno"> 4075</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<span class="keyword">struct</span> lws_context *context);</div><div class="line"><a name="l04076"></a><span class="lineno"> 4076</span> </div><div class="line"><a name="l04085"></a><span class="lineno"> 4085</span> <span class="keyword">static</span> LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l04086"></a><span class="lineno"> 4086</span> lws_plat_file_open(<span class="keyword">struct</span> lws *wsi, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename,</div><div class="line"><a name="l04087"></a><span class="lineno"> 4087</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *filelen, <span class="keywordtype">int</span> flags)</div><div class="line"><a name="l04088"></a><span class="lineno"> 4088</span> {</div><div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#ad37a97abc68d0af967cef874f4d8df32">open</a>(wsi, filename,</div><div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>  filelen, flags);</div><div class="line"><a name="l04091"></a><span class="lineno"> 4091</span> }</div><div class="line"><a name="l04092"></a><span class="lineno"> 4092</span> </div><div class="line"><a name="l04099"></a><span class="lineno"> 4099</span> <span class="keyword">static</span> LWS_INLINE <span class="keywordtype">int</span></div><div class="line"><a name="l04100"></a><span class="lineno"> 4100</span> lws_plat_file_close(<span class="keyword">struct</span> lws *wsi, lws_filefd_type fd)</div><div class="line"><a name="l04101"></a><span class="lineno"> 4101</span> {</div><div class="line"><a name="l04102"></a><span class="lineno"> 4102</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#a034ec96f2fbaf52b4aa3e82d20795f7b">close</a>(wsi, fd);</div><div class="line"><a name="l04103"></a><span class="lineno"> 4103</span> }</div><div class="line"><a name="l04104"></a><span class="lineno"> 4104</span> </div><div class="line"><a name="l04112"></a><span class="lineno"> 4112</span> <span class="keyword">static</span> LWS_INLINE <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span></div><div class="line"><a name="l04113"></a><span class="lineno"> 4113</span> lws_plat_file_seek_cur(<span class="keyword">struct</span> lws *wsi, lws_filefd_type fd, <span class="keywordtype">long</span> offset)</div><div class="line"><a name="l04114"></a><span class="lineno"> 4114</span> {</div><div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#abfcda19b003dcc13c61ff9e2bb4ff869">seek_cur</a>(wsi, fd, offset);</div><div class="line"><a name="l04116"></a><span class="lineno"> 4116</span> }</div><div class="line"><a name="l04126"></a><span class="lineno"> 4126</span> <span class="keyword">static</span> LWS_INLINE <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l04127"></a><span class="lineno"> 4127</span> lws_plat_file_read(<span class="keyword">struct</span> lws *wsi, lws_filefd_type fd, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *amount,</div><div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> len)</div><div class="line"><a name="l04129"></a><span class="lineno"> 4129</span> {</div><div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#a01f483807a9862736b17ba9ed5110c40">read</a>(wsi, fd, amount, buf,</div><div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>  len);</div><div class="line"><a name="l04132"></a><span class="lineno"> 4132</span> }</div><div class="line"><a name="l04142"></a><span class="lineno"> 4142</span> <span class="keyword">static</span> LWS_INLINE <span class="keywordtype">int</span> LWS_WARN_UNUSED_RESULT</div><div class="line"><a name="l04143"></a><span class="lineno"> 4143</span> lws_plat_file_write(<span class="keyword">struct</span> lws *wsi, lws_filefd_type fd, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *amount,</div><div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> len)</div><div class="line"><a name="l04145"></a><span class="lineno"> 4145</span> {</div><div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>  <span class="keywordflow">return</span> <a class="code" href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a>(<a class="code" href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a>(wsi))-><a class="code" href="structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793">write</a>(wsi, fd, amount, buf,</div><div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>  len);</div><div class="line"><a name="l04148"></a><span class="lineno"> 4148</span> }</div><div class="line"><a name="l04150"></a><span class="lineno"> 4150</span> </div><div class="line"><a name="l04182"></a><span class="lineno"> 4182</span> <span class="preprocessor">#ifdef LWS_WITH_SMTP</span></div><div class="line"><a name="l04183"></a><span class="lineno"> 4183</span> </div><div class="line"><a name="l04185"></a><span class="lineno"><a class="line" href="group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0"> 4185</a></span> <span class="keyword">enum</span> <a class="code" href="group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0">lwsgs_smtp_states</a> {</div><div class="line"><a name="l04186"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c"> 4186</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a>, </div><div class="line"><a name="l04187"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933"> 4187</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a>, </div><div class="line"><a name="l04188"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d"> 4188</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a>, </div><div class="line"><a name="l04189"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad"> 4189</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a>, </div><div class="line"><a name="l04190"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab"> 4190</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a>, </div><div class="line"><a name="l04191"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83"> 4191</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a>, </div><div class="line"><a name="l04192"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14"> 4192</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a>, </div><div class="line"><a name="l04193"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69"> 4193</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a>, </div><div class="line"><a name="l04194"></a><span class="lineno"><a class="line" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5"> 4194</a></span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a>, </div><div class="line"><a name="l04195"></a><span class="lineno"> 4195</span> };</div><div class="line"><a name="l04196"></a><span class="lineno"> 4196</span> </div><div class="line"><a name="l04198"></a><span class="lineno"><a class="line" href="structlws__email.html"> 4198</a></span> <span class="keyword">struct </span><a class="code" href="structlws__email.html">lws_email</a> {</div><div class="line"><a name="l04199"></a><span class="lineno"><a class="line" href="structlws__email.html#add1341456045382c183f4c763bdea6bc"> 4199</a></span>  <span class="keywordtype">void</span> *<a class="code" href="structlws__email.html#add1341456045382c183f4c763bdea6bc">data</a>;</div><div class="line"><a name="l04201"></a><span class="lineno"><a class="line" href="structlws__email.html#ab5fbf121195a8e67509c78a42cfbe168"> 4201</a></span>  uv_loop_t *<a class="code" href="structlws__email.html#ab5fbf121195a8e67509c78a42cfbe168">loop</a>;</div><div class="line"><a name="l04204"></a><span class="lineno"><a class="line" href="structlws__email.html#a472ae23fc9fca6599e5c512bc21458d2"> 4204</a></span>  <span class="keywordtype">char</span> email_smtp_ip[32]; </div><div class="line"><a name="l04205"></a><span class="lineno"><a class="line" href="structlws__email.html#a939e5d7ee0339a16de73bde71ab4d4d9"> 4205</a></span>  <span class="keywordtype">char</span> email_helo[32]; </div><div class="line"><a name="l04206"></a><span class="lineno"><a class="line" href="structlws__email.html#af7f0ae934347d81071f63a963301f9e2"> 4206</a></span>  <span class="keywordtype">char</span> email_from[100]; </div><div class="line"><a name="l04207"></a><span class="lineno"><a class="line" href="structlws__email.html#a6453a8b92b3de6d2c2101af3edce685e"> 4207</a></span>  <span class="keywordtype">char</span> email_to[100]; </div><div class="line"><a name="l04209"></a><span class="lineno"><a class="line" href="structlws__email.html#a7bbc1964889c984b3da723c86a210e05"> 4209</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlws__email.html#a7bbc1964889c984b3da723c86a210e05">max_content_size</a>;</div><div class="line"><a name="l04212"></a><span class="lineno"> 4212</span>  <span class="comment">/* Fill all the callbacks before init */</span></div><div class="line"><a name="l04213"></a><span class="lineno"> 4213</span> </div><div class="line"><a name="l04214"></a><span class="lineno"><a class="line" href="structlws__email.html#ad8dc60353ee246d84dd59ec0591e9719"> 4214</a></span>  int (*on_next)(<span class="keyword">struct </span><a class="code" href="structlws__email.html">lws_email</a> *email);</div><div class="line"><a name="l04219"></a><span class="lineno"><a class="line" href="structlws__email.html#a39ef6263d58eb40cca417c8697b227d8"> 4219</a></span>  int (*<a class="code" href="structlws__email.html#a39ef6263d58eb40cca417c8697b227d8">on_sent</a>)(<span class="keyword">struct </span><a class="code" href="structlws__email.html">lws_email</a> *email);</div><div class="line"><a name="l04224"></a><span class="lineno"><a class="line" href="structlws__email.html#a2aff78c8e04db243052aa91b4d87e987"> 4224</a></span>  int (*<a class="code" href="structlws__email.html#a2aff78c8e04db243052aa91b4d87e987">on_get_body</a>)(<span class="keyword">struct </span><a class="code" href="structlws__email.html">lws_email</a> *email, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> len);</div><div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>  <span class="comment">/* private things */</span></div><div class="line"><a name="l04231"></a><span class="lineno"><a class="line" href="structlws__email.html#a77723e2f2b940b1c879ef5e1cd88c2be"> 4231</a></span>  uv_timer_t <a class="code" href="structlws__email.html#a77723e2f2b940b1c879ef5e1cd88c2be">timeout_email</a>; </div><div class="line"><a name="l04232"></a><span class="lineno"><a class="line" href="structlws__email.html#ac6115d3cbef2e8bac62cc00895bf5fd3"> 4232</a></span>  <span class="keyword">enum</span> <a class="code" href="group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0">lwsgs_smtp_states</a> <a class="code" href="structlws__email.html#ac6115d3cbef2e8bac62cc00895bf5fd3">estate</a>; </div><div class="line"><a name="l04233"></a><span class="lineno"><a class="line" href="structlws__email.html#a5f53d4c5a1e34b0dcaa8787e2eabb1b3"> 4233</a></span>  uv_connect_t <a class="code" href="structlws__email.html#a5f53d4c5a1e34b0dcaa8787e2eabb1b3">email_connect_req</a>; </div><div class="line"><a name="l04234"></a><span class="lineno"><a class="line" href="structlws__email.html#a01f31934166dc6d01e8a375012f8ad1e"> 4234</a></span>  uv_tcp_t <a class="code" href="structlws__email.html#a01f31934166dc6d01e8a375012f8ad1e">email_client</a>; </div><div class="line"><a name="l04235"></a><span class="lineno"><a class="line" href="structlws__email.html#a9747ca85597788c2d118d287df47b7c1"> 4235</a></span>  time_t <a class="code" href="structlws__email.html#a9747ca85597788c2d118d287df47b7c1">email_connect_started</a>; </div><div class="line"><a name="l04236"></a><span class="lineno"><a class="line" href="structlws__email.html#a8f34ec0643a817be67ef4276aeb7fb82"> 4236</a></span>  <span class="keywordtype">char</span> <a class="code" href="structlws__email.html#a8f34ec0643a817be67ef4276aeb7fb82">email_buf</a>[256]; </div><div class="line"><a name="l04237"></a><span class="lineno"><a class="line" href="structlws__email.html#a6fff03c5a5d369a2aa3cab0c897b1bed"> 4237</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structlws__email.html#a6fff03c5a5d369a2aa3cab0c897b1bed">content</a>; </div><div class="line"><a name="l04238"></a><span class="lineno"> 4238</span> };</div><div class="line"><a name="l04239"></a><span class="lineno"> 4239</span> </div><div class="line"><a name="l04249"></a><span class="lineno"> 4249</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">int</span></div><div class="line"><a name="l04250"></a><span class="lineno"> 4250</span> <a class="code" href="group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29">lws_email_init</a>(<span class="keyword">struct</span> <a class="code" href="structlws__email.html">lws_email</a> *email, uv_loop_t *<a class="code" href="structlws__email.html#ab5fbf121195a8e67509c78a42cfbe168">loop</a>, <span class="keywordtype">int</span> max_content);</div><div class="line"><a name="l04251"></a><span class="lineno"> 4251</span> </div><div class="line"><a name="l04260"></a><span class="lineno"> 4260</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l04261"></a><span class="lineno"> 4261</span> <a class="code" href="group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb">lws_email_check</a>(<span class="keyword">struct</span> <a class="code" href="structlws__email.html">lws_email</a> *email);</div><div class="line"><a name="l04269"></a><span class="lineno"> 4269</span> LWS_VISIBLE LWS_EXTERN <span class="keywordtype">void</span></div><div class="line"><a name="l04270"></a><span class="lineno"> 4270</span> <a class="code" href="group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2">lws_email_destroy</a>(<span class="keyword">struct</span> <a class="code" href="structlws__email.html">lws_email</a> *email);</div><div class="line"><a name="l04271"></a><span class="lineno"> 4271</span> </div><div class="line"><a name="l04272"></a><span class="lineno"> 4272</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l04273"></a><span class="lineno"> 4273</span> </div><div class="line"><a name="l04274"></a><span class="lineno"> 4274</span> </div><div class="line"><a name="l04275"></a><span class="lineno"> 4275</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l04276"></a><span class="lineno"> 4276</span> }</div><div class="line"><a name="l04277"></a><span class="lineno"> 4277</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l04278"></a><span class="lineno"> 4278</span> </div><div class="line"><a name="l04279"></a><span class="lineno"> 4279</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="group__form-parsing_html_gaaa482f07dad3f04b391cccf0a814e13b"><div class="ttname"><a href="group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b">lws_spa_destroy</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_spa_destroy(struct lws_spa *spa)</div></div> <div class="ttc" id="group__pur_html_gab15187efcfa256b7c928562c182b92a3"><div class="ttname"><a href="group__pur.html#gab15187efcfa256b7c928562c182b92a3">lws_json_purify</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const char * lws_json_purify(char *escaped, const char *string, int len)</div></div> -<div class="ttc" id="structlws__cgi__args_html"><div class="ttname"><a href="structlws__cgi__args.html">lws_cgi_args</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3944</div></div> +<div class="ttc" id="structlws__cgi__args_html"><div class="ttname"><a href="structlws__cgi__args.html">lws_cgi_args</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3983</div></div> <div class="ttc" id="structlws__protocols_html_a0d1d4996d81b2f5e125bcec981e461c5"><div class="ttname"><a href="structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5">lws_protocols::rx_buffer_size</a></div><div class="ttdeci">size_t rx_buffer_size</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1294</div></div> <div class="ttc" id="group__form-parsing_html_ga162f86762173a2bc8c28497941d74815"><div class="ttname"><a href="group__form-parsing.html#ga162f86762173a2bc8c28497941d74815">lws_spa_create</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws_spa * lws_spa_create(struct lws *wsi, const char *const *param_names, int count_params, int max_storage, lws_spa_fileupload_cb opt_cb, void *opt_data)</div></div> <div class="ttc" id="group__context-and-vhost_html_ga8db03e19a372e34ac25cf21af894a02c"><div class="ttname"><a href="group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c">lws_vhost_get</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED</div></div> @@ -74,16 +74,16 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6">LWS_CALLBACK_FILTER_NETWORK_CONNECTION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:770</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e">LWS_CALLBACK_WSI_DESTROY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:898</div></div> <div class="ttc" id="group__misc_html_gace5171b1dbbc03ec89a98f8afdb5c9af"><div class="ttname"><a href="group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af">lws_daemonize</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1930</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3202</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4149</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1966</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3241</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4188</div></div> <div class="ttc" id="group__sock-adopt_html_gab2d045df0f81afe00891aaed312d552b"><div class="ttname"><a href="group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b">lws_adopt_socket_readbuf</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd, const char *readbuf, size_t len)</div></div> <div class="ttc" id="structlws__polarssl__context_html"><div class="ttname"><a href="structlws__polarssl__context.html">lws_polarssl_context</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:236</div></div> -<div class="ttc" id="structlws__http__mount_html_a614364c770b0bd4db464ad65cddab477"><div class="ttname"><a href="structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477">lws_http_mount::auth_mask</a></div><div class="ttdeci">unsigned int auth_mask</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1965</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3225</div></div> -<div class="ttc" id="structlws__email_html_add1341456045382c183f4c763bdea6bc"><div class="ttname"><a href="structlws__email.html#add1341456045382c183f4c763bdea6bc">lws_email::data</a></div><div class="ttdeci">void * data</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4160</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a03c305fdca809667b6a9a83b3edfd83a"><div class="ttname"><a href="structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a">lws_client_connect_info::uri_replace_from</a></div><div class="ttdeci">const char * uri_replace_from</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2043</div></div> -<div class="ttc" id="structlws__plat__file__ops_html_a1fae8330ee94649a3551e31a30809793"><div class="ttname"><a href="structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793">lws_plat_file_ops::write</a></div><div class="ttdeci">int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4022</div></div> +<div class="ttc" id="structlws__http__mount_html_a614364c770b0bd4db464ad65cddab477"><div class="ttname"><a href="structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477">lws_http_mount::auth_mask</a></div><div class="ttdeci">unsigned int auth_mask</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2001</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3264</div></div> +<div class="ttc" id="structlws__email_html_add1341456045382c183f4c763bdea6bc"><div class="ttname"><a href="structlws__email.html#add1341456045382c183f4c763bdea6bc">lws_email::data</a></div><div class="ttdeci">void * data</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4199</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a03c305fdca809667b6a9a83b3edfd83a"><div class="ttname"><a href="structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a">lws_client_connect_info::uri_replace_from</a></div><div class="ttdeci">const char * uri_replace_from</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2079</div></div> +<div class="ttc" id="structlws__plat__file__ops_html_a1fae8330ee94649a3551e31a30809793"><div class="ttname"><a href="structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793">lws_plat_file_ops::write</a></div><div class="ttdeci">int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4061</div></div> <div class="ttc" id="group__usercb_html_gad62860e19975ba4c4af401c3cdb6abf7"><div class="ttname"><a href="group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7">lws_callback_reasons</a></div><div class="ttdeci">lws_callback_reasons</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:663</div></div> <div class="ttc" id="group__HTTP-headers-read_html_gaa427cad61a9a5e3004afd65c4527b5e9"><div class="ttname"><a href="group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9">lws_hdr_copy_fragment</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len, enum lws_token_indexes h, int frag_idx)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c">LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:813</div></div> @@ -103,77 +103,78 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="group__callback-when-writeable_html_gac4643fe16b0940ae5b68b4ee6195cbde"><div class="ttname"><a href="group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde">lws_get_peer_write_allowance</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN size_t lws_get_peer_write_allowance(struct lws *wsi)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e">LWS_CALLBACK_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:747</div></div> <div class="ttc" id="group__misc_html_gac6abfc0b2bd5b2f09281a4432bb2f5f0"><div class="ttname"><a href="group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0">lws_get_library_version</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_get_library_version(void)</div></div> -<div class="ttc" id="structlws__email_html_a39ef6263d58eb40cca417c8697b227d8"><div class="ttname"><a href="structlws__email.html#a39ef6263d58eb40cca417c8697b227d8">lws_email::on_sent</a></div><div class="ttdeci">int(* on_sent)(struct lws_email *email)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4180</div></div> +<div class="ttc" id="structlws__email_html_a39ef6263d58eb40cca417c8697b227d8"><div class="ttname"><a href="structlws__email.html#a39ef6263d58eb40cca417c8697b227d8">lws_email::on_sent</a></div><div class="ttdeci">int(* on_sent)(struct lws_email *email)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4219</div></div> <div class="ttc" id="structlwsgw__hash__bin_html"><div class="ttname"><a href="structlwsgw__hash__bin.html">lwsgw_hash_bin</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1434</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a065063b5117ecd0a59567c97f04bda2e"><div class="ttname"><a href="structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e">lws_client_connect_info::pwsi</a></div><div class="ttdeci">struct lws ** pwsi</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2050</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a065063b5117ecd0a59567c97f04bda2e"><div class="ttname"><a href="structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e">lws_client_connect_info::pwsi</a></div><div class="ttdeci">struct lws ** pwsi</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2086</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c">LWS_CALLBACK_FILTER_HTTP_CONNECTION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:781</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a76a8388733f114fb8fd3643874781185"><div class="ttname"><a href="structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185">lws_client_connect_info::path</a></div><div class="ttdeci">const char * path</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2022</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a76a8388733f114fb8fd3643874781185"><div class="ttname"><a href="structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185">lws_client_connect_info::path</a></div><div class="ttdeci">const char * path</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2058</div></div> <div class="ttc" id="libwebsockets_8h_html_a72fe65e83b8bb03f904a1a256c673536"><div class="ttname"><a href="libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536">lws_remaining_packet_payload</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050">LWS_CLOSE_STATUS_INVALID_PAYLOAD</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:582</div></div> <div class="ttc" id="structlws__plugin__capability_html"><div class="ttname"><a href="structlws__plugin__capability.html">lws_plugin_capability</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1390</div></div> <div class="ttc" id="group__extensions_html_ga6fb3e2c3dfb9d64dc87026a4e99c128b"><div class="ttname"><a href="group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b">lws_ext_parse_options</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi, void *ext_user, const struct lws_ext_options *opts, const char *o, int len)</div></div> -<div class="ttc" id="structlws__email_html_a9747ca85597788c2d118d287df47b7c1"><div class="ttname"><a href="structlws__email.html#a9747ca85597788c2d118d287df47b7c1">lws_email::email_connect_started</a></div><div class="ttdeci">time_t email_connect_started</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4196</div></div> +<div class="ttc" id="structlws__email_html_a9747ca85597788c2d118d287df47b7c1"><div class="ttname"><a href="structlws__email.html#a9747ca85597788c2d118d287df47b7c1">lws_email::email_connect_started</a></div><div class="ttdeci">time_t email_connect_started</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4235</div></div> <div class="ttc" id="group__wsclose_html_gae399c571df32ba532c0ca67da9284985"><div class="ttname"><a href="group__wsclose.html#gae399c571df32ba532c0ca67da9284985">lws_close_status</a></div><div class="ttdeci">lws_close_status</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:553</div></div> <div class="ttc" id="group__callback-when-writeable_html_gacf04bbe089f47c971c6408c5efe2ac70"><div class="ttname"><a href="group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70">lws_callback_all_protocol</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8">LWS_CLOSE_STATUS_MESSAGE_TOO_LARGE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:593</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092">LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1494</div></div> -<div class="ttc" id="structlws__tokens_html_a855b7375d1d58516c0ecd4b60e9a7766"><div class="ttname"><a href="structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766">lws_tokens::token_len</a></div><div class="ttdeci">int token_len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2530</div></div> +<div class="ttc" id="structlws__tokens_html_a855b7375d1d58516c0ecd4b60e9a7766"><div class="ttname"><a href="structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766">lws_tokens::token_len</a></div><div class="ttdeci">int token_len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2566</div></div> <div class="ttc" id="structlws__context__creation__info_html_a13ffbb0d010309669611f8c4eda7d7f8"><div class="ttname"><a href="structlws__context__creation__info.html#a13ffbb0d010309669611f8c4eda7d7f8">lws_context_creation_info::mounts</a></div><div class="ttdeci">const struct lws_http_mount * mounts</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1675</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768">LWS_CALLBACK_DEL_POLL_FD</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:922</div></div> <div class="ttc" id="group__misc_html_ga0af4f7d2dd375aeedcfa7eb0e1101c4b"><div class="ttname"><a href="group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b">lws_get_context</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)</div></div> -<div class="ttc" id="structlws__protocol__vhost__options_html_a0640a92513c70ee6b9b295a9ad1658e7"><div class="ttname"><a href="structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7">lws_protocol_vhost_options::value</a></div><div class="ttdeci">const char * value</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1919</div></div> -<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2850</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4154</div></div> +<div class="ttc" id="structlws__protocol__vhost__options_html_a0640a92513c70ee6b9b295a9ad1658e7"><div class="ttname"><a href="structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7">lws_protocol_vhost_options::value</a></div><div class="ttdeci">const char * value</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1955</div></div> +<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2886</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4193</div></div> <div class="ttc" id="structlws__gs__event__args_html_a2bec693d8a43730d487004a44326178b"><div class="ttname"><a href="structlws__gs__event__args.html#a2bec693d8a43730d487004a44326178b">lws_gs_event_args::username</a></div><div class="ttdeci">const char * username</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1465</div></div> <div class="ttc" id="group__client_html_ga0c966136905f467816307cfba6deb5fd"><div class="ttname"><a href="group__client.html#ga0c966136905f467816307cfba6deb5fd">lws_client_connect_via_info</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)</div></div> -<div class="ttc" id="structlws__http__mount_html_a05347d92c3d379809564bd4f3eab259b"><div class="ttname"><a href="structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b">lws_http_mount::protocol</a></div><div class="ttdeci">const char * protocol</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1949</div></div> -<div class="ttc" id="structlws__cgi__args_html_a4ccc1058e7e914a26eef31ab2ad46aa1"><div class="ttname"><a href="structlws__cgi__args.html#a4ccc1058e7e914a26eef31ab2ad46aa1">lws_cgi_args::stdwsi</a></div><div class="ttdeci">struct lws ** stdwsi</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3945</div></div> +<div class="ttc" id="structlws__http__mount_html_a05347d92c3d379809564bd4f3eab259b"><div class="ttname"><a href="structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b">lws_http_mount::protocol</a></div><div class="ttdeci">const char * protocol</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1985</div></div> +<div class="ttc" id="structlws__cgi__args_html_a4ccc1058e7e914a26eef31ab2ad46aa1"><div class="ttname"><a href="structlws__cgi__args.html#a4ccc1058e7e914a26eef31ab2ad46aa1">lws_cgi_args::stdwsi</a></div><div class="ttdeci">struct lws ** stdwsi</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3984</div></div> <div class="ttc" id="group__context-and-vhost_html_ga94e6cc2223c4eec316b13bcebc3628b6"><div class="ttname"><a href="group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6">lws_json_dump_vhost</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e">LWS_CALLBACK_CONFIRM_EXTENSION_OKAY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:868</div></div> <div class="ttc" id="group__httpft_html_gab4da87a4800413f15e7aba649fb1d77c"><div class="ttname"><a href="group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c">lws_get_mimetype</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)</div></div> <div class="ttc" id="structlwsgw__hash_html"><div class="ttname"><a href="structlwsgw__hash.html">lwsgw_hash</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1436</div></div> -<div class="ttc" id="structlws__http__mount_html_a4283e30ea89d27ae7d061ad760d1d146"><div class="ttname"><a href="structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146">lws_http_mount::cache_max_age</a></div><div class="ttdeci">int cache_max_age</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1963</div></div> +<div class="ttc" id="structlws__http__mount_html_a4283e30ea89d27ae7d061ad760d1d146"><div class="ttname"><a href="structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146">lws_http_mount::cache_max_age</a></div><div class="ttdeci">int cache_max_age</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1999</div></div> <div class="ttc" id="structlws__context__creation__info_html_adb0bc0b28cd7d90ab306723d8ffa96fa"><div class="ttname"><a href="structlws__context__creation__info.html#adb0bc0b28cd7d90ab306723d8ffa96fa">lws_context_creation_info::ssl_options_clear</a></div><div class="ttdeci">long ssl_options_clear</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1693</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae">LWS_CALLBACK_HTTP_BODY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:761</div></div> <div class="ttc" id="structlws__context__creation__info_html"><div class="ttname"><a href="structlws__context__creation__info.html">lws_context_creation_info</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1561</div></div> <div class="ttc" id="group__context-and-vhost_html_ga8ee0314028755f1ddfa9428e09b4fddb"><div class="ttname"><a href="group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb">lws_context_destroy</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390">LWS_CLOSE_STATUS_TLS_FAILURE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:609</div></div> -<div class="ttc" id="structlws__process__html__state_html_af0732884ef891e24fe5fa237ebaa21a3"><div class="ttname"><a href="structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3">lws_process_html_state::start</a></div><div class="ttdeci">char * start</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2469</div></div> +<div class="ttc" id="structlws__process__html__state_html_af0732884ef891e24fe5fa237ebaa21a3"><div class="ttname"><a href="structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3">lws_process_html_state::start</a></div><div class="ttdeci">char * start</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2505</div></div> <div class="ttc" id="group__misc_html_gab321ed812f46f6dc7ef9e3ca6f00cf1b"><div class="ttname"><a href="group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b">lws_set_allocator</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))</div></div> <div class="ttc" id="structlws__protocols_html_acabf94c1a9bfe7be0387fbb0e0c56b2d"><div class="ttname"><a href="structlws__protocols.html#acabf94c1a9bfe7be0387fbb0e0c56b2d">lws_protocols::callback</a></div><div class="ttdeci">lws_callback_function * callback</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1285</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3192</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3231</div></div> +<div class="ttc" id="group__context-and-vhost_html_ga1863f0a15ab9da0f07be7bd66230d232"><div class="ttname"><a href="group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232">lws_context_deprecate</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_context_deprecate(struct lws_context *context, lws_reload_func cb)</div></div> <div class="ttc" id="group__callback-when-writeable_html_gaa709e02a10558753c851e58f1e2c16ba"><div class="ttname"><a href="group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba">lws_get_socket_fd</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51">LWS_CALLBACK_WS_PEER_INITIATED_CLOSE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:959</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b">LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:951</div></div> -<div class="ttc" id="structlws__client__connect__info_html_aba35adfb74845a5fd0c3dc141cbdddd2"><div class="ttname"><a href="structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2">lws_client_connect_info::protocol</a></div><div class="ttdeci">const char * protocol</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2028</div></div> +<div class="ttc" id="structlws__client__connect__info_html_aba35adfb74845a5fd0c3dc141cbdddd2"><div class="ttname"><a href="structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2">lws_client_connect_info::protocol</a></div><div class="ttdeci">const char * protocol</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2064</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79">LWS_CALLBACK_UNLOCK_POLL</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:948</div></div> <div class="ttc" id="structlws__context__creation__info_html_a57f88c0745adbd1d6b9b619b8de30209"><div class="ttname"><a href="structlws__context__creation__info.html#a57f88c0745adbd1d6b9b619b8de30209">lws_context_creation_info::pt_serv_buf_size</a></div><div class="ttdeci">unsigned int pt_serv_buf_size</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1680</div></div> <div class="ttc" id="group__sock-adopt_html_gabe71b7462afb21c767bdc67334f305af"><div class="ttname"><a href="group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af">lws_adopt_socket</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)</div></div> -<div class="ttc" id="structlws__process__html__args_html_a754513f2311241cabb0cd1c90d7307ef"><div class="ttname"><a href="structlws__process__html__args.html#a754513f2311241cabb0cd1c90d7307ef">lws_process_html_args::len</a></div><div class="ttdeci">int len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2461</div></div> +<div class="ttc" id="structlws__process__html__args_html_a754513f2311241cabb0cd1c90d7307ef"><div class="ttname"><a href="structlws__process__html__args.html#a754513f2311241cabb0cd1c90d7307ef">lws_process_html_args::len</a></div><div class="ttdeci">int len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2497</div></div> <div class="ttc" id="structlws__context__creation__info_html_ac583ce92b8e1c949cb6fef6bfe713d56"><div class="ttname"><a href="structlws__context__creation__info.html#ac583ce92b8e1c949cb6fef6bfe713d56">lws_context_creation_info::ka_time</a></div><div class="ttdeci">int ka_time</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1616</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93">LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1510</div></div> <div class="ttc" id="group__callback-when-writeable_html_gabbe4655c7eeb3eb1671b2323ec6b3107"><div class="ttname"><a href="group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107">lws_callback_on_writable_all_protocol</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)</div></div> <div class="ttc" id="group__log_html_ga244647f9e1bf0097ccdde66d74f41e26"><div class="ttname"><a href="group__log.html#ga244647f9e1bf0097ccdde66d74f41e26">lws_set_log_level</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_set_log_level(int level, void(*log_emit_function)(int level, const char *line))</div></div> <div class="ttc" id="structlws__context__creation__info_html_a33a1a25a7df3793f59047e20dd580078"><div class="ttname"><a href="structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078">lws_context_creation_info::ws_ping_pong_interval</a></div><div class="ttdeci">unsigned short ws_ping_pong_interval</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1695</div></div> <div class="ttc" id="structlws__plugin__capability_html_abcf51db969522fdda9aaf902e65739d3"><div class="ttname"><a href="structlws__plugin__capability.html#abcf51db969522fdda9aaf902e65739d3">lws_plugin_capability::count_extensions</a></div><div class="ttdeci">int count_extensions</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1395</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3196</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a1af124d81c3c22a46d39387c5bc3d6b9"><div class="ttname"><a href="structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9">lws_client_connect_info::port</a></div><div class="ttdeci">int port</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2018</div></div> -<div class="ttc" id="structlws__client__connect__info_html_afe999d133cc240a0bfd02aade0514cfd"><div class="ttname"><a href="structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd">lws_client_connect_info::context</a></div><div class="ttdeci">struct lws_context * context</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2014</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3235</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a1af124d81c3c22a46d39387c5bc3d6b9"><div class="ttname"><a href="structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9">lws_client_connect_info::port</a></div><div class="ttdeci">int port</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2054</div></div> +<div class="ttc" id="structlws__client__connect__info_html_afe999d133cc240a0bfd02aade0514cfd"><div class="ttname"><a href="structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd">lws_client_connect_info::context</a></div><div class="ttdeci">struct lws_context * context</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2050</div></div> <div class="ttc" id="group__generic-sessions_html_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887"><div class="ttname"><a href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887">LWSGS_AUTH_VERIFIED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1442</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a69abb5aeed755750b9755e5c91db6895"><div class="ttname"><a href="structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895">lws_client_connect_info::ietf_version_or_minus_one</a></div><div class="ttdeci">int ietf_version_or_minus_one</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2030</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a69abb5aeed755750b9755e5c91db6895"><div class="ttname"><a href="structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895">lws_client_connect_info::ietf_version_or_minus_one</a></div><div class="ttdeci">int ietf_version_or_minus_one</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2066</div></div> <div class="ttc" id="group__callback-when-writeable_html_ga13c984d8c5a44a745fd02bc2fba36053"><div class="ttname"><a href="group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053">lws_callback_all_protocol_vhost</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4147</div></div> -<div class="ttc" id="structlws__protocol__vhost__options_html"><div class="ttname"><a href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1915</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4186</div></div> +<div class="ttc" id="structlws__protocol__vhost__options_html"><div class="ttname"><a href="structlws__protocol__vhost__options.html">lws_protocol_vhost_options</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1951</div></div> <div class="ttc" id="group__callback-when-writeable_html_ga941caaa468bc507b1cae52275f58800d"><div class="ttname"><a href="group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d">lws_callback_on_writable</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)</div></div> -<div class="ttc" id="structlws__process__html__state_html_a3b113e00c03a2fded51b1c85ff5bf077"><div class="ttname"><a href="structlws__process__html__state.html#a3b113e00c03a2fded51b1c85ff5bf077">lws_process_html_state::vars</a></div><div class="ttdeci">const char *const * vars</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2473</div></div> +<div class="ttc" id="structlws__process__html__state_html_a3b113e00c03a2fded51b1c85ff5bf077"><div class="ttname"><a href="structlws__process__html__state.html#a3b113e00c03a2fded51b1c85ff5bf077">lws_process_html_state::vars</a></div><div class="ttdeci">const char *const * vars</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2509</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98">LWS_CLOSE_STATUS_PROTOCOL_ERR</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:561</div></div> -<div class="ttc" id="structlws__client__connect__info_html"><div class="ttname"><a href="structlws__client__connect__info.html">lws_client_connect_info</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2013</div></div> +<div class="ttc" id="structlws__client__connect__info_html"><div class="ttname"><a href="structlws__client__connect__info.html">lws_client_connect_info</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2049</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd">LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1540</div></div> <div class="ttc" id="group__extensions_html_gaae7169b2cd346b34fa33d0250db2afd0"><div class="ttname"><a href="group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0">lws_extension_callback_function</a></div><div class="ttdeci">int lws_extension_callback_function(struct lws_context *context, const struct lws_extension *ext, struct lws *wsi, enum lws_extension_callback_reasons reason, void *user, void *in, size_t len)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1185</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46">LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:879</div></div> <div class="ttc" id="structlws__ext__option__arg_html_af37f0b6caa7735af51a1ac12b68d5bc5"><div class="ttname"><a href="structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5">lws_ext_option_arg::len</a></div><div class="ttdeci">int len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1121</div></div> -<div class="ttc" id="structlws__http__mount_html"><div class="ttname"><a href="structlws__http__mount.html">lws_http_mount</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1940</div></div> -<div class="ttc" id="structlws__http__mount_html_ae90d1efe7178199fad39de2926902ee4"><div class="ttname"><a href="structlws__http__mount.html#ae90d1efe7178199fad39de2926902ee4">lws_http_mount::def</a></div><div class="ttdeci">const char * def</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1947</div></div> +<div class="ttc" id="structlws__http__mount_html"><div class="ttname"><a href="structlws__http__mount.html">lws_http_mount</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1976</div></div> +<div class="ttc" id="structlws__http__mount_html_ae90d1efe7178199fad39de2926902ee4"><div class="ttname"><a href="structlws__http__mount.html#ae90d1efe7178199fad39de2926902ee4">lws_http_mount::def</a></div><div class="ttdeci">const char * def</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1983</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8">LWS_CALLBACK_CLOSED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:722</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada">LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1522</div></div> <div class="ttc" id="group__context-and-vhost_html_ga41c2d763f78cc248df3b9f8645dbd2a5"><div class="ttname"><a href="group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5">lws_context_options</a></div><div class="ttdeci">lws_context_options</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1493</div></div> @@ -182,29 +183,30 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e">LWS_SERVER_OPTION_EXPLICIT_VHOSTS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1528</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49">LWS_CALLBACK_PROTOCOL_INIT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:888</div></div> <div class="ttc" id="structlws__ext__option__arg_html_a0a320c56b79271b8f059eeaad9423ac9"><div class="ttname"><a href="structlws__ext__option__arg.html#a0a320c56b79271b8f059eeaad9423ac9">lws_ext_option_arg::option_name</a></div><div class="ttdeci">const char * option_name</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1118</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1928</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1964</div></div> <div class="ttc" id="structlws__pollargs_html_af14a48ef4e78128aef9a76902b104a81"><div class="ttname"><a href="structlws__pollargs.html#af14a48ef4e78128aef9a76902b104a81">lws_pollargs::fd</a></div><div class="ttdeci">lws_sockfd_type fd</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:531</div></div> +<div class="ttc" id="group__context-and-vhost_html_ga1dce5453d72a2037051aba5410e18135"><div class="ttname"><a href="group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135">lws_json_dump_context</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len, int hide_vhosts)</div></div> <div class="ttc" id="structlws__context__creation__info_html_af3fb447be15c4fcb01d3285a6678ab54"><div class="ttname"><a href="structlws__context__creation__info.html#af3fb447be15c4fcb01d3285a6678ab54">lws_context_creation_info::ssl_private_key_password</a></div><div class="ttdeci">const char * ssl_private_key_password</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1584</div></div> <div class="ttc" id="structpollfd_html_ac9b2f2c5b1f9a7487eb57e67cd4960ef"><div class="ttname"><a href="structpollfd.html#ac9b2f2c5b1f9a7487eb57e67cd4960ef">pollfd::events</a></div><div class="ttdeci">short events</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:433</div></div> <div class="ttc" id="structlws__plugin_html"><div class="ttname"><a href="structlws__plugin.html">lws_plugin</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1403</div></div> <div class="ttc" id="structlws__plugin__capability_html_a7936f0eb93d79dea76b903d0f8a5f623"><div class="ttname"><a href="structlws__plugin__capability.html#a7936f0eb93d79dea76b903d0f8a5f623">lws_plugin_capability::extensions</a></div><div class="ttdeci">const struct lws_extension * extensions</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1394</div></div> -<div class="ttc" id="structlws__http__mount_html_a0109baf93f23c07c824c997c3533ee44"><div class="ttname"><a href="structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44">lws_http_mount::mount_next</a></div><div class="ttdeci">const struct lws_http_mount * mount_next</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1941</div></div> +<div class="ttc" id="structlws__http__mount_html_a0109baf93f23c07c824c997c3533ee44"><div class="ttname"><a href="structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44">lws_http_mount::mount_next</a></div><div class="ttdeci">const struct lws_http_mount * mount_next</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1977</div></div> <div class="ttc" id="group__timeout_html_gaced9f9237f6172fed9f730a2af51345a"><div class="ttname"><a href="group__timeout.html#gaced9f9237f6172fed9f730a2af51345a">lws_set_timeout</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a9831b9f9ab54a1aec4bb15324f1c3836"><div class="ttname"><a href="structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836">lws_client_connect_info::userdata</a></div><div class="ttdeci">void * userdata</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2032</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a9831b9f9ab54a1aec4bb15324f1c3836"><div class="ttname"><a href="structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836">lws_client_connect_info::userdata</a></div><div class="ttdeci">void * userdata</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2068</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604">LWS_CALLBACK_CLIENT_ESTABLISHED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:719</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412">LWS_CALLBACK_ADD_POLL_FD</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:906</div></div> <div class="ttc" id="group__service_html_ga9b3cc4473fd8848e5bbee7f310712939"><div class="ttname"><a href="group__service.html#ga9b3cc4473fd8848e5bbee7f310712939">lws_service_tsi</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)</div></div> -<div class="ttc" id="structlws__cgi__args_html_a8ac842084688c02f3f94694ef700d8f7"><div class="ttname"><a href="structlws__cgi__args.html#a8ac842084688c02f3f94694ef700d8f7">lws_cgi_args::data</a></div><div class="ttdeci">unsigned char * data</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3947</div></div> -<div class="ttc" id="structlws__http__mount_html_a4437423df85ee3dbcae0e15974c89ec7"><div class="ttname"><a href="structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7">lws_http_mount::extra_mimetypes</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * extra_mimetypes</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1956</div></div> +<div class="ttc" id="structlws__cgi__args_html_a8ac842084688c02f3f94694ef700d8f7"><div class="ttname"><a href="structlws__cgi__args.html#a8ac842084688c02f3f94694ef700d8f7">lws_cgi_args::data</a></div><div class="ttdeci">unsigned char * data</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3986</div></div> +<div class="ttc" id="structlws__http__mount_html_a4437423df85ee3dbcae0e15974c89ec7"><div class="ttname"><a href="structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7">lws_http_mount::extra_mimetypes</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * extra_mimetypes</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1992</div></div> <div class="ttc" id="group__HTTP-headers-create_html_ga4887605ff2242a54db3a7fa01f6f864b"><div class="ttname"><a href="group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b">lws_finalize_http_header</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_finalize_http_header(struct lws *wsi, unsigned char **p, unsigned char *end)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2">LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:712</div></div> <div class="ttc" id="group__urlendec_html_gabc2888476e50e001c875c1a8abf455b7"><div class="ttname"><a href="group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7">lws_urlencode</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3">LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:793</div></div> -<div class="ttc" id="structlws__email_html_ab5fbf121195a8e67509c78a42cfbe168"><div class="ttname"><a href="structlws__email.html#ab5fbf121195a8e67509c78a42cfbe168">lws_email::loop</a></div><div class="ttdeci">uv_loop_t * loop</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4162</div></div> +<div class="ttc" id="structlws__email_html_ab5fbf121195a8e67509c78a42cfbe168"><div class="ttname"><a href="structlws__email.html#ab5fbf121195a8e67509c78a42cfbe168">lws_email::loop</a></div><div class="ttdeci">uv_loop_t * loop</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4201</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa">LWS_CALLBACK_PROTOCOL_DESTROY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:891</div></div> <div class="ttc" id="classlws__conn__listener_html"><div class="ttname"><a href="classlws__conn__listener.html">lws_conn_listener</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:72</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3228</div></div> -<div class="ttc" id="structlws__process__html__state_html_a53234f2948812c7208a256f9f5b23c20"><div class="ttname"><a href="structlws__process__html__state.html#a53234f2948812c7208a256f9f5b23c20">lws_process_html_state::pos</a></div><div class="ttdeci">int pos</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2471</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3267</div></div> +<div class="ttc" id="structlws__process__html__state_html_a53234f2948812c7208a256f9f5b23c20"><div class="ttname"><a href="structlws__process__html__state.html#a53234f2948812c7208a256f9f5b23c20">lws_process_html_state::pos</a></div><div class="ttdeci">int pos</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2507</div></div> <div class="ttc" id="structlws__plugin_html_a65dffd68fd267ce17b988790d1d35f22"><div class="ttname"><a href="structlws__plugin.html#a65dffd68fd267ce17b988790d1d35f22">lws_plugin::list</a></div><div class="ttdeci">struct lws_plugin * list</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1404</div></div> <div class="ttc" id="group__client_html_gac6a8558b4410961a880241c2ac1271e2"><div class="ttname"><a href="group__client.html#gac6a8558b4410961a880241c2ac1271e2">lws_client_connect_extended</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_client_connect_extended(struct lws_context *clients, const char *address, int port, int ssl_connection, const char *path, const char *host, const char *origin, const char *protocol, int ietf_version_or_minus_one, void *userdata) LWS_WARN_DEPRECATED</div></div> <div class="ttc" id="structlws__context__creation__info_html_a0cdfd3c484689ba6f0f2cc91b38ce948"><div class="ttname"><a href="structlws__context__creation__info.html#a0cdfd3c484689ba6f0f2cc91b38ce948">lws_context_creation_info::max_http_header_data</a></div><div class="ttdeci">short max_http_header_data</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1636</div></div> @@ -217,26 +219,26 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="group__extensions_html_ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e"><div class="ttname"><a href="group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e">EXTARG_DEC</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1097</div></div> <div class="ttc" id="structlws__context__creation__info_html_a3baab4285c679fbe027c2504621d7410"><div class="ttname"><a href="structlws__context__creation__info.html#a3baab4285c679fbe027c2504621d7410">lws_context_creation_info::ka_probes</a></div><div class="ttdeci">int ka_probes</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1619</div></div> <div class="ttc" id="classlws__conn__listener_html_a271ac4f8ad5770b3bc96cce5b265b72c"><div class="ttname"><a href="classlws__conn__listener.html#a271ac4f8ad5770b3bc96cce5b265b72c">lws_conn_listener::onError</a></div><div class="ttdeci">void onError(Socket *s, socket_error_t err)</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a8595f83e64147cb687b6418cf500dd4c"><div class="ttname"><a href="structlws__client__connect__info.html#a8595f83e64147cb687b6418cf500dd4c">lws_client_connect_info::origin</a></div><div class="ttdeci">const char * origin</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2026</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a8595f83e64147cb687b6418cf500dd4c"><div class="ttname"><a href="structlws__client__connect__info.html#a8595f83e64147cb687b6418cf500dd4c">lws_client_connect_info::origin</a></div><div class="ttdeci">const char * origin</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2062</div></div> <div class="ttc" id="structlws__pollfd_html_ae7cecfe7511c59d4a3a44f876d030932"><div class="ttname"><a href="structlws__pollfd.html#ae7cecfe7511c59d4a3a44f876d030932">lws_pollfd::revents</a></div><div class="ttdeci">SHORT revents</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:419</div></div> -<div class="ttc" id="structlws__client__connect__info_html_aa9e8e3da4e783a0651b0dea62c2dd1db"><div class="ttname"><a href="structlws__client__connect__info.html#aa9e8e3da4e783a0651b0dea62c2dd1db">lws_client_connect_info::method</a></div><div class="ttdeci">const char * method</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2036</div></div> +<div class="ttc" id="structlws__client__connect__info_html_aa9e8e3da4e783a0651b0dea62c2dd1db"><div class="ttname"><a href="structlws__client__connect__info.html#aa9e8e3da4e783a0651b0dea62c2dd1db">lws_client_connect_info::method</a></div><div class="ttdeci">const char * method</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2072</div></div> <div class="ttc" id="group__form-parsing_html_ga2da476217166da02704b90d3a8d4f3cd"><div class="ttname"><a href="group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd">lws_spa_get_string</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)</div></div> <div class="ttc" id="structlws__extension_html"><div class="ttname"><a href="structlws__extension.html">lws_extension</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1191</div></div> <div class="ttc" id="group__callback-when-writeable_html_ga8570860e191b62db264f2bac67354ea8"><div class="ttname"><a href="group__callback-when-writeable.html#ga8570860e191b62db264f2bac67354ea8">lws_callback_on_writable_all_protocol_vhost</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost, const struct lws_protocols *protocol)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e">LWS_CALLBACK_CHANGE_MODE_POLL_FD</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:928</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a7732b996e977393c3e1076be2a8ded6c"><div class="ttname"><a href="structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c">lws_client_connect_info::client_exts</a></div><div class="ttdeci">const struct lws_extension * client_exts</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2034</div></div> -<div class="ttc" id="structlws__http__mount_html_a6a9b1492a0b9749e39bd19932717a0b7"><div class="ttname"><a href="structlws__http__mount.html#a6a9b1492a0b9749e39bd19932717a0b7">lws_http_mount::origin_protocol</a></div><div class="ttdeci">unsigned char origin_protocol</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1972</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a7732b996e977393c3e1076be2a8ded6c"><div class="ttname"><a href="structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c">lws_client_connect_info::client_exts</a></div><div class="ttdeci">const struct lws_extension * client_exts</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2070</div></div> +<div class="ttc" id="structlws__http__mount_html_a6a9b1492a0b9749e39bd19932717a0b7"><div class="ttname"><a href="structlws__http__mount.html#a6a9b1492a0b9749e39bd19932717a0b7">lws_http_mount::origin_protocol</a></div><div class="ttdeci">unsigned char origin_protocol</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2008</div></div> <div class="ttc" id="structlws__context__creation__info_html_ad0e95ba721f7bd2b676719f8093c23a2"><div class="ttname"><a href="structlws__context__creation__info.html#ad0e95ba721f7bd2b676719f8093c23a2">lws_context_creation_info::log_filepath</a></div><div class="ttdeci">const char * log_filepath</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1672</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09">LWS_CALLBACK_HTTP_WRITEABLE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:768</div></div> -<div class="ttc" id="structlws__email_html_a7bbc1964889c984b3da723c86a210e05"><div class="ttname"><a href="structlws__email.html#a7bbc1964889c984b3da723c86a210e05">lws_email::max_content_size</a></div><div class="ttdeci">unsigned int max_content_size</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4170</div></div> +<div class="ttc" id="structlws__email_html_a7bbc1964889c984b3da723c86a210e05"><div class="ttname"><a href="structlws__email.html#a7bbc1964889c984b3da723c86a210e05">lws_email::max_content_size</a></div><div class="ttdeci">unsigned int max_content_size</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4209</div></div> <div class="ttc" id="structlws__ext__option__arg_html_af57fffcfa253dfa8d98681ac1fb1785f"><div class="ttname"><a href="structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f">lws_ext_option_arg::option_index</a></div><div class="ttdeci">int option_index</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1119</div></div> <div class="ttc" id="group__misc_html_gacae4d7b6a8d22e4c2d82ff8b12c1e234"><div class="ttname"><a href="group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234">lws_get_child</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_get_child(const struct lws *wsi)</div></div> <div class="ttc" id="group__HTTP-headers-create_html_gaf74adb761b22566ad70004882712dce1"><div class="ttname"><a href="group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1">lws_add_http_header_by_token</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token, const unsigned char *value, int length, unsigned char **p, unsigned char *end)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804">LWS_CALLBACK_HTTP_BODY_COMPLETION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:764</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a9959ba103d3d2484e559a9f7879eebe3"><div class="ttname"><a href="structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3">lws_client_connect_info::uri_replace_to</a></div><div class="ttdeci">const char * uri_replace_to</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2046</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a6843a60e1050b10db9d98d7eeb45f587"><div class="ttname"><a href="structlws__client__connect__info.html#a6843a60e1050b10db9d98d7eeb45f587">lws_client_connect_info::parent_wsi</a></div><div class="ttdeci">struct lws * parent_wsi</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2039</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a9959ba103d3d2484e559a9f7879eebe3"><div class="ttname"><a href="structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3">lws_client_connect_info::uri_replace_to</a></div><div class="ttdeci">const char * uri_replace_to</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2082</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a6843a60e1050b10db9d98d7eeb45f587"><div class="ttname"><a href="structlws__client__connect__info.html#a6843a60e1050b10db9d98d7eeb45f587">lws_client_connect_info::parent_wsi</a></div><div class="ttdeci">struct lws * parent_wsi</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2075</div></div> <div class="ttc" id="group__sha_html_ga66316e6a5a0644a09d5a10e919dfdd8d"><div class="ttname"><a href="group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d">lws_b64_decode_string</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_b64_decode_string(const char *in, char *out, int out_size)</div></div> -<div class="ttc" id="structlws__email_html_ac6115d3cbef2e8bac62cc00895bf5fd3"><div class="ttname"><a href="structlws__email.html#ac6115d3cbef2e8bac62cc00895bf5fd3">lws_email::estate</a></div><div class="ttdeci">enum lwsgs_smtp_states estate</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4193</div></div> +<div class="ttc" id="structlws__email_html_ac6115d3cbef2e8bac62cc00895bf5fd3"><div class="ttname"><a href="structlws__email.html#ac6115d3cbef2e8bac62cc00895bf5fd3">lws_email::estate</a></div><div class="ttdeci">enum lwsgs_smtp_states estate</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4232</div></div> <div class="ttc" id="group__form-parsing_html_ga83835bf250ee3d4a60f36a182f2b8d24"><div class="ttname"><a href="group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24">lws_spa_finalize</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439">LWS_CALLBACK_ESTABLISHED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:664</div></div> <div class="ttc" id="group__misc_html_ga629f48268fd1856b54b11172991b97d9"><div class="ttname"><a href="group__misc.html#ga629f48268fd1856b54b11172991b97d9">lws_get_count_threads</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_get_count_threads(struct lws_context *context)</div></div> @@ -244,29 +246,29 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="structlws__plugin_html_af4ac8fcb79e10e0c2d960e1804d98105"><div class="ttname"><a href="structlws__plugin.html#af4ac8fcb79e10e0c2d960e1804d98105">lws_plugin::name</a></div><div class="ttdeci">char name[64]</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1410</div></div> <div class="ttc" id="group__HTTP-headers-read_html_ga594f3d0ece5b09c2ccf9f98ea533bb4e"><div class="ttname"><a href="group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e">lws_hdr_fragment_length</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx)</div></div> <div class="ttc" id="libwebsockets_8h_html_a27bb0b3cdcd0af839c928c253b521ff4"><div class="ttname"><a href="libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4">lws_cgi_kill</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_cgi_kill(struct lws *wsi)</div></div> -<div class="ttc" id="structlws__email_html_a8f34ec0643a817be67ef4276aeb7fb82"><div class="ttname"><a href="structlws__email.html#a8f34ec0643a817be67ef4276aeb7fb82">lws_email::email_buf</a></div><div class="ttdeci">char email_buf[256]</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4197</div></div> +<div class="ttc" id="structlws__email_html_a8f34ec0643a817be67ef4276aeb7fb82"><div class="ttname"><a href="structlws__email.html#a8f34ec0643a817be67ef4276aeb7fb82">lws_email::email_buf</a></div><div class="ttdeci">char email_buf[256]</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4236</div></div> <div class="ttc" id="group__wsstatus_html_ga26a140623d202dd2bf2004deb6994baa"><div class="ttname"><a href="group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa">lws_is_ssl</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c">LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1499</div></div> -<div class="ttc" id="structlws__plat__file__ops_html_a034ec96f2fbaf52b4aa3e82d20795f7b"><div class="ttname"><a href="structlws__plat__file__ops.html#a034ec96f2fbaf52b4aa3e82d20795f7b">lws_plat_file_ops::close</a></div><div class="ttdeci">int(* close)(struct lws *wsi, lws_filefd_type fd)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4014</div></div> +<div class="ttc" id="structlws__plat__file__ops_html_a034ec96f2fbaf52b4aa3e82d20795f7b"><div class="ttname"><a href="structlws__plat__file__ops.html#a034ec96f2fbaf52b4aa3e82d20795f7b">lws_plat_file_ops::close</a></div><div class="ttdeci">int(* close)(struct lws *wsi, lws_filefd_type fd)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4053</div></div> <div class="ttc" id="structlws__plugin_html_af9e1042dc1de5b9d202c2f5fd1834330"><div class="ttname"><a href="structlws__plugin.html#af9e1042dc1de5b9d202c2f5fd1834330">lws_plugin::lib</a></div><div class="ttdeci">uv_lib_t lib</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1406</div></div> <div class="ttc" id="structlws__polarssl__context_html_ae7e11c9129ff71c7ee71b3b2e320ff27"><div class="ttname"><a href="structlws__polarssl__context.html#ae7e11c9129ff71c7ee71b3b2e320ff27">lws_polarssl_context::certificate</a></div><div class="ttdeci">x509_crt certificate</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:238</div></div> <div class="ttc" id="group__net_html_ga092e5f473b3347f03ffeef8a950080f3"><div class="ttname"><a href="group__net.html#ga092e5f473b3347f03ffeef8a950080f3">lws_get_peer_addresses</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name, int name_len, char *rip, int rip_len)</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4148</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4187</div></div> <div class="ttc" id="group__wsstatus_html_ga4ad226d5e01024b4046f4a5a37199aa1"><div class="ttname"><a href="group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1">lws_is_cgi</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a9862297827639238a7a0b4054c3ddf3d"><div class="ttname"><a href="structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d">lws_client_connect_info::ssl_connection</a></div><div class="ttdeci">int ssl_connection</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2020</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a9862297827639238a7a0b4054c3ddf3d"><div class="ttname"><a href="structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d">lws_client_connect_info::ssl_connection</a></div><div class="ttdeci">int ssl_connection</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2056</div></div> <div class="ttc" id="group__generic-sessions_html_ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308"><div class="ttname"><a href="group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308">LWSGSE_CREATED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1458</div></div> <div class="ttc" id="structlws__context__creation__info_html_a1654d41bea6fb2f619b57e6a264b26a4"><div class="ttname"><a href="structlws__context__creation__info.html#a1654d41bea6fb2f619b57e6a264b26a4">lws_context_creation_info::provided_client_ssl_ctx</a></div><div class="ttdeci">SSL_CTX * provided_client_ssl_ctx</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1627</div></div> <div class="ttc" id="libwebsockets_8h_html_adf4abd01e8c43f07c6e498ce13590c3e"><div class="ttname"><a href="libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e">lws_rx_flow_control</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)</div></div> -<div class="ttc" id="structlws__process__html__args_html"><div class="ttname"><a href="structlws__process__html__args.html">lws_process_html_args</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2459</div></div> +<div class="ttc" id="structlws__process__html__args_html"><div class="ttname"><a href="structlws__process__html__args.html">lws_process_html_args</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2495</div></div> <div class="ttc" id="group__fops_html_gac08aef64c4c34647ed699b24759b6b0e"><div class="ttname"><a href="group__fops.html#gac08aef64c4c34647ed699b24759b6b0e">lws_get_fops</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)</div></div> <div class="ttc" id="structlws__pollargs_html"><div class="ttname"><a href="structlws__pollargs.html">lws_pollargs</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:530</div></div> -<div class="ttc" id="structlws__http__mount_html_ae7b5c0f4c5408061e6ea3a8d281f45af"><div class="ttname"><a href="structlws__http__mount.html#ae7b5c0f4c5408061e6ea3a8d281f45af">lws_http_mount::cgienv</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * cgienv</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1952</div></div> -<div class="ttc" id="structlws__protocol__vhost__options_html_acf9db77f8eb64cd4e314be9b43d8a8b9"><div class="ttname"><a href="structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9">lws_protocol_vhost_options::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1918</div></div> -<div class="ttc" id="structlws__http__mount_html_ac8489b60b8f969eb19c9abbdeac90743"><div class="ttname"><a href="structlws__http__mount.html#ac8489b60b8f969eb19c9abbdeac90743">lws_http_mount::mountpoint_len</a></div><div class="ttdeci">unsigned char mountpoint_len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1973</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3199</div></div> +<div class="ttc" id="structlws__http__mount_html_ae7b5c0f4c5408061e6ea3a8d281f45af"><div class="ttname"><a href="structlws__http__mount.html#ae7b5c0f4c5408061e6ea3a8d281f45af">lws_http_mount::cgienv</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * cgienv</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1988</div></div> +<div class="ttc" id="structlws__protocol__vhost__options_html_acf9db77f8eb64cd4e314be9b43d8a8b9"><div class="ttname"><a href="structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9">lws_protocol_vhost_options::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1954</div></div> +<div class="ttc" id="structlws__http__mount_html_ac8489b60b8f969eb19c9abbdeac90743"><div class="ttname"><a href="structlws__http__mount.html#ac8489b60b8f969eb19c9abbdeac90743">lws_http_mount::mountpoint_len</a></div><div class="ttdeci">unsigned char mountpoint_len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2009</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3238</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c">LWS_SERVER_OPTION_SSL_ECDH</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1517</div></div> <div class="ttc" id="structlws__pollfd_html_a714cf5ca90b41926117fdde9fa6542be"><div class="ttname"><a href="structlws__pollfd.html#a714cf5ca90b41926117fdde9fa6542be">lws_pollfd::fd</a></div><div class="ttdeci">lws_sockfd_type fd</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:417</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1929</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1965</div></div> <div class="ttc" id="group__wsstatus_html_ga08e9ee165fca503fd9427d55cfecac37"><div class="ttname"><a href="group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37">lws_is_final_fragment</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)</div></div> <div class="ttc" id="structlws__context__creation__info_html_a4a3d1155fc52f5048b481884f6fb947c"><div class="ttname"><a href="structlws__context__creation__info.html#a4a3d1155fc52f5048b481884f6fb947c">lws_context_creation_info::extensions</a></div><div class="ttdeci">const struct lws_extension * extensions</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1578</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d">LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1501</div></div> @@ -281,14 +283,14 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="structlws__ext__option__arg_html_a0b1f7b30c3ceaf5f1bf9d105c24568d1"><div class="ttname"><a href="structlws__ext__option__arg.html#a0b1f7b30c3ceaf5f1bf9d105c24568d1">lws_ext_option_arg::start</a></div><div class="ttdeci">const char * start</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1120</div></div> <div class="ttc" id="structlws__context__creation__info_html_a3e1516fd7fed26bfa77c0246ed26c2eb"><div class="ttname"><a href="structlws__context__creation__info.html#a3e1516fd7fed26bfa77c0246ed26c2eb">lws_context_creation_info::ssl_cipher_list</a></div><div class="ttdeci">const char * ssl_cipher_list</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1598</div></div> <div class="ttc" id="group__HTTP-headers-create_html_ga2b36bf44405755ff51c1939303b995a8"><div class="ttname"><a href="group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8">lws_add_http_header_by_name</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name, const unsigned char *value, int length, unsigned char **p, unsigned char *end)</div></div> -<div class="ttc" id="structlws__http__mount_html_aa2391bfcada0b7a290b3c6651f64586c"><div class="ttname"><a href="structlws__http__mount.html#aa2391bfcada0b7a290b3c6651f64586c">lws_http_mount::mountpoint</a></div><div class="ttdeci">const char * mountpoint</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1943</div></div> +<div class="ttc" id="structlws__http__mount_html_aa2391bfcada0b7a290b3c6651f64586c"><div class="ttname"><a href="structlws__http__mount.html#aa2391bfcada0b7a290b3c6651f64586c">lws_http_mount::mountpoint</a></div><div class="ttdeci">const char * mountpoint</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1979</div></div> <div class="ttc" id="structlws__context__creation__info_html_aef917c0b23976a264d2474901b4f5aa3"><div class="ttname"><a href="structlws__context__creation__info.html#aef917c0b23976a264d2474901b4f5aa3">lws_context_creation_info::http_proxy_address</a></div><div class="ttdeci">const char * http_proxy_address</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1602</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac">LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:826</div></div> <div class="ttc" id="structlws__polarssl__context_html_a919c33af37aab170f828d954de1fa270"><div class="ttname"><a href="structlws__polarssl__context.html#a919c33af37aab170f828d954de1fa270">lws_polarssl_context::key</a></div><div class="ttdeci">rsa_context key</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:239</div></div> <div class="ttc" id="structlws__context__creation__info_html_ac62b0f0e8e402412ba5011d15c244103"><div class="ttname"><a href="structlws__context__creation__info.html#ac62b0f0e8e402412ba5011d15c244103">lws_context_creation_info::ssl_cert_filepath</a></div><div class="ttdeci">const char * ssl_cert_filepath</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1586</div></div> <div class="ttc" id="structlws__context__creation__info_html_afa5d4e7d9f86b58a1c6fac14f0a5f5f9"><div class="ttname"><a href="structlws__context__creation__info.html#afa5d4e7d9f86b58a1c6fac14f0a5f5f9">lws_context_creation_info::ecdh_curve</a></div><div class="ttdeci">const char * ecdh_curve</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1657</div></div> -<div class="ttc" id="structlws__http__mount_html_a4a7239d6d4c03986e6e1a72abb6c83aa"><div class="ttname"><a href="structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa">lws_http_mount::cgi_timeout</a></div><div class="ttdeci">int cgi_timeout</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1961</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1931</div></div> +<div class="ttc" id="structlws__http__mount_html_a4a7239d6d4c03986e6e1a72abb6c83aa"><div class="ttname"><a href="structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa">lws_http_mount::cgi_timeout</a></div><div class="ttdeci">int cgi_timeout</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1997</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1967</div></div> <div class="ttc" id="group__generic-sessions_html_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a"><div class="ttname"><a href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a">LWSGS_AUTH_FORGOT_FLOW</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1443</div></div> <div class="ttc" id="structpollfd_html"><div class="ttname"><a href="structpollfd.html">pollfd</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:431</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5">LWS_CLOSE_STATUS_POLICY_VIOLATION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:587</div></div> @@ -305,16 +307,16 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="group__log_html_ga42e39775c6b69b7251bdbf5a2cdd5dcd"><div class="ttname"><a href="group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd">lwsl_timestamp</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a">LWS_CALLBACK_HTTP_PMO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1004</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160">LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1538</div></div> -<div class="ttc" id="structlws__email_html_a77723e2f2b940b1c879ef5e1cd88c2be"><div class="ttname"><a href="structlws__email.html#a77723e2f2b940b1c879ef5e1cd88c2be">lws_email::timeout_email</a></div><div class="ttdeci">uv_timer_t timeout_email</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4192</div></div> +<div class="ttc" id="structlws__email_html_a77723e2f2b940b1c879ef5e1cd88c2be"><div class="ttname"><a href="structlws__email.html#a77723e2f2b940b1c879ef5e1cd88c2be">lws_email::timeout_email</a></div><div class="ttdeci">uv_timer_t timeout_email</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4231</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9">LWS_SERVER_OPTION_DISABLE_IPV6</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1508</div></div> <div class="ttc" id="structlws__context__creation__info_html_a0b154e79abc1167ba4ac3539f4af6720"><div class="ttname"><a href="structlws__context__creation__info.html#a0b154e79abc1167ba4ac3539f4af6720">lws_context_creation_info::max_http_header_pool</a></div><div class="ttdeci">short max_http_header_pool</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1639</div></div> <div class="ttc" id="group__html-chunked-substitution_html_ga643073f918c0a7016b690aae9793fd60"><div class="ttname"><a href="group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60">lws_chunked_html_process</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_chunked_html_process(struct lws_process_html_args *args, struct lws_process_html_state *s)</div></div> -<div class="ttc" id="structlws__process__html__args_html_a11859d8bedd379fbf64543b25c65fe14"><div class="ttname"><a href="structlws__process__html__args.html#a11859d8bedd379fbf64543b25c65fe14">lws_process_html_args::p</a></div><div class="ttdeci">char * p</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2460</div></div> +<div class="ttc" id="structlws__process__html__args_html_a11859d8bedd379fbf64543b25c65fe14"><div class="ttname"><a href="structlws__process__html__args.html#a11859d8bedd379fbf64543b25c65fe14">lws_process_html_args::p</a></div><div class="ttdeci">char * p</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2496</div></div> <div class="ttc" id="structlws__polarssl__context_html_a1872f2ea24878d807ae20ca8513674af"><div class="ttname"><a href="structlws__polarssl__context.html#a1872f2ea24878d807ae20ca8513674af">lws_polarssl_context::ca</a></div><div class="ttdeci">x509_crt ca</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:237</div></div> <div class="ttc" id="structlws__protocols_html_a9bbd85f591ffb4259711cb5acbb05bea"><div class="ttname"><a href="structlws__protocols.html#a9bbd85f591ffb4259711cb5acbb05bea">lws_protocols::per_session_data_size</a></div><div class="ttdeci">size_t per_session_data_size</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1289</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044">LWS_CLOSE_STATUS_NO_STATUS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:571</div></div> <div class="ttc" id="structlws__context__creation__info_html_a6b059b7ee248cba72a3a4fd6141b0b34"><div class="ttname"><a href="structlws__context__creation__info.html#a6b059b7ee248cba72a3a4fd6141b0b34">lws_context_creation_info::reject_service_keywords</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * reject_service_keywords</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1711</div></div> -<div class="ttc" id="group__smtp_html_ga116be79bf44f9dc2a97f46e051fe4dc0"><div class="ttname"><a href="group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0">lwsgs_smtp_states</a></div><div class="ttdeci">lwsgs_smtp_states</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4146</div></div> +<div class="ttc" id="group__smtp_html_ga116be79bf44f9dc2a97f46e051fe4dc0"><div class="ttname"><a href="group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0">lwsgs_smtp_states</a></div><div class="ttdeci">lwsgs_smtp_states</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4185</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e">LWS_SERVER_OPTION_LIBUV</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1520</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f">LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:844</div></div> <div class="ttc" id="group__misc_html_ga9f37d0e357de2ab4170723fcdb665d21"><div class="ttname"><a href="group__misc.html#ga9f37d0e357de2ab4170723fcdb665d21">lws_snprintf</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_snprintf(char *str, size_t size, const char *format,...)</div></div> @@ -326,14 +328,14 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="structlws__gs__event__args_html_acd17e4f9f91f7f9a8f0fbf0744a3a463"><div class="ttname"><a href="structlws__gs__event__args.html#acd17e4f9f91f7f9a8f0fbf0744a3a463">lws_gs_event_args::email</a></div><div class="ttdeci">const char * email</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1466</div></div> <div class="ttc" id="group__misc_html_ga58f906c6be0ca80efd813f694569dd4a"><div class="ttname"><a href="group__misc.html#ga58f906c6be0ca80efd813f694569dd4a">lws_get_random</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218">LWS_CLOSE_STATUS_GOINGAWAY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:558</div></div> -<div class="ttc" id="structlws__email_html_a5f53d4c5a1e34b0dcaa8787e2eabb1b3"><div class="ttname"><a href="structlws__email.html#a5f53d4c5a1e34b0dcaa8787e2eabb1b3">lws_email::email_connect_req</a></div><div class="ttdeci">uv_connect_t email_connect_req</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4194</div></div> +<div class="ttc" id="structlws__email_html_a5f53d4c5a1e34b0dcaa8787e2eabb1b3"><div class="ttname"><a href="structlws__email.html#a5f53d4c5a1e34b0dcaa8787e2eabb1b3">lws_email::email_connect_req</a></div><div class="ttdeci">uv_connect_t email_connect_req</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4233</div></div> <div class="ttc" id="structlws__context__creation__info_html_a137a9b9de4f6a7993fed8746d551e616"><div class="ttname"><a href="structlws__context__creation__info.html#a137a9b9de4f6a7993fed8746d551e616">lws_context_creation_info::server_string</a></div><div class="ttdeci">const char * server_string</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1677</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941">LWS_SERVER_OPTION_UNIX_SOCK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1531</div></div> <div class="ttc" id="structlws__pollfd_html_ac393db6fc7fb6ed8fe7ca20936908ee9"><div class="ttname"><a href="structlws__pollfd.html#ac393db6fc7fb6ed8fe7ca20936908ee9">lws_pollfd::events</a></div><div class="ttdeci">SHORT events</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:418</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9">LWS_CALLBACK_CLIENT_RECEIVE_PONG</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:735</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f">LWS_SERVER_OPTION_VALIDATE_UTF8</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1515</div></div> <div class="ttc" id="structlws__context__creation__info_html_ad50db098a208f045f7811207d2bee4b9"><div class="ttname"><a href="structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9">lws_context_creation_info::vhost_name</a></div><div class="ttdeci">const char * vhost_name</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1659</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1932</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1968</div></div> <div class="ttc" id="group__Protocols-and-Plugins_html_ga72ad550786ca7976463589d347e62112"><div class="ttname"><a href="group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112">lws_get_protocol</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_get_protocol(struct lws *wsi)</div></div> <div class="ttc" id="group__generic-sessions_html_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf"><div class="ttname"><a href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf">LWSGS_AUTH_ADMIN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1441</div></div> <div class="ttc" id="structlws__gs__event__args_html"><div class="ttname"><a href="structlws__gs__event__args.html">lws_gs_event_args</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1463</div></div> @@ -344,12 +346,12 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="structlws__context__creation__info_html_a381342a398883d6204955ff3c1849ddd"><div class="ttname"><a href="structlws__context__creation__info.html#a381342a398883d6204955ff3c1849ddd">lws_context_creation_info::ka_interval</a></div><div class="ttdeci">int ka_interval</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1623</div></div> <div class="ttc" id="group__generic-sessions_html_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57"><div class="ttname"><a href="group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57">LWSGS_AUTH_LOGGED_IN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1440</div></div> <div class="ttc" id="structlws__context__creation__info_html_ac105b4180008cb3e672d57beead8382e"><div class="ttname"><a href="structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e">lws_context_creation_info::uid</a></div><div class="ttdeci">int uid</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1609</div></div> -<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2852</div></div> +<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2888</div></div> <div class="ttc" id="group__sha_html_gaf39765e4a3b413efb65e4698b2ec3575"><div class="ttname"><a href="group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575">lws_b64_encode_string</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_b64_encode_string(const char *in, int in_len, char *out, int out_size)</div></div> <div class="ttc" id="group__context-and-vhost_html_gaeb12f934bfd178bd2132a9e73fc641da"><div class="ttname"><a href="group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da">lws_context_user</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void * lws_context_user(struct lws_context *context)</div></div> <div class="ttc" id="structlws__protocols_html_a0e63edb457a613c3fa4271e0a8f19624"><div class="ttname"><a href="structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624">lws_protocols::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1282</div></div> <div class="ttc" id="group__client_html_ga4f44b8230e6732816ca5cd8d1aaaf340"><div class="ttname"><a href="group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340">lws_init_vhost_client_ssl</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4152</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4191</div></div> <div class="ttc" id="structlws__context__creation__info_html_a7b59f2bdc869871e7bde232db94f5ca6"><div class="ttname"><a href="structlws__context__creation__info.html#a7b59f2bdc869871e7bde232db94f5ca6">lws_context_creation_info::http_proxy_port</a></div><div class="ttdeci">unsigned int http_proxy_port</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1605</div></div> <div class="ttc" id="group__wsstatus_html_gaeca4afc94b1f026034f99cbba37e2f85"><div class="ttname"><a href="group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85">lws_partial_buffered</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)</div></div> <div class="ttc" id="structlws__context__creation__info_html_a6cfa3d51df2def3349a5cbf0d712822d"><div class="ttname"><a href="structlws__context__creation__info.html#a6cfa3d51df2def3349a5cbf0d712822d">lws_context_creation_info::timeout_secs</a></div><div class="ttdeci">unsigned int timeout_secs</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1652</div></div> @@ -357,45 +359,44 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="group__misc_html_ga1ec0d9faac5d3a5824d765c287c043aa"><div class="ttname"><a href="group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa">lws_parse_uri</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_parse_uri(char *p, const char **prot, const char **ads, int *port, const char **path)</div></div> <div class="ttc" id="structlws__context__creation__info_html_a9d3b17a25e1fbc772f21eb4959a82724"><div class="ttname"><a href="structlws__context__creation__info.html#a9d3b17a25e1fbc772f21eb4959a82724">lws_context_creation_info::options</a></div><div class="ttdeci">unsigned int options</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1611</div></div> <div class="ttc" id="group__form-parsing_html_ga3fbe378632f85ec9a14cc2c1687bf05f"><div class="ttname"><a href="group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f">lws_spa_get_length</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_spa_get_length(struct lws_spa *spa, int n)</div></div> -<div class="ttc" id="structlws__protocol__vhost__options_html_afd99fbc90be51ea2465b550c2ec47822"><div class="ttname"><a href="structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822">lws_protocol_vhost_options::options</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * options</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1917</div></div> +<div class="ttc" id="structlws__protocol__vhost__options_html_afd99fbc90be51ea2465b550c2ec47822"><div class="ttname"><a href="structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822">lws_protocol_vhost_options::options</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * options</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1953</div></div> <div class="ttc" id="structlws__pollargs_html_a437fec0de5cf264371e1ab5a401e86d8"><div class="ttname"><a href="structlws__pollargs.html#a437fec0de5cf264371e1ab5a401e86d8">lws_pollargs::prev_events</a></div><div class="ttdeci">int prev_events</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:533</div></div> <div class="ttc" id="structlws__context__creation__info_html_a81697c6b763b5ef3ee52862bc70b07d6"><div class="ttname"><a href="structlws__context__creation__info.html#a81697c6b763b5ef3ee52862bc70b07d6">lws_context_creation_info::keepalive_timeout</a></div><div class="ttdeci">int keepalive_timeout</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1669</div></div> <div class="ttc" id="structlws__session__info_html"><div class="ttname"><a href="structlws__session__info.html">lws_session_info</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1447</div></div> <div class="ttc" id="structlws__ext__options_html"><div class="ttname"><a href="structlws__ext__options.html">lws_ext_options</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1108</div></div> <div class="ttc" id="structlws__context__creation__info_html_a8ca0ec6b8675c13849bbdcdc0d50c9a3"><div class="ttname"><a href="structlws__context__creation__info.html#a8ca0ec6b8675c13849bbdcdc0d50c9a3">lws_context_creation_info::headers</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * headers</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1707</div></div> -<div class="ttc" id="structlws__token__limits_html"><div class="ttname"><a href="structlws__token__limits.html">lws_token_limits</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2649</div></div> +<div class="ttc" id="structlws__token__limits_html"><div class="ttname"><a href="structlws__token__limits.html">lws_token_limits</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2685</div></div> <div class="ttc" id="group__sending-data_html_gafd5fdd285a0e25ba7e3e1051deec1001"><div class="ttname"><a href="group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001">lws_write</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_write(struct lws *wsi, unsigned char *buf, size_t len, enum lws_write_protocol protocol)</div></div> <div class="ttc" id="structlws__context__creation__info_html_a999866fcd15dbd621773436f97190458"><div class="ttname"><a href="structlws__context__creation__info.html#a999866fcd15dbd621773436f97190458">lws_context_creation_info::pvo</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * pvo</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1666</div></div> -<div class="ttc" id="structlws__http__mount_html_a2f6c7dbc2d714b7259c67b7744d4ff98"><div class="ttname"><a href="structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98">lws_http_mount::basic_auth_login_file</a></div><div class="ttdeci">const char * basic_auth_login_file</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1975</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a9b36d47c3422329df32c21040a35ebc7"><div class="ttname"><a href="structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7">lws_client_connect_info::host</a></div><div class="ttdeci">const char * host</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2024</div></div> +<div class="ttc" id="structlws__http__mount_html_a2f6c7dbc2d714b7259c67b7744d4ff98"><div class="ttname"><a href="structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98">lws_http_mount::basic_auth_login_file</a></div><div class="ttdeci">const char * basic_auth_login_file</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2011</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a9b36d47c3422329df32c21040a35ebc7"><div class="ttname"><a href="structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7">lws_client_connect_info::host</a></div><div class="ttdeci">const char * host</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2060</div></div> <div class="ttc" id="structlws__ext__option__arg_html"><div class="ttname"><a href="structlws__ext__option__arg.html">lws_ext_option_arg</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1117</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e">LWS_CLOSE_STATUS_EXTENSION_REQUIRED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:597</div></div> <div class="ttc" id="group__Protocols-and-Plugins_html_ga25754726d97c5f519d313e691a9fe29d"><div class="ttname"><a href="group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d">lws_vhost_name_to_protocol</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name)</div></div> -<div class="ttc" id="structlws__cgi__args_html_a36e5c256433c187bd0eaa9c1ca667f1d"><div class="ttname"><a href="structlws__cgi__args.html#a36e5c256433c187bd0eaa9c1ca667f1d">lws_cgi_args::len</a></div><div class="ttdeci">int len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3949</div></div> +<div class="ttc" id="structlws__cgi__args_html_a36e5c256433c187bd0eaa9c1ca667f1d"><div class="ttname"><a href="structlws__cgi__args.html#a36e5c256433c187bd0eaa9c1ca667f1d">lws_cgi_args::len</a></div><div class="ttdeci">int len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3988</div></div> <div class="ttc" id="group__HTTP-headers-read_html_ga84e9ce5e71a77501a0998ac403a984c2"><div class="ttname"><a href="group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2">lws_get_urlarg_by_name</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const char * lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len)</div></div> <div class="ttc" id="structlws__context__creation__info_html_a75434932bb5df54665ea678eb8ac104a"><div class="ttname"><a href="structlws__context__creation__info.html#a75434932bb5df54665ea678eb8ac104a">lws_context_creation_info::iface</a></div><div class="ttdeci">const char * iface</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1567</div></div> -<div class="ttc" id="structlws__plat__file__ops_html"><div class="ttname"><a href="structlws__plat__file__ops.html">lws_plat_file_ops</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4008</div></div> +<div class="ttc" id="structlws__plat__file__ops_html"><div class="ttname"><a href="structlws__plat__file__ops.html">lws_plat_file_ops</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4047</div></div> <div class="ttc" id="group__log_html_ga898b1f03872ad019f507d4e35bbefa90"><div class="ttname"><a href="group__log.html#ga898b1f03872ad019f507d4e35bbefa90">lwsl_hexdump</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6">LWS_CALLBACK_CLIENT_HTTP_WRITEABLE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1009</div></div> -<div class="ttc" id="group__form-parsing_html_ga41a74a822771d3dce89751aa3bce28ae"><div class="ttname"><a href="group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae">lws_spa_fileupload_states</a></div><div class="ttdeci">lws_spa_fileupload_states</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2847</div></div> +<div class="ttc" id="group__form-parsing_html_ga41a74a822771d3dce89751aa3bce28ae"><div class="ttname"><a href="group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae">lws_spa_fileupload_states</a></div><div class="ttdeci">lws_spa_fileupload_states</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2883</div></div> <div class="ttc" id="group__service_html_gad82efa5466d14a9f05aa06416375b28d"><div class="ttname"><a href="group__service.html#gad82efa5466d14a9f05aa06416375b28d">lws_service_fd</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd)</div></div> <div class="ttc" id="group__callback-when-writeable_html_ga60939cf0c073d933fde3d17f3591caf5"><div class="ttname"><a href="group__callback-when-writeable.html#ga60939cf0c073d933fde3d17f3591caf5">lws_callback_vhost_protocols</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493">LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:820</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4">LWS_CLOSE_STATUS_NORMAL</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:555</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276">LWS_CLOSE_STATUS_UNACCEPTABLE_OPCODE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:564</div></div> <div class="ttc" id="group__pur_html_ga9cc82f06e5ae7e71458626d7a39a5865"><div class="ttname"><a href="group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865">lws_sql_purify</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)</div></div> -<div class="ttc" id="structlws__email_html_a01f31934166dc6d01e8a375012f8ad1e"><div class="ttname"><a href="structlws__email.html#a01f31934166dc6d01e8a375012f8ad1e">lws_email::email_client</a></div><div class="ttdeci">uv_tcp_t email_client</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4195</div></div> -<div class="ttc" id="group__context-and-vhost_html_gae2134657cdd2ea7a59e13ad314e4c50d"><div class="ttname"><a href="group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d">lws_json_dump_context</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len)</div></div> +<div class="ttc" id="structlws__email_html_a01f31934166dc6d01e8a375012f8ad1e"><div class="ttname"><a href="structlws__email.html#a01f31934166dc6d01e8a375012f8ad1e">lws_email::email_client</a></div><div class="ttdeci">uv_tcp_t email_client</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4234</div></div> <div class="ttc" id="structlws__pollfd_html"><div class="ttname"><a href="structlws__pollfd.html">lws_pollfd</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:416</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8">LWS_CALLBACK_CLIENT_CONNECTION_ERROR</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:668</div></div> -<div class="ttc" id="structlws__plat__file__ops_html_ad37a97abc68d0af967cef874f4d8df32"><div class="ttname"><a href="structlws__plat__file__ops.html#ad37a97abc68d0af967cef874f4d8df32">lws_plat_file_ops::open</a></div><div class="ttdeci">lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4009</div></div> -<div class="ttc" id="group__sending-data_html_ga98b099cf8c1c7e38ad78501f270e193d"><div class="ttname"><a href="group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d">lws_write_protocol</a></div><div class="ttdeci">lws_write_protocol</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3191</div></div> +<div class="ttc" id="structlws__plat__file__ops_html_ad37a97abc68d0af967cef874f4d8df32"><div class="ttname"><a href="structlws__plat__file__ops.html#ad37a97abc68d0af967cef874f4d8df32">lws_plat_file_ops::open</a></div><div class="ttdeci">lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4048</div></div> +<div class="ttc" id="group__sending-data_html_ga98b099cf8c1c7e38ad78501f270e193d"><div class="ttname"><a href="group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d">lws_write_protocol</a></div><div class="ttdeci">lws_write_protocol</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3230</div></div> <div class="ttc" id="structlws__extension_html_a36b06c213aedb02bf9a402651751855b"><div class="ttname"><a href="structlws__extension.html#a36b06c213aedb02bf9a402651751855b">lws_extension::client_offer</a></div><div class="ttdeci">const char * client_offer</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1194</div></div> -<div class="ttc" id="structlws__plat__file__ops_html_a01f483807a9862736b17ba9ed5110c40"><div class="ttname"><a href="structlws__plat__file__ops.html#a01f483807a9862736b17ba9ed5110c40">lws_plat_file_ops::read</a></div><div class="ttdeci">int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4019</div></div> +<div class="ttc" id="structlws__plat__file__ops_html_a01f483807a9862736b17ba9ed5110c40"><div class="ttname"><a href="structlws__plat__file__ops.html#a01f483807a9862736b17ba9ed5110c40">lws_plat_file_ops::read</a></div><div class="ttdeci">int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4058</div></div> <div class="ttc" id="group__service_html_ga53e3d0801dfda7960a7249dd559e68a2"><div class="ttname"><a href="group__service.html#ga53e3d0801dfda7960a7249dd559e68a2">lws_cancel_service</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)</div></div> -<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2848</div></div> +<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2884</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2">LWS_CLOSE_STATUS_RESERVED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:569</div></div> -<div class="ttc" id="structlws__http__mount_html_a21d86fd6043ec00e121ababbc29af39a"><div class="ttname"><a href="structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a">lws_http_mount::origin</a></div><div class="ttdeci">const char * origin</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1945</div></div> +<div class="ttc" id="structlws__http__mount_html_a21d86fd6043ec00e121ababbc29af39a"><div class="ttname"><a href="structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a">lws_http_mount::origin</a></div><div class="ttdeci">const char * origin</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1981</div></div> <div class="ttc" id="structlws__ext__options_html_a1769e4a9805bbdda227821e9578ddc7e"><div class="ttname"><a href="structlws__ext__options.html#a1769e4a9805bbdda227821e9578ddc7e">lws_ext_options::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1109</div></div> <div class="ttc" id="group__httpft_html_gab393a06d3d2722af4c3f8b06842c80d7"><div class="ttname"><a href="group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7">lws_serve_http_file</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type, const char *other_headers, int other_headers_len)</div></div> <div class="ttc" id="group__smtp_html_ga5e535e346d92a9daf00be33abf79d4eb"><div class="ttname"><a href="group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb">lws_email_check</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_email_check(struct lws_email *email)</div></div> @@ -404,7 +405,7 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="group__HTTP-headers-read_html_ga6ce6aa1c0155ea42b7708bed271d1c77"><div class="ttname"><a href="group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77">lws_hdr_copy</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc">LWS_CALLBACK_SERVER_WRITEABLE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:745</div></div> <div class="ttc" id="structlws__extension_html_a1e5018c883d85176f5c2152176843f9e"><div class="ttname"><a href="structlws__extension.html#a1e5018c883d85176f5c2152176843f9e">lws_extension::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1192</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4151</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4190</div></div> <div class="ttc" id="structpollfd_html_aafb457d11cac415faf0e1e2b825118c2"><div class="ttname"><a href="structpollfd.html#aafb457d11cac415faf0e1e2b825118c2">pollfd::revents</a></div><div class="ttdeci">short revents</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:434</div></div> <div class="ttc" id="structlws__extension_html_afa21f3b3c8c2c9212a276c52b680c3af"><div class="ttname"><a href="structlws__extension.html#afa21f3b3c8c2c9212a276c52b680c3af">lws_extension::callback</a></div><div class="ttdeci">lws_extension_callback_function * callback</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1193</div></div> <div class="ttc" id="structlws__context__creation__info_html_a704940261951ced6b5d8191bd8b9bb2d"><div class="ttname"><a href="structlws__context__creation__info.html#a704940261951ced6b5d8191bd8b9bb2d">lws_context_creation_info::ssl_options_set</a></div><div class="ttdeci">long ssl_options_set</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1691</div></div> @@ -412,66 +413,66 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');}); <div class="ttc" id="group__Protocols-and-Plugins_html_ga8bbe5e65faca068845704bab911a5030"><div class="ttname"><a href="group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030">lws_protocol_get</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED</div></div> <div class="ttc" id="structlws__session__info_html_afb924864b70f40372920688a5c1c895e"><div class="ttname"><a href="structlws__session__info.html#afb924864b70f40372920688a5c1c895e">lws_session_info::mask</a></div><div class="ttdeci">unsigned int mask</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1451</div></div> <div class="ttc" id="group__smtp_html_ga77fc9b56a1bb39484844981ec375fc29"><div class="ttname"><a href="group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29">lws_email_init</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content)</div></div> -<div class="ttc" id="group__vhost-mounts_html_ga31eca18e50cb4357480f2fcad36ff437"><div class="ttname"><a href="group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437">lws_mount_protocols</a></div><div class="ttdeci">lws_mount_protocols</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1926</div></div> +<div class="ttc" id="group__vhost-mounts_html_ga31eca18e50cb4357480f2fcad36ff437"><div class="ttname"><a href="group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437">lws_mount_protocols</a></div><div class="ttdeci">lws_mount_protocols</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1962</div></div> <div class="ttc" id="group__extensions_html_ga4cdbe42d872e21a448a947714d6c607e"><div class="ttname"><a href="group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e">lws_extension_callback_pm_deflate</a></div><div class="ttdeci">LWS_EXTERN int lws_extension_callback_pm_deflate(struct lws_context *context, const struct lws_extension *ext, struct lws *wsi, enum lws_extension_callback_reasons reason, void *user, void *in, size_t len)</div></div> <div class="ttc" id="group__HTTP-headers-create_html_gacc76a5babcb4dce1b01b1955aa7a2faf"><div class="ttname"><a href="group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf">lws_add_http_header_content_length</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_content_length(struct lws *wsi, unsigned long content_length, unsigned char **p, unsigned char *end)</div></div> <div class="ttc" id="structpollfd_html_af084f089bdece61d177f85782d6673d0"><div class="ttname"><a href="structpollfd.html#af084f089bdece61d177f85782d6673d0">pollfd::fd</a></div><div class="ttdeci">lws_sockfd_type fd</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:432</div></div> <div class="ttc" id="structlws__context__creation__info_html_aa8d9e85e137f35fb006f2e4a53f0887a"><div class="ttname"><a href="structlws__context__creation__info.html#aa8d9e85e137f35fb006f2e4a53f0887a">lws_context_creation_info::max_http_header_data2</a></div><div class="ttdeci">unsigned int max_http_header_data2</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1686</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1927</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1963</div></div> <div class="ttc" id="group__http_html_gac8a4a71240857dc6b2ed70456b6923f4"><div class="ttname"><a href="group__http.html#gac8a4a71240857dc6b2ed70456b6923f4">lws_return_http_status</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_return_http_status(struct lws *wsi, unsigned int code, const char *html_body)</div></div> <div class="ttc" id="group__context-and-vhost_html_ga0c54c667ccd9b8b3dddcd123ca72f87c"><div class="ttname"><a href="group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c">lws_create_vhost</a></div><div class="ttdeci">LWS_EXTERN LWS_VISIBLE struct lws_vhost * lws_create_vhost(struct lws_context *context, struct lws_context_creation_info *info)</div></div> -<div class="ttc" id="structlws__http__mount_html_a11ea62b952710d59733dbcf9794a5773"><div class="ttname"><a href="structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773">lws_http_mount::interpret</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * interpret</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1958</div></div> +<div class="ttc" id="structlws__http__mount_html_a11ea62b952710d59733dbcf9794a5773"><div class="ttname"><a href="structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773">lws_http_mount::interpret</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * interpret</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1994</div></div> <div class="ttc" id="structlws__context__creation__info_html_aadbc1b141d16c1084ec4c543e7768a72"><div class="ttname"><a href="structlws__context__creation__info.html#aadbc1b141d16c1084ec4c543e7768a72">lws_context_creation_info::external_baggage_free_on_destroy</a></div><div class="ttdeci">void * external_baggage_free_on_destroy</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1718</div></div> <div class="ttc" id="group__service_html_gaf95bd0c663d6516a0c80047d9b1167a8"><div class="ttname"><a href="group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8">lws_service</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc">LWS_SERVER_OPTION_PEER_CERT_NOT_REQUIRED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1513</div></div> <div class="ttc" id="group__http_html_gad27aed6c66a41b2b89ffe4da2a309e8a"><div class="ttname"><a href="group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a">lws_http_transaction_completed</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)</div></div> -<div class="ttc" id="structlws__process__html__state_html_adcafd17704775b4bbeea9561fb340968"><div class="ttname"><a href="structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968">lws_process_html_state::count_vars</a></div><div class="ttdeci">int count_vars</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2474</div></div> +<div class="ttc" id="structlws__process__html__state_html_adcafd17704775b4bbeea9561fb340968"><div class="ttname"><a href="structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968">lws_process_html_state::count_vars</a></div><div class="ttdeci">int count_vars</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2510</div></div> <div class="ttc" id="group__HTTP-headers-create_html_ga29b7d6d2ddfdbaff3d8b607e7e3151b6"><div class="ttname"><a href="group__HTTP-headers-create.html#ga29b7d6d2ddfdbaff3d8b607e7e3151b6">lws_add_http_header_status</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_status(struct lws *wsi, unsigned int code, unsigned char **p, unsigned char *end)</div></div> -<div class="ttc" id="structlws__tokens_html"><div class="ttname"><a href="structlws__tokens.html">lws_tokens</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2528</div></div> +<div class="ttc" id="structlws__tokens_html"><div class="ttname"><a href="structlws__tokens.html">lws_tokens</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2564</div></div> <div class="ttc" id="group__context-and-vhost_html_gaf2fff58562caab7510c41eeac85a8648"><div class="ttname"><a href="group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648">lws_create_context</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba">LWS_CALLBACK_CLOSED_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:724</div></div> -<div class="ttc" id="structlws__process__html__state_html_af21119890fdfebe28fb5c4dabfc1bdf5"><div class="ttname"><a href="structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5">lws_process_html_state::data</a></div><div class="ttdeci">void * data</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2472</div></div> -<div class="ttc" id="structlws__email_html_a6fff03c5a5d369a2aa3cab0c897b1bed"><div class="ttname"><a href="structlws__email.html#a6fff03c5a5d369a2aa3cab0c897b1bed">lws_email::content</a></div><div class="ttdeci">char * content</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4198</div></div> +<div class="ttc" id="structlws__process__html__state_html_af21119890fdfebe28fb5c4dabfc1bdf5"><div class="ttname"><a href="structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5">lws_process_html_state::data</a></div><div class="ttdeci">void * data</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2508</div></div> +<div class="ttc" id="structlws__email_html_a6fff03c5a5d369a2aa3cab0c897b1bed"><div class="ttname"><a href="structlws__email.html#a6fff03c5a5d369a2aa3cab0c897b1bed">lws_email::content</a></div><div class="ttdeci">char * content</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4237</div></div> <div class="ttc" id="group__net_html_ga869d8bdffb0f2a7ce08e3ce10d6be3d8"><div class="ttname"><a href="group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8">lws_interface_to_sa</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr, size_t addrlen)</div></div> <div class="ttc" id="structlws__context__creation__info_html_ac8a75b7b259a3c3a5fbb4219a3f06c29"><div class="ttname"><a href="structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29">lws_context_creation_info::token_limits</a></div><div class="ttdeci">const struct lws_token_limits * token_limits</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1581</div></div> -<div class="ttc" id="structlws__email_html"><div class="ttname"><a href="structlws__email.html">lws_email</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4159</div></div> -<div class="ttc" id="structlws__client__connect__info_html_aa364094f94ef1bcaaabbd9161971d502"><div class="ttname"><a href="structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502">lws_client_connect_info::address</a></div><div class="ttdeci">const char * address</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2016</div></div> -<div class="ttc" id="structlws__plat__file__ops_html_abfcda19b003dcc13c61ff9e2bb4ff869"><div class="ttname"><a href="structlws__plat__file__ops.html#abfcda19b003dcc13c61ff9e2bb4ff869">lws_plat_file_ops::seek_cur</a></div><div class="ttdeci">unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4016</div></div> +<div class="ttc" id="structlws__email_html"><div class="ttname"><a href="structlws__email.html">lws_email</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4198</div></div> +<div class="ttc" id="structlws__client__connect__info_html_aa364094f94ef1bcaaabbd9161971d502"><div class="ttname"><a href="structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502">lws_client_connect_info::address</a></div><div class="ttdeci">const char * address</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2052</div></div> +<div class="ttc" id="structlws__plat__file__ops_html_abfcda19b003dcc13c61ff9e2bb4ff869"><div class="ttname"><a href="structlws__plat__file__ops.html#abfcda19b003dcc13c61ff9e2bb4ff869">lws_plat_file_ops::seek_cur</a></div><div class="ttdeci">unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4055</div></div> <div class="ttc" id="structlws__protocols_html_a3cbd903ad076736ae934a54cae36580e"><div class="ttname"><a href="structlws__protocols.html#a3cbd903ad076736ae934a54cae36580e">lws_protocols::user</a></div><div class="ttdeci">void * user</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1310</div></div> <div class="ttc" id="structlws__pollargs_html_a00bbffea9f55de342783e32d71ce1de6"><div class="ttname"><a href="structlws__pollargs.html#a00bbffea9f55de342783e32d71ce1de6">lws_pollargs::events</a></div><div class="ttdeci">int events</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:532</div></div> <div class="ttc" id="group__client_html_ga715efffc0c4e8fbf72a4293008eb2187"><div class="ttname"><a href="group__client.html#ga715efffc0c4e8fbf72a4293008eb2187">lws_http_client_http_response</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN unsigned int lws_http_client_http_response(struct lws *wsi)</div></div> -<div class="ttc" id="structlws__email_html_a2aff78c8e04db243052aa91b4d87e987"><div class="ttname"><a href="structlws__email.html#a2aff78c8e04db243052aa91b4d87e987">lws_email::on_get_body</a></div><div class="ttdeci">int(* on_get_body)(struct lws_email *email, char *buf, int len)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4185</div></div> -<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1933</div></div> +<div class="ttc" id="structlws__email_html_a2aff78c8e04db243052aa91b4d87e987"><div class="ttname"><a href="structlws__email.html#a2aff78c8e04db243052aa91b4d87e987">lws_email::on_get_body</a></div><div class="ttdeci">int(* on_get_body)(struct lws_email *email, char *buf, int len)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4224</div></div> +<div class="ttc" id="group__vhost-mounts_html_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da"><div class="ttname"><a href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1969</div></div> <div class="ttc" id="structlws__context__creation__info_html_a0e9d94cdfb893d777b4a4db81e7b5ac0"><div class="ttname"><a href="structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0">lws_context_creation_info::user</a></div><div class="ttdeci">void * user</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1613</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4155</div></div> -<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3214</div></div> -<div class="ttc" id="structlws__tokens_html_a9f3635412bc71a5cb78e9862b55f10cd"><div class="ttname"><a href="structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd">lws_tokens::token</a></div><div class="ttdeci">char * token</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2529</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4194</div></div> +<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3253</div></div> +<div class="ttc" id="structlws__tokens_html_a9f3635412bc71a5cb78e9862b55f10cd"><div class="ttname"><a href="structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd">lws_tokens::token</a></div><div class="ttdeci">char * token</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2565</div></div> <div class="ttc" id="group__Protocols-and-Plugins_html_gaf3be4243443baac0f8be1fcfb4d25129"><div class="ttname"><a href="group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129">lws_protocol_vh_priv_get</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot)</div></div> <div class="ttc" id="structlws__plugin__capability_html_ae38f7cf1246b9ca3af3cbf9d46b7090f"><div class="ttname"><a href="structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f">lws_plugin_capability::count_protocols</a></div><div class="ttdeci">int count_protocols</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1393</div></div> <div class="ttc" id="structlws__plugin_html_a4ef37a43653715b6c69cbf8a7be747f4"><div class="ttname"><a href="structlws__plugin.html#a4ef37a43653715b6c69cbf8a7be747f4">lws_plugin::l</a></div><div class="ttdeci">void * l</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1408</div></div> <div class="ttc" id="structlws__context__creation__info_html_ab9ec8893e0f7843cf5d783d2f350ef14"><div class="ttname"><a href="structlws__context__creation__info.html#ab9ec8893e0f7843cf5d783d2f350ef14">lws_context_creation_info::ssl_private_key_filepath</a></div><div class="ttdeci">const char * ssl_private_key_filepath</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1590</div></div> -<div class="ttc" id="structlws__process__html__args_html_a8be7fd396a1942ea2449a2fda990ff99"><div class="ttname"><a href="structlws__process__html__args.html#a8be7fd396a1942ea2449a2fda990ff99">lws_process_html_args::max_len</a></div><div class="ttdeci">int max_len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2462</div></div> +<div class="ttc" id="structlws__process__html__args_html_a8be7fd396a1942ea2449a2fda990ff99"><div class="ttname"><a href="structlws__process__html__args.html#a8be7fd396a1942ea2449a2fda990ff99">lws_process_html_args::max_len</a></div><div class="ttdeci">int max_len</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2498</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c">LWS_CALLBACK_RECEIVE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:726</div></div> -<div class="ttc" id="structlws__protocol__vhost__options_html_abc714ddb4171756fc8196e9823a1e21c"><div class="ttname"><a href="structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c">lws_protocol_vhost_options::next</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * next</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1916</div></div> +<div class="ttc" id="structlws__protocol__vhost__options_html_abc714ddb4171756fc8196e9823a1e21c"><div class="ttname"><a href="structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c">lws_protocol_vhost_options::next</a></div><div class="ttdeci">const struct lws_protocol_vhost_options * next</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1952</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514">LWS_CALLBACK_CLIENT_WRITEABLE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:737</div></div> <div class="ttc" id="libwebsockets_8h_html_a5e627dbf1db48170ef486edbaf268672"><div class="ttname"><a href="libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672">lws_rx_flow_allow_all_protocol</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)</div></div> -<div class="ttc" id="structlws__process__html__state_html"><div class="ttname"><a href="structlws__process__html__state.html">lws_process_html_state</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2468</div></div> +<div class="ttc" id="structlws__process__html__state_html"><div class="ttname"><a href="structlws__process__html__state.html">lws_process_html_state</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2504</div></div> <div class="ttc" id="group__net_html_gad0df22db2be9fc65a667a1e83f9a92a4"><div class="ttname"><a href="group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4">lws_canonical_hostname</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)</div></div> <div class="ttc" id="group__usercb_html_ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428"><div class="ttname"><a href="group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428">LWS_CALLBACK_LOCK_POLL</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:936</div></div> <div class="ttc" id="structlws__context__creation__info_html_a4f8e65c3a059d3b586fafa9ef3282c29"><div class="ttname"><a href="structlws__context__creation__info.html#a4f8e65c3a059d3b586fafa9ef3282c29">lws_context_creation_info::ssl_ca_filepath</a></div><div class="ttdeci">const char * ssl_ca_filepath</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1596</div></div> -<div class="ttc" id="group__client_html_ga96f3dbad54b2853969cfa933d66871ce"><div class="ttname"><a href="group__client.html#ga96f3dbad54b2853969cfa933d66871ce">lws_client_connect_ssl_connection_flags</a></div><div class="ttdeci">lws_client_connect_ssl_connection_flags</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2003</div></div> +<div class="ttc" id="group__client_html_ga96f3dbad54b2853969cfa933d66871ce"><div class="ttname"><a href="group__client.html#ga96f3dbad54b2853969cfa933d66871ce">lws_client_connect_ssl_connection_flags</a></div><div class="ttdeci">lws_client_connect_ssl_connection_flags</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2039</div></div> <div class="ttc" id="structlws__context__creation__info_html_a9c9d22437de92c197f3cee52912b2c03"><div class="ttname"><a href="structlws__context__creation__info.html#a9c9d22437de92c197f3cee52912b2c03">lws_context_creation_info::gid</a></div><div class="ttdeci">int gid</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1607</div></div> -<div class="ttc" id="structlws__client__connect__info_html_a3893181d728f326f9f5b47c1459cb8be"><div class="ttname"><a href="structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be">lws_client_connect_info::vhost</a></div><div class="ttdeci">struct lws_vhost * vhost</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2048</div></div> +<div class="ttc" id="structlws__client__connect__info_html_a3893181d728f326f9f5b47c1459cb8be"><div class="ttname"><a href="structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be">lws_client_connect_info::vhost</a></div><div class="ttdeci">struct lws_vhost * vhost</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2084</div></div> <div class="ttc" id="group__usercb_html_gad4fcb82e68d60ffacca61a3f783a0a2f"><div class="ttname"><a href="group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f">lws_callback_function</a></div><div class="ttdeci">int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1043</div></div> <div class="ttc" id="group__service_html_ga29c246707997ab7a466aa709aecd2d7b"><div class="ttname"><a href="group__service.html#ga29c246707997ab7a466aa709aecd2d7b">lws_cancel_service_pt</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016">LWS_SERVER_OPTION_STS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1533</div></div> <div class="ttc" id="group__wsclose_html_ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350"><div class="ttname"><a href="group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350">LWS_CLOSE_STATUS_UNEXPECTED_CONDITION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:605</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4150</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4189</div></div> <div class="ttc" id="structlws__plugin__capability_html_a523c7cde6f15bba345f56493dcf6b32a"><div class="ttname"><a href="structlws__plugin__capability.html#a523c7cde6f15bba345f56493dcf6b32a">lws_plugin_capability::api_magic</a></div><div class="ttdeci">unsigned int api_magic</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1391</div></div> <div class="ttc" id="group__context-and-vhost_html_gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8"><div class="ttname"><a href="group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8">LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:1536</div></div> <div class="ttc" id="group__wsstatus_html_ga2bb3655329b4651cd06f79ee3a764421"><div class="ttname"><a href="group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421">lws_send_pipe_choked</a></div><div class="ttdeci">LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)</div></div> -<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4153</div></div> -<div class="ttc" id="group__form-parsing_html_ga5a70527c0861c2ffa3d29333a6aa7f8e"><div class="ttname"><a href="group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e">lws_spa_fileupload_cb</a></div><div class="ttdeci">int(* lws_spa_fileupload_cb)(void *data, const char *name, const char *filename, char *buf, int len, enum lws_spa_fileupload_states state)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2869</div></div> +<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4192</div></div> +<div class="ttc" id="group__form-parsing_html_ga5a70527c0861c2ffa3d29333a6aa7f8e"><div class="ttname"><a href="group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e">lws_spa_fileupload_cb</a></div><div class="ttdeci">int(* lws_spa_fileupload_cb)(void *data, const char *name, const char *filename, char *buf, int len, enum lws_spa_fileupload_states state)</div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2905</div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/doc/html/md_README_8lwsws.html b/doc/html/md_README_8lwsws.html index 4fb46c7d0179d1e5ad2219fa8a203d0434960ae3..8fe3dceef384335105ef776148aa154ab213da3a 100644 --- a/doc/html/md_README_8lwsws.html +++ b/doc/html/md_README_8lwsws.html @@ -184,11 +184,27 @@ Additional plugin search paths</h1> <p>Packages that have their own lws plugins can install them in their own preferred dir and ask lwsws to scan there by using a config fragment like this, in its own conf.d/ file managed by the other package </p><div class="fragment"><div class="line">{</div><div class="line"> "global": {</div><div class="line"> "plugin-dir": "/usr/local/share/coherent-timeline/plugins"</div><div class="line"> }</div><div class="line">}</div></div><!-- fragment --><h1><a class="anchor" id="lwswsssp"></a> lws-server-status plugin</h1> <p>One provided protocol can be used to monitor the server status.</p> -<p>Enable the protocol like this on a vhost's ws-protocols section </p><div class="fragment"><div class="line">"lws-server-status": {</div><div class="line"> "status": "ok",</div><div class="line"> "update-ms": "5000"</div><div class="line">}</div></div><!-- fragment --><p> "update-ms" is used to control how often updated JSON is sent on a ws link.</p> -<p>And map the provided HTML into the vhost in the mounts section </p><div class="fragment"><div class="line">{</div><div class="line"> "mountpoint": "/server-status",</div><div class="line"> "origin": "file:///usr/local/share/libwebsockets-test-server/server-status",</div><div class="line"> "default": "server-status.html"</div><div class="line">}</div></div><!-- fragment --><p> You might choose to put it on its own vhost which has "interface": "lo", so it's not externally visible.</p> +<p>Enable the protocol like this on a vhost's ws-protocols section </p><div class="fragment"><div class="line">"lws-server-status": {</div><div class="line"> "status": "ok",</div><div class="line"> "update-ms": "5000"</div><div class="line">}</div></div><!-- fragment --><p> <code>"update-ms"</code> is used to control how often updated JSON is sent on a ws link.</p> +<p>And map the provided HTML into the vhost in the mounts section </p><div class="fragment"><div class="line">{</div><div class="line"> "mountpoint": "/server-status",</div><div class="line"> "origin": "file:///usr/local/share/libwebsockets-test-server/server-status",</div><div class="line"> "default": "server-status.html"</div><div class="line">}</div></div><!-- fragment --><p> You might choose to put it on its own vhost which has "interface": "lo", so it's not externally visible, or use the Basic Auth support to require authentication to access it.</p> +<p><code>"hide-vhosts": "{0 | 1}"</code> lets you control if information about your vhosts is included. Since this includes mounts, you might not want to leak that information, mount names, etc.</p> +<p><code>"filespath":"{path}"</code> lets you give a server filepath which is read and sent to the browser on each refresh. For example, you can provide server temperature information on most Linux systems by giving an appropriate path down /sys.</p> +<p>This may be given multiple times.</p> +<h1><a class="anchor" id="lwswsreload"></a> +Lwsws Configuration Reload</h1> +<p>You may send lwsws a <code>HUP</code> signal, by, eg</p> +<div class="fragment"><div class="line">$ sudo killall -HUP lwsws</div></div><!-- fragment --><p>This causes lwsws to "deprecate" the existing lwsws process, and remove and close all of its listen sockets, but otherwise allowing it to continue to run, until all of its open connections close.</p> +<p>When a deprecated lwsws process has no open connections left, it is destroyed automatically.</p> +<p>After sending the SIGHUP to the main lwsws process, a new lwsws process, which can pick up the newly-available listen sockets, and use the current configuration files, is automatically started.</p> +<p>The new configuration may differ from the original one in arbitrary ways, the new context is created from scratch each time without reference to the original one.</p> +<p>Notes</p> +<p>1) Protocols that provide a "shared world" like mirror will have as many "worlds" as there are lwsws processes still active. People connected to a deprecated lwsws process remain connected to the existing peers.</p> +<p>But any new connections will apply to the new lwsws process, which does not share per-vhost "shared world" data with the deprecated process. That means no new connections on the deprecated context, ie a "shrinking world" for those guys, and a "growing world" for people who connect after the SIGHUP.</p> +<p>2) The new lwsws process owes nothing to the previous one. It starts with fresh plugins, fresh configuration, fresh root privileges if that how you start it.</p> +<p>The plugins may have been updated in arbitrary ways including struct size changes etc, and lwsws or lws may also have been updated arbitrarily.</p> +<p>3) A root parent process is left up that is not able to do anything except respond to SIGHUP or SIGTERM. Actual serving and network listening etc happens in child processes which use the privileges set in the lwsws config files.</p> <h1><a class="anchor" id="lwswssysd"></a> Lwsws Integration with Systemd</h1> -<p>lwsws needs a service file like this as <code>/usr/lib/systemd/system/lwsws.service</code> </p><div class="fragment"><div class="line">[Unit]</div><div class="line">Description=Libwebsockets Web Server</div><div class="line">After=syslog.target</div><div class="line"></div><div class="line">[Service]</div><div class="line">ExecStart=/usr/local/bin/lwsws</div><div class="line">StandardError=null</div><div class="line"></div><div class="line">[Install]</div><div class="line">WantedBy=multi-user.target</div></div><!-- fragment --><p>You can find this prepared in <code>./lwsws/usr-lib-systemd-system-lwsws.service</code></p> +<p>lwsws needs a service file like this as <code>/usr/lib/systemd/system/lwsws.service</code> </p><div class="fragment"><div class="line">[Unit]</div><div class="line">Description=Libwebsockets Web Server</div><div class="line">After=syslog.target</div><div class="line"></div><div class="line">[Service]</div><div class="line">ExecStart=/usr/local/bin/lwsws </div><div class="line">ExecReload=/usr/bin/killall -s SIGHUP lwsws ; sleep 1 ; /usr/local/bin/lwsws</div><div class="line">StandardError=null</div><div class="line"></div><div class="line">[Install]</div><div class="line">WantedBy=multi-user.target</div></div><!-- fragment --><p>You can find this prepared in <code>./lwsws/usr-lib-systemd-system-lwsws.service</code></p> <h1><a class="anchor" id="lwswslr"></a> Lwsws Integration with logrotate</h1> <p>For correct operation with logrotate, <code>/etc/logrotate.d/lwsws</code> (if that's where we're putting the logs) should contain </p><div class="fragment"><div class="line">/var/log/lwsws/*log {</div><div class="line"> copytruncate</div><div class="line"> missingok</div><div class="line"> notifempty</div><div class="line"> delaycompress</div><div class="line">}</div></div><!-- fragment --><p> You can find this prepared in <code>/lwsws/etc-logrotate.d-lwsws</code></p> diff --git a/doc/html/navtreedata.js b/doc/html/navtreedata.js index 2fac4aa16fe3d5790a9321348d1d60a8049fa91e..27dccadc80093837c81376a7acc6b06a77104ac9 100644 --- a/doc/html/navtreedata.js +++ b/doc/html/navtreedata.js @@ -38,6 +38,7 @@ var NAVTREE = [ "Lwsws Plugins", "md_README_8lwsws.html#lwswspl", null ], [ "Additional plugin search paths", "md_README_8lwsws.html#lwswsplaplp", null ], [ "lws-server-status plugin", "md_README_8lwsws.html#lwswsssp", null ], + [ "Lwsws Configuration Reload", "md_README_8lwsws.html#lwswsreload", null ], [ "Lwsws Integration with Systemd", "md_README_8lwsws.html#lwswssysd", null ], [ "Lwsws Integration with logrotate", "md_README_8lwsws.html#lwswslr", null ] ] ], @@ -133,10 +134,10 @@ var NAVTREE = var NAVTREEINDEX = [ "annotated.html", -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd", -"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2", -"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd", -"structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146" +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93", +"group__service.html#ga29c246707997ab7a466aa709aecd2d7b", +"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421", +"structlws__gs__event__args.html#acd17e4f9f91f7f9a8f0fbf0744a3a463" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js index 8d127de5d0ec69b221b65bd7fd0cfb4b96334b16..2e8184d8c5adbea1badb5d4ac378fabf4faece2a 100644 --- a/doc/html/navtreeindex0.js +++ b/doc/html/navtreeindex0.js @@ -38,216 +38,216 @@ var NAVTREEINDEX0 = "globals_type.html":[11,1,2], "group__HTTP-headers-create.html":[9,6,3], "group__HTTP-headers-create.html#ga29b7d6d2ddfdbaff3d8b607e7e3151b6":[9,6,3,3], -"group__HTTP-headers-create.html#ga29b7d6d2ddfdbaff3d8b607e7e3151b6":[11,0,0,0,48], +"group__HTTP-headers-create.html#ga29b7d6d2ddfdbaff3d8b607e7e3151b6":[11,0,0,0,49], "group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8":[9,6,3,0], -"group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8":[11,0,0,0,45], +"group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8":[11,0,0,0,46], "group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[9,6,3,4], -"group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[11,0,0,0,85], +"group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[11,0,0,0,89], "group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[9,6,3,2], -"group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[11,0,0,0,47], +"group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[11,0,0,0,48], "group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[9,6,3,1], -"group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[11,0,0,0,46], +"group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[11,0,0,0,47], "group__HTTP-headers-read.html":[9,6,4], -"group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[11,0,0,0,155], +"group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[11,0,0,0,160], "group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[9,6,4,7], +"group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[11,0,0,0,110], "group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[9,6,4,5], -"group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[11,0,0,0,106], "group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[9,6,4,3], -"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[11,0,0,0,104], -"group__HTTP-headers-read.html#ga6e747906f9d76532ec118d6ef418b82e":[11,0,0,0,34], +"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[11,0,0,0,108], +"group__HTTP-headers-read.html#ga6e747906f9d76532ec118d6ef418b82e":[11,0,0,0,35], "group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[9,6,4,2], -"group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[11,0,0,0,102], +"group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[11,0,0,0,106], +"group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[11,0,0,0,111], "group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[9,6,4,6], -"group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[11,0,0,0,107], "group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[9,6,4,4], -"group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[11,0,0,0,105], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea03293996964a8bb617215508908048d4":[11,0,0,0,34,42], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea05c73ad09f25570a50068de13333e41a":[11,0,0,0,34,57], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0784fa0e5bdbacd1e14c2d6ba0c42992":[11,0,0,0,34,27], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0830a0c1c62c444ade7cf15599e92345":[11,0,0,0,34,47], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0a3c723f67cb6d95dba0c0ccc7d898f8":[11,0,0,0,34,69], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0dd5ce6fa8932e0d378b86c393d8f726":[11,0,0,0,34,11], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea11ed9b0cc3b4525c830de7185fd8d7df":[11,0,0,0,34,62], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1347e093d73e88489ba3ebda56a393a5":[11,0,0,0,34,32], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea138fedfdb81765272d22b0eca9aec22b":[11,0,0,0,34,9], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea157c1db7d8edd3cd3b649e7756a559c8":[11,0,0,0,34,81], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea166e60d6689436c1fb9169438d5db1b9":[11,0,0,0,34,13], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1d41be78df2704c54b906f7f0abbaa30":[11,0,0,0,34,51], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1ee866e12a483229599f4e3cfc358b36":[11,0,0,0,34,53], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea21ac48d2a499f6afa44cee92cebd8ae3":[11,0,0,0,34,83], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea220975eeb65cac57691adb3761a492bb":[11,0,0,0,34,50], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea228ece9e187ddbb80236851e9a09145c":[11,0,0,0,34,84], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea277d11b0d5e7fdfc6b5fb45470e6f63e":[11,0,0,0,34,39], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2be8537e80387a88197d3ed62ac3b954":[11,0,0,0,34,45], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2efae4ba6646ba040c371706f7f3a125":[11,0,0,0,34,56], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3733863fb466c1df6b00c9384a53e544":[11,0,0,0,34,86], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea385f0e1933f81529307fff61eb08ff8d":[11,0,0,0,34,54], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ac4744411849aff89001ee0350aed75":[11,0,0,0,34,60], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3cf47b821d473b717002b22619a9814e":[11,0,0,0,34,7], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ef26b531c1c2416850ebd539f08ba5e":[11,0,0,0,34,17], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3fd7c7c9587953adc8f317a615df6b83":[11,0,0,0,34,14], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea400831fe4ba52d4c454364a81ea3bfe4":[11,0,0,0,34,92], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea428409a7aaea6446b660574e4097c0bd":[11,0,0,0,34,91], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea439ada24e20de209e08e7dd398ca61ac":[11,0,0,0,34,66], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea525ee6d2330fca0929df75ffb8dec68e":[11,0,0,0,34,33], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea52a30bd1a5ca619ab19bb8178138e42f":[11,0,0,0,34,58], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea549fcdd8300f0c7434289db6326ec06a":[11,0,0,0,34,22], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea56913c617d46273743bb187bcd8e90c2":[11,0,0,0,34,65], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea569588399651cdd6b81de40be4b73fd8":[11,0,0,0,34,46], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea57ff348ebbae88bf904bc64ef284d83b":[11,0,0,0,34,20], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea598578cda71fe6ca34320bbd6ba1e887":[11,0,0,0,34,55], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5dcd48b2643d8a82a97b7abbc3928ea8":[11,0,0,0,34,82], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5e005569744e3246ba40d524f9a84fe4":[11,0,0,0,34,44], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea6164d17e9598f89c822b4be55814de0a":[11,0,0,0,34,48], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea63e1e08da7555313caf632a819db27d4":[11,0,0,0,34,41], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea669e4eea57595f569f329bfba900a15d":[11,0,0,0,34,3], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea693a74f3cd695016120bfdae3d3ced1a":[11,0,0,0,34,68], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea70b452bb6ce670e32c30fa237bceb731":[11,0,0,0,34,15], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7460d076c52a9fae65c9e00bac05ef19":[11,0,0,0,34,76], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea751322eb9f58fa33bf1f6e4923ff9abb":[11,0,0,0,34,1], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7708c82134391d257d6c354ae7bf1429":[11,0,0,0,34,31], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea78834452a5833032294abe1aa42055c6":[11,0,0,0,34,64], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7892390328672ed812b3b68bc3e0fe40":[11,0,0,0,34,52], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea78fbb32e1809d5767e55de3181d454b0":[11,0,0,0,34,19], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7e80eff7eefa68741f0a776d6d8feeae":[11,0,0,0,34,78], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea832a110c8b9eb42890f252a756c81bde":[11,0,0,0,34,36], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea86b3c4cf71dc5c5b441243db99ca696a":[11,0,0,0,34,61], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea883a86db0c05266214affd78d37e871f":[11,0,0,0,34,87], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8913c5b1378b1ffad7e2da975c454d15":[11,0,0,0,34,26], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d7393b324a076186bbde01a2cfe6b62":[11,0,0,0,34,49], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d9809cf381705f73af48d8f6809412b":[11,0,0,0,34,24], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8f6a44a37c29cb5ade4c5989467a880b":[11,0,0,0,34,75], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8ff0b2f6666e008de14d9b9721b87ead":[11,0,0,0,34,90], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea9004d6ff6b16b8877f760545a3c7be60":[11,0,0,0,34,63], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa0cad0c7a20ac23945a33dbc3d726718":[11,0,0,0,34,30], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa566f2c37d9a459ca95eee347cca68d0":[11,0,0,0,34,67], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa76ea751f1ee86567d27e9e30075d6db":[11,0,0,0,34,40], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa84e4902ebeb7ab468e3a4bd4acf4f90":[11,0,0,0,34,85], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa8c8eb9b32feb43ec214d8469655a0df":[11,0,0,0,34,88], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaab4585e187936b4f2abf22e9138ee271":[11,0,0,0,34,5], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaae70d627de34f9c881445f6fbcfcc2dd":[11,0,0,0,34,38], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaafce2cb6a31235606d12fb65a32a41c5":[11,0,0,0,34,80], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab0926aa28ea9bb73d2b0124c05c30a78":[11,0,0,0,34,89], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab2339b9e75c79dae3547255d1fb046cd":[11,0,0,0,34,2], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab460c34b18e1ae54219c3fb9e60544ef":[11,0,0,0,34,4], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaba11ed0aa8c8c7bd71d971a234df0a72":[11,0,0,0,34,21], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eabfb2738a1148ec7c039f2af640b28430":[11,0,0,0,34,71], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eac7157acd472d24de05aee3de57b8dc8a":[11,0,0,0,34,12], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eac9a937e393da4c3a77cf82463265dcee":[11,0,0,0,34,6], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ead32022a286b9cc6fbe60b1a0411370a7":[11,0,0,0,34,28], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ead603502e2545c533c4c01ba39e35a2b0":[11,0,0,0,34,16], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadb08a1c7b1f76e2962d44149bf488bf8":[11,0,0,0,34,34], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadbb64ba8a29fee913ded2163a5d16615":[11,0,0,0,34,10], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadff4760ab45fc182ab1e1fb68afa6714":[11,0,0,0,34,70], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae215f7e72fea4458fd971cdcb45d8e04":[11,0,0,0,34,18], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae24b2d70918c70e034ff574a516e0023":[11,0,0,0,34,59], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae5d5ca0131fbea1df03d7ad6d69ebfbd":[11,0,0,0,34,25], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae6286060884d4c80a88fa94fec58dda3":[11,0,0,0,34,0], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae898ee2a1e374f7d98aa483940c91511":[11,0,0,0,34,73], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae9d2323ce213a112ac90361f04a1ee5a":[11,0,0,0,34,43], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaec69fb61493d1c67316c02259b86bdc2":[11,0,0,0,34,35], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaec821397393facee38ddd4119473b992":[11,0,0,0,34,29], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaee14b94fcd4ab788e313e0789bec0cdc":[11,0,0,0,34,77], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaeef14469c992ebb09a43a8548db37401":[11,0,0,0,34,23], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf2b7eac7ff98aea6d9b240f6f51995c3":[11,0,0,0,34,72], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf48e3b9c89dba34054ea0833dbad4b57":[11,0,0,0,34,8], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf567d4d400062fab44f1b96c64cb93ac":[11,0,0,0,34,37], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf64cb8232e172aaa019c38b398d0a0bb":[11,0,0,0,34,74], -"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eafc1e8568187b2de76e2ddd5cc692908e":[11,0,0,0,34,79], +"group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[11,0,0,0,109], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea03293996964a8bb617215508908048d4":[11,0,0,0,35,42], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea05c73ad09f25570a50068de13333e41a":[11,0,0,0,35,57], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0784fa0e5bdbacd1e14c2d6ba0c42992":[11,0,0,0,35,27], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0830a0c1c62c444ade7cf15599e92345":[11,0,0,0,35,47], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0a3c723f67cb6d95dba0c0ccc7d898f8":[11,0,0,0,35,69], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0dd5ce6fa8932e0d378b86c393d8f726":[11,0,0,0,35,11], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea11ed9b0cc3b4525c830de7185fd8d7df":[11,0,0,0,35,62], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1347e093d73e88489ba3ebda56a393a5":[11,0,0,0,35,32], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea138fedfdb81765272d22b0eca9aec22b":[11,0,0,0,35,9], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea157c1db7d8edd3cd3b649e7756a559c8":[11,0,0,0,35,81], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea166e60d6689436c1fb9169438d5db1b9":[11,0,0,0,35,13], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1d41be78df2704c54b906f7f0abbaa30":[11,0,0,0,35,51], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea1ee866e12a483229599f4e3cfc358b36":[11,0,0,0,35,53], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea21ac48d2a499f6afa44cee92cebd8ae3":[11,0,0,0,35,83], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea220975eeb65cac57691adb3761a492bb":[11,0,0,0,35,50], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea228ece9e187ddbb80236851e9a09145c":[11,0,0,0,35,84], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea277d11b0d5e7fdfc6b5fb45470e6f63e":[11,0,0,0,35,39], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2be8537e80387a88197d3ed62ac3b954":[11,0,0,0,35,45], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea2efae4ba6646ba040c371706f7f3a125":[11,0,0,0,35,56], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3733863fb466c1df6b00c9384a53e544":[11,0,0,0,35,86], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea385f0e1933f81529307fff61eb08ff8d":[11,0,0,0,35,54], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ac4744411849aff89001ee0350aed75":[11,0,0,0,35,60], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3cf47b821d473b717002b22619a9814e":[11,0,0,0,35,7], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3ef26b531c1c2416850ebd539f08ba5e":[11,0,0,0,35,17], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea3fd7c7c9587953adc8f317a615df6b83":[11,0,0,0,35,14], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea400831fe4ba52d4c454364a81ea3bfe4":[11,0,0,0,35,92], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea428409a7aaea6446b660574e4097c0bd":[11,0,0,0,35,91], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea439ada24e20de209e08e7dd398ca61ac":[11,0,0,0,35,66], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea525ee6d2330fca0929df75ffb8dec68e":[11,0,0,0,35,33], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea52a30bd1a5ca619ab19bb8178138e42f":[11,0,0,0,35,58], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea549fcdd8300f0c7434289db6326ec06a":[11,0,0,0,35,22], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea56913c617d46273743bb187bcd8e90c2":[11,0,0,0,35,65], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea569588399651cdd6b81de40be4b73fd8":[11,0,0,0,35,46], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea57ff348ebbae88bf904bc64ef284d83b":[11,0,0,0,35,20], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea598578cda71fe6ca34320bbd6ba1e887":[11,0,0,0,35,55], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5dcd48b2643d8a82a97b7abbc3928ea8":[11,0,0,0,35,82], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea5e005569744e3246ba40d524f9a84fe4":[11,0,0,0,35,44], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea6164d17e9598f89c822b4be55814de0a":[11,0,0,0,35,48], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea63e1e08da7555313caf632a819db27d4":[11,0,0,0,35,41], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea669e4eea57595f569f329bfba900a15d":[11,0,0,0,35,3], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea693a74f3cd695016120bfdae3d3ced1a":[11,0,0,0,35,68], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea70b452bb6ce670e32c30fa237bceb731":[11,0,0,0,35,15], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7460d076c52a9fae65c9e00bac05ef19":[11,0,0,0,35,76], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea751322eb9f58fa33bf1f6e4923ff9abb":[11,0,0,0,35,1], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7708c82134391d257d6c354ae7bf1429":[11,0,0,0,35,31], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea78834452a5833032294abe1aa42055c6":[11,0,0,0,35,64], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7892390328672ed812b3b68bc3e0fe40":[11,0,0,0,35,52], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea78fbb32e1809d5767e55de3181d454b0":[11,0,0,0,35,19], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea7e80eff7eefa68741f0a776d6d8feeae":[11,0,0,0,35,78], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea832a110c8b9eb42890f252a756c81bde":[11,0,0,0,35,36], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea86b3c4cf71dc5c5b441243db99ca696a":[11,0,0,0,35,61], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea883a86db0c05266214affd78d37e871f":[11,0,0,0,35,87], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8913c5b1378b1ffad7e2da975c454d15":[11,0,0,0,35,26], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d7393b324a076186bbde01a2cfe6b62":[11,0,0,0,35,49], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8d9809cf381705f73af48d8f6809412b":[11,0,0,0,35,24], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8f6a44a37c29cb5ade4c5989467a880b":[11,0,0,0,35,75], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea8ff0b2f6666e008de14d9b9721b87ead":[11,0,0,0,35,90], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea9004d6ff6b16b8877f760545a3c7be60":[11,0,0,0,35,63], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa0cad0c7a20ac23945a33dbc3d726718":[11,0,0,0,35,30], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa566f2c37d9a459ca95eee347cca68d0":[11,0,0,0,35,67], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa76ea751f1ee86567d27e9e30075d6db":[11,0,0,0,35,40], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa84e4902ebeb7ab468e3a4bd4acf4f90":[11,0,0,0,35,85], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaa8c8eb9b32feb43ec214d8469655a0df":[11,0,0,0,35,88], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaab4585e187936b4f2abf22e9138ee271":[11,0,0,0,35,5], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaae70d627de34f9c881445f6fbcfcc2dd":[11,0,0,0,35,38], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaafce2cb6a31235606d12fb65a32a41c5":[11,0,0,0,35,80], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab0926aa28ea9bb73d2b0124c05c30a78":[11,0,0,0,35,89], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab2339b9e75c79dae3547255d1fb046cd":[11,0,0,0,35,2], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eab460c34b18e1ae54219c3fb9e60544ef":[11,0,0,0,35,4], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaba11ed0aa8c8c7bd71d971a234df0a72":[11,0,0,0,35,21], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eabfb2738a1148ec7c039f2af640b28430":[11,0,0,0,35,71], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eac7157acd472d24de05aee3de57b8dc8a":[11,0,0,0,35,12], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eac9a937e393da4c3a77cf82463265dcee":[11,0,0,0,35,6], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ead32022a286b9cc6fbe60b1a0411370a7":[11,0,0,0,35,28], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ead603502e2545c533c4c01ba39e35a2b0":[11,0,0,0,35,16], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadb08a1c7b1f76e2962d44149bf488bf8":[11,0,0,0,35,34], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadbb64ba8a29fee913ded2163a5d16615":[11,0,0,0,35,10], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eadff4760ab45fc182ab1e1fb68afa6714":[11,0,0,0,35,70], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae215f7e72fea4458fd971cdcb45d8e04":[11,0,0,0,35,18], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae24b2d70918c70e034ff574a516e0023":[11,0,0,0,35,59], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae5d5ca0131fbea1df03d7ad6d69ebfbd":[11,0,0,0,35,25], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae6286060884d4c80a88fa94fec58dda3":[11,0,0,0,35,0], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae898ee2a1e374f7d98aa483940c91511":[11,0,0,0,35,73], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eae9d2323ce213a112ac90361f04a1ee5a":[11,0,0,0,35,43], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaec69fb61493d1c67316c02259b86bdc2":[11,0,0,0,35,35], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaec821397393facee38ddd4119473b992":[11,0,0,0,35,29], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaee14b94fcd4ab788e313e0789bec0cdc":[11,0,0,0,35,77], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaeef14469c992ebb09a43a8548db37401":[11,0,0,0,35,23], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf2b7eac7ff98aea6d9b240f6f51995c3":[11,0,0,0,35,72], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf48e3b9c89dba34054ea0833dbad4b57":[11,0,0,0,35,8], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf567d4d400062fab44f1b96c64cb93ac":[11,0,0,0,35,37], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eaf64cb8232e172aaa019c38b398d0a0bb":[11,0,0,0,35,74], +"group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eafc1e8568187b2de76e2ddd5cc692908e":[11,0,0,0,35,79], "group__Protocols-and-Plugins.html":[9,10], "group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[9,10,4], -"group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[11,0,0,0,86], -"group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[11,0,0,0,163], +"group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[11,0,0,0,90], +"group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[11,0,0,0,168], "group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[9,10,9], "group__Protocols-and-Plugins.html#ga40994491e1567f91f579d2b444775266":[11,0,0,0,13], "group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[9,10,5], -"group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[11,0,0,0,98], +"group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[11,0,0,0,102], "group__Protocols-and-Plugins.html#ga83f7a924ba790fa273476075a59f08b0":[11,0,0,0,12], -"group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[11,0,0,0,125], +"group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[11,0,0,0,130], "group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[9,10,6], -"group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[11,0,0,0,127], +"group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[11,0,0,0,132], "group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[9,10,8], -"group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[11,0,0,0,126], +"group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[11,0,0,0,131], "group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[9,10,7], "group__callback-when-writeable.html":[9,1], "group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[9,1,1], -"group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[11,0,0,0,54], +"group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[11,0,0,0,55], "group__callback-when-writeable.html#ga60939cf0c073d933fde3d17f3591caf5":[9,1,5], -"group__callback-when-writeable.html#ga60939cf0c073d933fde3d17f3591caf5":[11,0,0,0,59], +"group__callback-when-writeable.html#ga60939cf0c073d933fde3d17f3591caf5":[11,0,0,0,60], "group__callback-when-writeable.html#ga8570860e191b62db264f2bac67354ea8":[9,1,4], -"group__callback-when-writeable.html#ga8570860e191b62db264f2bac67354ea8":[11,0,0,0,58], +"group__callback-when-writeable.html#ga8570860e191b62db264f2bac67354ea8":[11,0,0,0,59], "group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[9,1,2], -"group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[11,0,0,0,56], +"group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[11,0,0,0,57], "group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[9,1,7], -"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[11,0,0,0,101], -"group__callback-when-writeable.html#gaad3d524a84d2be08ac85153bc158504b":[11,0,0,0,55], -"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[11,0,0,0,57], +"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[11,0,0,0,105], +"group__callback-when-writeable.html#gaad3d524a84d2be08ac85153bc158504b":[11,0,0,0,56], "group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[9,1,3], +"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[11,0,0,0,58], "group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[9,1,6], -"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[11,0,0,0,97], +"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[11,0,0,0,101], +"group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[11,0,0,0,54], "group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,1,0], -"group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[11,0,0,0,53], "group__cgi.html":[9,19], "group__client.html":[9,2], "group__client.html#ga0c966136905f467816307cfba6deb5fd":[9,2,4], -"group__client.html#ga0c966136905f467816307cfba6deb5fd":[11,0,0,0,69], -"group__client.html#ga26588fb345083076c14169dd5859f57a":[11,0,0,0,70], -"group__client.html#ga4450c34200bf9dab3beb90ef23221870":[11,0,0,0,109], +"group__client.html#ga0c966136905f467816307cfba6deb5fd":[11,0,0,0,70], +"group__client.html#ga26588fb345083076c14169dd5859f57a":[11,0,0,0,71], +"group__client.html#ga4450c34200bf9dab3beb90ef23221870":[11,0,0,0,113], "group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[9,2,2], -"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[11,0,0,0,67], -"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[11,0,0,0,112], +"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[11,0,0,0,68], +"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[11,0,0,0,116], "group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[9,2,6], +"group__client.html#ga715efffc0c4e8fbf72a4293008eb2187":[11,0,0,0,112], "group__client.html#ga715efffc0c4e8fbf72a4293008eb2187":[9,2,5], -"group__client.html#ga715efffc0c4e8fbf72a4293008eb2187":[11,0,0,0,108], "group__client.html#ga96f3dbad54b2853969cfa933d66871ce":[9,2,1], -"group__client.html#ga96f3dbad54b2853969cfa933d66871ce":[11,0,0,0,24], +"group__client.html#ga96f3dbad54b2853969cfa933d66871ce":[11,0,0,0,25], "group__client.html#gac6a8558b4410961a880241c2ac1271e2":[9,2,3], -"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[11,0,0,0,68], -"group__client.html#gga96f3dbad54b2853969cfa933d66871cea3e952d09a44cf5818d73e0cd89dded0a":[11,0,0,0,24,3], -"group__client.html#gga96f3dbad54b2853969cfa933d66871cea7051e79bb97b69862f2ff00ae5298ec7":[11,0,0,0,24,0], -"group__client.html#gga96f3dbad54b2853969cfa933d66871cea89866ab6a749aaa1684158c55f826b35":[11,0,0,0,24,2], -"group__client.html#gga96f3dbad54b2853969cfa933d66871ceafc72c0ffbc7462bdddd4ce7bd99ac092":[11,0,0,0,24,1], +"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[11,0,0,0,69], +"group__client.html#gga96f3dbad54b2853969cfa933d66871cea3e952d09a44cf5818d73e0cd89dded0a":[11,0,0,0,25,3], +"group__client.html#gga96f3dbad54b2853969cfa933d66871cea7051e79bb97b69862f2ff00ae5298ec7":[11,0,0,0,25,0], +"group__client.html#gga96f3dbad54b2853969cfa933d66871cea89866ab6a749aaa1684158c55f826b35":[11,0,0,0,25,2], +"group__client.html#gga96f3dbad54b2853969cfa933d66871ceafc72c0ffbc7462bdddd4ce7bd99ac092":[11,0,0,0,25,1], "group__context-and-vhost.html":[9,4], -"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,4,8], -"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[11,0,0,0,103], -"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,75], -"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,4,7], -"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,4,14], -"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[11,0,0,0,170], -"group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[11,0,0,0,26], +"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,4,9], +"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[11,0,0,0,107], +"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,79], +"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,4,8], +"group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232":[11,0,0,0,73], +"group__context-and-vhost.html#ga1863f0a15ab9da0f07be7bd66230d232":[9,4,4], +"group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135":[11,0,0,0,121], +"group__context-and-vhost.html#ga1dce5453d72a2037051aba5410e18135":[9,4,10], +"group__context-and-vhost.html#ga256a49a07d2dd5062d6cf7bdc3668096":[11,0,0,0,15], +"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,4,15], +"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[11,0,0,0,175], +"group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[11,0,0,0,27], "group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[9,4,3], -"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,4,11], -"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[11,0,0,0,144], -"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,4,12], -"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[11,0,0,0,162], -"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[11,0,0,0,72], -"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,4,4], -"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[11,0,0,0,118], -"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[9,4,10], -"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[9,4,13], -"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[11,0,0,0,169], -"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[11,0,0,0,117], -"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[9,4,9], -"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[11,0,0,0,73], -"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[9,4,5], -"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[11,0,0,0,74], -"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[9,4,6], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[11,0,0,0,26,8], +"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,4,12], +"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[11,0,0,0,149], +"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[11,0,0,0,167], +"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,4,13], +"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[11,0,0,0,74], +"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,4,5], +"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[9,4,11], +"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[11,0,0,0,122], +"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[9,4,14], +"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[11,0,0,0,174], +"group__context-and-vhost.html#gaa327c9d543edaddf06765d2c6131065c":[11,0,0,0,75], +"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[11,0,0,0,77], +"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[9,4,6], +"group__context-and-vhost.html#gaf023d1898a5f773288568f55b82d19e8":[11,0,0,0,76], +"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[11,0,0,0,78], +"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[9,4,7], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[11,0,0,0,27,8], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[9,4,3,8], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d":[11,0,0,0,26,2], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d":[11,0,0,0,27,2], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d":[9,4,3,2], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6":[11,0,0,0,26,3], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6":[11,0,0,0,27,3], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6":[9,4,3,3], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092":[11,0,0,0,26,0], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092":[11,0,0,0,27,0], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092":[9,4,3,0], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9":[11,0,0,0,26,4], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9":[11,0,0,0,27,4], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9":[9,4,3,4], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada":[11,0,0,0,26,10], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada":[11,0,0,0,27,10], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada":[9,4,3,10], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93":[11,0,0,0,26,5], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93":[9,4,3,5], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c":[11,0,0,0,26,1], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c":[9,4,3,1], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[11,0,0,0,26,11], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[9,4,3,11] +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93":[11,0,0,0,27,5] }; diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js index 560d28220cbc60794a10ae01b7e0fb18baa4ff06..3af38e820c6ab8eb7d740451a598990e226f33f0 100644 --- a/doc/html/navtreeindex1.js +++ b/doc/html/navtreeindex1.js @@ -1,253 +1,253 @@ var NAVTREEINDEX1 = { -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd":[11,0,0,0,26,17], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93":[9,4,3,5], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c":[11,0,0,0,27,1], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c":[9,4,3,1], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[11,0,0,0,27,11], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a":[9,4,3,11], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd":[11,0,0,0,27,17], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd":[9,4,3,17], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[11,0,0,0,26,13], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[11,0,0,0,27,13], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[9,4,3,13], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[11,0,0,0,26,7], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[11,0,0,0,27,7], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[9,4,3,7], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[11,0,0,0,26,6], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[11,0,0,0,27,6], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[9,4,3,6], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[11,0,0,0,26,14], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[11,0,0,0,27,14], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[9,4,3,14], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160":[11,0,0,0,26,16], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160":[11,0,0,0,27,16], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160":[9,4,3,16], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e":[11,0,0,0,26,12], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e":[11,0,0,0,27,12], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e":[9,4,3,12], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8":[11,0,0,0,26,15], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8":[11,0,0,0,27,15], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8":[9,4,3,15], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e":[11,0,0,0,26,9], +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e":[11,0,0,0,27,9], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e":[9,4,3,9], "group__ev.html":[9,21], "group__ev.html#ga3b0ffd4d2b4fa791c0fd75353a330208":[11,0,0,0,9], -"group__ev.html#ga3fdd23ded693b21853356dc9eaef5ccc":[11,0,0,0,80], -"group__ev.html#ga5caf14a420a2a0bd687a1fc952f8d64e":[11,0,0,0,82], -"group__ev.html#gaabfc0880d6a98133550c61aa01ef3563":[11,0,0,0,81], +"group__ev.html#ga3fdd23ded693b21853356dc9eaef5ccc":[11,0,0,0,84], +"group__ev.html#ga5caf14a420a2a0bd687a1fc952f8d64e":[11,0,0,0,86], +"group__ev.html#gaabfc0880d6a98133550c61aa01ef3563":[11,0,0,0,85], "group__extensions.html":[9,5], "group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e":[9,5,6], -"group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e":[11,0,0,0,84], +"group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e":[11,0,0,0,88], "group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b":[9,5,5], -"group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b":[11,0,0,0,83], +"group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b":[11,0,0,0,87], "group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0":[9,5,3], "group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0":[11,0,0,0,10], "group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[9,5,4], -"group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[11,0,0,0,28], -"group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[11,0,0,0,142], +"group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[11,0,0,0,29], +"group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[11,0,0,0,147], "group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[9,5,7], -"group__extensions.html#gae9993815eee72c6070300a0ae2f022d7":[11,0,0,0,29], +"group__extensions.html#gae9993815eee72c6070300a0ae2f022d7":[11,0,0,0,30], "group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e":[9,5,4,1], -"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e":[11,0,0,0,28,1], +"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e":[11,0,0,0,29,1], "group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880":[9,5,4,2], -"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880":[11,0,0,0,28,2], +"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880":[11,0,0,0,29,2], "group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c":[9,5,4,0], -"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c":[11,0,0,0,28,0], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a05b74161bfab0f815d7fd47b85e20bfc":[11,0,0,0,29,9], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a0b220da55b7d7a9579175f1ec81579fb":[11,0,0,0,29,17], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a22a8130d0db03d62154d0502b1737a48":[11,0,0,0,29,22], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a246b82fadb41dc04cf4d40fd42987458":[11,0,0,0,29,19], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a25ceebb1ee06c2f0963b44165065efb9":[11,0,0,0,29,26], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a270b950562f97510ec06b02dbcbace11":[11,0,0,0,29,23], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a5a4cacc86ebddc8cb5a3f4ec91ba3fba":[11,0,0,0,29,12], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a648e8e3988ca8bdf20ddcfd2a14e3f10":[11,0,0,0,29,13], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a6cbdd5cfd6d39e3cacd4ca02e2ae54e3":[11,0,0,0,29,8], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a741d5d795895b192cbde6adbc851a822":[11,0,0,0,29,11], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a7fe88715ded486af17228050a1d05e90":[11,0,0,0,29,2], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a83dff5bb6cd4c6e0cc85cb12fb9c0178":[11,0,0,0,29,5], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a862b122e8f17a50f5ab6e7b56087c09c":[11,0,0,0,29,20], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a866a849e7d59a3a44c92ecdfb1393e4e":[11,0,0,0,29,0], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a8e4e3c201d029c8d78457fb4fdddef4a":[11,0,0,0,29,7], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa2901960832871f606354d58e58b6453":[11,0,0,0,29,4], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa4eb48182ed8bd10d257df5a8b154cc2":[11,0,0,0,29,24], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa6d94d15f31176a4e1214c4c31edd5f8":[11,0,0,0,29,18], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aaf81548db378fa156a7cf290abff87ad":[11,0,0,0,29,21], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7abb36b02569c81df4509f58f964a8155b":[11,0,0,0,29,3], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7abc92c2b16b0d54b3a9736e62a520a446":[11,0,0,0,29,10], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ac2af19277affbbc731379ddfb38f820e":[11,0,0,0,29,16], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ac5d7be02c676c836bb8ec448803dd606":[11,0,0,0,29,14], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ad113e96df806fb20fd4f02dbe19e4f4b":[11,0,0,0,29,6], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ad426ef79eec1b6e036118f64e6fa62f5":[11,0,0,0,29,25], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ae57bedd24d5a29f5f381f8155c2ab3b8":[11,0,0,0,29,15], -"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7afa4a8739f6424c4dac3eead479628002":[11,0,0,0,29,1], +"group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c":[11,0,0,0,29,0], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a05b74161bfab0f815d7fd47b85e20bfc":[11,0,0,0,30,9], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a0b220da55b7d7a9579175f1ec81579fb":[11,0,0,0,30,17], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a22a8130d0db03d62154d0502b1737a48":[11,0,0,0,30,22], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a246b82fadb41dc04cf4d40fd42987458":[11,0,0,0,30,19], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a25ceebb1ee06c2f0963b44165065efb9":[11,0,0,0,30,26], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a270b950562f97510ec06b02dbcbace11":[11,0,0,0,30,23], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a5a4cacc86ebddc8cb5a3f4ec91ba3fba":[11,0,0,0,30,12], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a648e8e3988ca8bdf20ddcfd2a14e3f10":[11,0,0,0,30,13], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a6cbdd5cfd6d39e3cacd4ca02e2ae54e3":[11,0,0,0,30,8], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a741d5d795895b192cbde6adbc851a822":[11,0,0,0,30,11], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a7fe88715ded486af17228050a1d05e90":[11,0,0,0,30,2], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a83dff5bb6cd4c6e0cc85cb12fb9c0178":[11,0,0,0,30,5], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a862b122e8f17a50f5ab6e7b56087c09c":[11,0,0,0,30,20], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a866a849e7d59a3a44c92ecdfb1393e4e":[11,0,0,0,30,0], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7a8e4e3c201d029c8d78457fb4fdddef4a":[11,0,0,0,30,7], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa2901960832871f606354d58e58b6453":[11,0,0,0,30,4], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa4eb48182ed8bd10d257df5a8b154cc2":[11,0,0,0,30,24], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aa6d94d15f31176a4e1214c4c31edd5f8":[11,0,0,0,30,18], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7aaf81548db378fa156a7cf290abff87ad":[11,0,0,0,30,21], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7abb36b02569c81df4509f58f964a8155b":[11,0,0,0,30,3], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7abc92c2b16b0d54b3a9736e62a520a446":[11,0,0,0,30,10], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ac2af19277affbbc731379ddfb38f820e":[11,0,0,0,30,16], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ac5d7be02c676c836bb8ec448803dd606":[11,0,0,0,30,14], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ad113e96df806fb20fd4f02dbe19e4f4b":[11,0,0,0,30,6], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ad426ef79eec1b6e036118f64e6fa62f5":[11,0,0,0,30,25], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7ae57bedd24d5a29f5f381f8155c2ab3b8":[11,0,0,0,30,15], +"group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7afa4a8739f6424c4dac3eead479628002":[11,0,0,0,30,1], "group__fops.html":[9,20], "group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[9,20,1], -"group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[11,0,0,0,91], +"group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[11,0,0,0,95], "group__form-parsing.html":[9,6,0], -"group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[11,0,0,0,148], +"group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[11,0,0,0,153], "group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[9,6,0,2], -"group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[11,0,0,0,152], +"group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[11,0,0,0,157], "group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[9,6,0,6], -"group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[11,0,0,0,151], +"group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[11,0,0,0,156], "group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[9,6,0,5], "group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[9,6,0,1], -"group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[11,0,0,0,33], +"group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[11,0,0,0,34], "group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e":[9,6,0,0], -"group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e":[11,0,0,0,16], -"group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[11,0,0,0,150], +"group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e":[11,0,0,0,17], +"group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[11,0,0,0,155], "group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[9,6,0,4], -"group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[11,0,0,0,153], +"group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[11,0,0,0,158], "group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[9,6,0,7], -"group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[11,0,0,0,149], +"group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[11,0,0,0,154], "group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[9,6,0,3], "group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[9,6,0,1,2], -"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[11,0,0,0,33,2], +"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[11,0,0,0,34,2], "group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7":[9,6,0,1,1], -"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7":[11,0,0,0,33,1], +"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7":[11,0,0,0,34,1], "group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f":[9,6,0,1,0], -"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f":[11,0,0,0,33,0], +"group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f":[11,0,0,0,34,0], "group__generic-sessions.html":[9,10,0], "group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1":[9,10,0,5], -"group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1":[11,0,0,0,36], +"group__generic-sessions.html#ga7c2dc7bfb4ccb91c5d771f9e9ea237e1":[11,0,0,0,37], "group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e":[9,10,0,4], -"group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e":[11,0,0,0,30], +"group__generic-sessions.html#gaa93946b3d921072209d5cd8cdfa5332e":[11,0,0,0,31], "group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf":[9,10,0,5,1], -"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf":[11,0,0,0,36,1], +"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf":[11,0,0,0,37,1], "group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a":[9,10,0,5,3], -"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a":[11,0,0,0,36,3], +"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a":[11,0,0,0,37,3], "group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887":[9,10,0,5,2], -"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887":[11,0,0,0,36,2], +"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887":[11,0,0,0,37,2], "group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57":[9,10,0,5,0], -"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57":[11,0,0,0,36,0], +"group__generic-sessions.html#gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57":[11,0,0,0,37,0], "group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308":[9,10,0,4,0], -"group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308":[11,0,0,0,30,0], +"group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308":[11,0,0,0,31,0], "group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde":[9,10,0,4,1], -"group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde":[11,0,0,0,30,1], +"group__generic-sessions.html#ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde":[11,0,0,0,31,1], "group__html-chunked-substitution.html":[9,6,1], "group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60":[9,6,1,2], -"group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60":[11,0,0,0,66], +"group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60":[11,0,0,0,67], "group__html-chunked-substitution.html#ga669d3d7ce2d5f193473f649a89b3e7ac":[11,0,0,0,14], -"group__html-chunked-substitution.html#gabc3b93f68c8bdd857ad32913628dfa8d":[11,0,0,0,21], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da08107f6b0e1d7c9e2ca100700cc7200f":[11,0,0,0,21,23], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da145570ed1178d3d90ad9b7652fea83cf":[11,0,0,0,21,21], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da1558c42d80f54def5f3277dc879d2844":[11,0,0,0,21,12], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da2637ec8a704c0d7fcb7ff8ce5d871be0":[11,0,0,0,21,20], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da299a2d262210540b593420fe89e01b32":[11,0,0,0,21,24], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da2e57a633f7a2422f67bf207648519e30":[11,0,0,0,21,22], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da36b5bcf2059ae3c84a47e080822239c7":[11,0,0,0,21,14], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da40246e02220192ce8d7f86591ca1cfe4":[11,0,0,0,21,13], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da419c919f74b88d18803358141ab9471c":[11,0,0,0,21,9], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da49cf9c4c184f9e4d265ceae249e92477":[11,0,0,0,21,6], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da53df069872b37830e4296f32e7ec20d8":[11,0,0,0,21,4], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da63eb71a406e943d4634c357d60dd96df":[11,0,0,0,21,11], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da67278d96cfa0eb507535b94338810d65":[11,0,0,0,21,16], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da6964f9591ba7284dc4bd388d40c106a9":[11,0,0,0,21,15], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da9632802fcd318d1676be7589e6004e96":[11,0,0,0,21,3], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daa55ceddb5bb2104bfcfefb16995192a4":[11,0,0,0,21,2], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daafd60e3a2073e04b8f2247f8f9ac9710":[11,0,0,0,21,19], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dab355dd546e62b1478fe3ef94b554f75c":[11,0,0,0,21,27], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dab42dfcbd67b4e66096e3a8e924b6d6c9":[11,0,0,0,21,17], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac3d4da4de851d5c8f95748145b59716a":[11,0,0,0,21,18], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac96829d2c2cb76feb1549f0fac72c69e":[11,0,0,0,21,26], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac9c5b4e80aa858cfe2763656db1f16e3":[11,0,0,0,21,25], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad000a2e30c534c201201dd74fac8d2f9":[11,0,0,0,21,1], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad34cd21de350cd4fa83b8099e3993b91":[11,0,0,0,21,0], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad771b2a0ab88db11b2719c8e5086fb48":[11,0,0,0,21,7], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dadd02813da14cfdc7fe83029b8779ea4b":[11,0,0,0,21,29], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dae301c12d0cf56920659cb7b947a95267":[11,0,0,0,21,5], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daefdfc7b525c87b911d6e92a30e36cfec":[11,0,0,0,21,28], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daf06c31278cb67d7eec4b2b8157b9ad25":[11,0,0,0,21,10], -"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dafac24097912a70f224166528ce44b83b":[11,0,0,0,21,8], +"group__html-chunked-substitution.html#gabc3b93f68c8bdd857ad32913628dfa8d":[11,0,0,0,22], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da08107f6b0e1d7c9e2ca100700cc7200f":[11,0,0,0,22,23], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da145570ed1178d3d90ad9b7652fea83cf":[11,0,0,0,22,21], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da1558c42d80f54def5f3277dc879d2844":[11,0,0,0,22,12], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da2637ec8a704c0d7fcb7ff8ce5d871be0":[11,0,0,0,22,20], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da299a2d262210540b593420fe89e01b32":[11,0,0,0,22,24], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da2e57a633f7a2422f67bf207648519e30":[11,0,0,0,22,22], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da36b5bcf2059ae3c84a47e080822239c7":[11,0,0,0,22,14], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da40246e02220192ce8d7f86591ca1cfe4":[11,0,0,0,22,13], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da419c919f74b88d18803358141ab9471c":[11,0,0,0,22,9], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da49cf9c4c184f9e4d265ceae249e92477":[11,0,0,0,22,6], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da53df069872b37830e4296f32e7ec20d8":[11,0,0,0,22,4], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da63eb71a406e943d4634c357d60dd96df":[11,0,0,0,22,11], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da67278d96cfa0eb507535b94338810d65":[11,0,0,0,22,16], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da6964f9591ba7284dc4bd388d40c106a9":[11,0,0,0,22,15], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da9632802fcd318d1676be7589e6004e96":[11,0,0,0,22,3], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daa55ceddb5bb2104bfcfefb16995192a4":[11,0,0,0,22,2], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daafd60e3a2073e04b8f2247f8f9ac9710":[11,0,0,0,22,19], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dab355dd546e62b1478fe3ef94b554f75c":[11,0,0,0,22,27], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dab42dfcbd67b4e66096e3a8e924b6d6c9":[11,0,0,0,22,17], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac3d4da4de851d5c8f95748145b59716a":[11,0,0,0,22,18], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac96829d2c2cb76feb1549f0fac72c69e":[11,0,0,0,22,26], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac9c5b4e80aa858cfe2763656db1f16e3":[11,0,0,0,22,25], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad000a2e30c534c201201dd74fac8d2f9":[11,0,0,0,22,1], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad34cd21de350cd4fa83b8099e3993b91":[11,0,0,0,22,0], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad771b2a0ab88db11b2719c8e5086fb48":[11,0,0,0,22,7], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dadd02813da14cfdc7fe83029b8779ea4b":[11,0,0,0,22,29], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dae301c12d0cf56920659cb7b947a95267":[11,0,0,0,22,5], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daefdfc7b525c87b911d6e92a30e36cfec":[11,0,0,0,22,28], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daf06c31278cb67d7eec4b2b8157b9ad25":[11,0,0,0,22,10], +"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dafac24097912a70f224166528ce44b83b":[11,0,0,0,22,8], "group__http.html":[9,6], +"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[11,0,0,0,114], "group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[9,6,7], -"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[11,0,0,0,110], -"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[11,0,0,0,130], +"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[11,0,0,0,135], "group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[9,6,9], +"group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[11,0,0,0,115], "group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[9,6,8], -"group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[11,0,0,0,111], "group__httpft.html":[9,6,2], -"group__httpft.html#ga29e1123f6d56cd777b3e5bf9ca40f9e5":[11,0,0,0,135], -"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[11,0,0,0,134], +"group__httpft.html#ga29e1123f6d56cd777b3e5bf9ca40f9e5":[11,0,0,0,140], +"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[11,0,0,0,139], "group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[9,6,2,1], "group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[9,6,2,0], -"group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[11,0,0,0,93], +"group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[11,0,0,0,97], "group__log.html":[9,7], -"group__log.html#ga14542b84d2c76efa7814124bb10f9c5f":[11,0,0,0,31], -"group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[11,0,0,0,143], +"group__log.html#ga14542b84d2c76efa7814124bb10f9c5f":[11,0,0,0,32], +"group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[11,0,0,0,148], "group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[9,7,0], -"group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[11,0,0,0,168], +"group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[11,0,0,0,173], "group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[9,7,3], -"group__log.html#ga74eb146969f0595e12ea835851b4588e":[11,0,0,0,40], -"group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[11,0,0,0,167], +"group__log.html#ga74eb146969f0595e12ea835851b4588e":[11,0,0,0,41], +"group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[11,0,0,0,172], "group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[9,7,2], -"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[11,0,0,0,166], +"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[11,0,0,0,171], "group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[9,7,1], -"group__log.html#gaf5f07837692b2f231a79da8a058288aa":[11,0,0,0,39], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa083a44e71966a0e768426e477e1bc358":[11,0,0,0,31,8], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa2be9c1d50d05756078e9abc72c9e50cc":[11,0,0,0,31,5], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa52e5cd60bbb85f30ec0078a2c4be0c59":[11,0,0,0,31,3], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa6353ac9650d35e8958981eebcb4b67a9":[11,0,0,0,31,7], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faa12195bd6dd442763a8321c463a2c906":[11,0,0,0,31,1], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faacc8fe5891eba3cf4537bee50eaaa8fa":[11,0,0,0,31,10], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5facef27c02b70f1bc9140685bdfafe0942":[11,0,0,0,31,6], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad0b18841adbb4792c39981ec05702744":[11,0,0,0,31,4], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad40a82f6c94e6408dd003cf3f0231212":[11,0,0,0,31,2], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fae4235ca28326353e283bc7dd1b39bd86":[11,0,0,0,31,9], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faff4895280366d59ef0c5e9f4578241af":[11,0,0,0,31,0], +"group__log.html#gaf5f07837692b2f231a79da8a058288aa":[11,0,0,0,40], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa083a44e71966a0e768426e477e1bc358":[11,0,0,0,32,8], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa2be9c1d50d05756078e9abc72c9e50cc":[11,0,0,0,32,5], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa52e5cd60bbb85f30ec0078a2c4be0c59":[11,0,0,0,32,3], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa6353ac9650d35e8958981eebcb4b67a9":[11,0,0,0,32,7], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faa12195bd6dd442763a8321c463a2c906":[11,0,0,0,32,1], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faacc8fe5891eba3cf4537bee50eaaa8fa":[11,0,0,0,32,10], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5facef27c02b70f1bc9140685bdfafe0942":[11,0,0,0,32,6], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad0b18841adbb4792c39981ec05702744":[11,0,0,0,32,4], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad40a82f6c94e6408dd003cf3f0231212":[11,0,0,0,32,2], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fae4235ca28326353e283bc7dd1b39bd86":[11,0,0,0,32,9], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faff4895280366d59ef0c5e9f4578241af":[11,0,0,0,32,0], "group__misc.html":[9,8], "group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[9,8,2], -"group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[11,0,0,0,89], -"group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[11,0,0,0,128], -"group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[11,0,0,0,123], +"group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[11,0,0,0,93], +"group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[11,0,0,0,133], +"group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[11,0,0,0,128], "group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[9,8,8], -"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[11,0,0,0,122], +"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[11,0,0,0,127], "group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[9,8,7], "group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[9,8,6], -"group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[11,0,0,0,99], +"group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[11,0,0,0,103], "group__misc.html#ga629f48268fd1856b54b11172991b97d9":[9,8,3], -"group__misc.html#ga629f48268fd1856b54b11172991b97d9":[11,0,0,0,90], +"group__misc.html#ga629f48268fd1856b54b11172991b97d9":[11,0,0,0,94], "group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[9,8,5], -"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[11,0,0,0,94], -"group__misc.html#ga9f37d0e357de2ab4170723fcdb665d21":[11,0,0,0,147], +"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[11,0,0,0,98], +"group__misc.html#ga9f37d0e357de2ab4170723fcdb665d21":[11,0,0,0,152], "group__misc.html#ga9f37d0e357de2ab4170723fcdb665d21":[9,8,10], -"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[11,0,0,0,165], +"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[11,0,0,0,170], "group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,8,11], -"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,141], "group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9], +"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,146], "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,8,4], -"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[11,0,0,0,92], +"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[11,0,0,0,96], "group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[9,8,1], -"group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[11,0,0,0,88], +"group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[11,0,0,0,92], "group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[9,8,0], -"group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[11,0,0,0,76], +"group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[11,0,0,0,80], "group__net.html":[9,9], "group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,9,1], -"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[11,0,0,0,95], -"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[11,0,0,0,113], +"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[11,0,0,0,99], "group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,9,3], +"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[11,0,0,0,117], "group__net.html#gad01014fed09759741b6d23afccfdaacc":[9,9,2], -"group__net.html#gad01014fed09759741b6d23afccfdaacc":[11,0,0,0,96], +"group__net.html#gad01014fed09759741b6d23afccfdaacc":[11,0,0,0,100], "group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[9,9,0], -"group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[11,0,0,0,62], +"group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[11,0,0,0,63], "group__pur.html":[9,12], -"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[11,0,0,0,154], +"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[11,0,0,0,159], "group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[9,12,1], +"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[11,0,0,0,123], "group__pur.html#gab15187efcfa256b7c928562c182b92a3":[9,12,0], -"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[11,0,0,0,119], "group__sending-data.html":[9,13], "group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[9,13,0], -"group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[11,0,0,0,35], -"group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[11,0,0,0,164], +"group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[11,0,0,0,36], +"group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[11,0,0,0,169], "group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[9,13,1], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[9,13,0,2], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[11,0,0,0,35,2], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[11,0,0,0,36,2], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[9,13,0,5], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[11,0,0,0,35,8], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[11,0,0,0,36,8], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[9,13,0,6], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[11,0,0,0,35,9], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da6e556322ff8f205bf311608f7f6e6559":[11,0,0,0,35,4], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[11,0,0,0,36,9], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da6e556322ff8f205bf311608f7f6e6559":[11,0,0,0,36,4], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[9,13,0,0], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[11,0,0,0,35,0], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dab7e7a62cf6f456c09c21dff24dad9039":[11,0,0,0,35,5], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[11,0,0,0,36,0], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dab7e7a62cf6f456c09c21dff24dad9039":[11,0,0,0,36,5], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[9,13,0,3], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[11,0,0,0,35,3], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dae7d8a025a65524652fe9e24c2654c935":[11,0,0,0,35,6], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[11,0,0,0,36,3], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dae7d8a025a65524652fe9e24c2654c935":[11,0,0,0,36,6], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[9,13,0,1], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[11,0,0,0,35,1], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[11,0,0,0,36,1], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,13,0,4], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[11,0,0,0,35,7], -"group__service.html":[9,0], -"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[9,0,1], -"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,61], -"group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241":[11,0,0,0,137], -"group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241":[9,0,3], -"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0] +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[11,0,0,0,36,7], +"group__service.html":[9,0] }; diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js index e0505f2e39e210cfd2dc9b46ba6c12239ed6133d..96aea26a13afc554358484817d88a5f17e1bfe7f 100644 --- a/doc/html/navtreeindex2.js +++ b/doc/html/navtreeindex2.js @@ -1,253 +1,253 @@ var NAVTREEINDEX2 = { -"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,60], -"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,140], +"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[9,0,1], +"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,62], +"group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241":[11,0,0,0,142], +"group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241":[9,0,3], +"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0], +"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,61], +"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,145], "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,6], -"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,138], +"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,143], "group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,4], -"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,139], "group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,5], -"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,136], +"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,144], +"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,141], "group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,2], "group__sha.html":[9,11], "group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[9,11,0], -"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[11,0,0,0,51], -"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[11,0,0,0,146], +"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[11,0,0,0,52], +"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[11,0,0,0,151], "group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[9,11,2], "group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,11,1], -"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[11,0,0,0,52], +"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[11,0,0,0,53], "group__smtp.html":[9,14], "group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,14,1], -"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[11,0,0,0,37], +"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[11,0,0,0,38], +"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,82], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,14,3], -"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,78], -"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[11,0,0,0,77], +"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[11,0,0,0,81], "group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,14,2], -"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[11,0,0,0,79], "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,14,4], +"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[11,0,0,0,83], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[9,14,1,3], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[11,0,0,0,37,3], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[11,0,0,0,38,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[9,14,1,0], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,37,0], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,37,8], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,38,0], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,38,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,38,7], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,14,1,7], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,37,7], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,38,6], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,14,1,6], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,37,6], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[11,0,0,0,37,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,14,1,4], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[11,0,0,0,37,5], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[11,0,0,0,38,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[11,0,0,0,38,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,14,1,2], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[11,0,0,0,37,2], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[11,0,0,0,38,2], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,14,1,1], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[11,0,0,0,37,1], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[11,0,0,0,38,1], "group__sock-adopt.html":[9,15], +"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,51], "group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,15,1], -"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,50], -"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[11,0,0,0,49], "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0], +"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[11,0,0,0,50], "group__timeout.html":[9,3], -"group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[11,0,0,0,38], +"group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[11,0,0,0,39], "group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,3,0], -"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[11,0,0,0,145], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e":[11,0,0,0,38,12], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0eef059426f37d00b75142d4dc3e25e3":[11,0,0,0,38,3], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a1104c39d0177378713a9332ab7a9d7fe":[11,0,0,0,38,4], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a11292263c9eccd090294e7e316200d7f":[11,0,0,0,38,13], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a13527b2b1f61d9b2709eb432acd0a248":[11,0,0,0,38,7], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a211dd9910c37aa3a3a45fd532c76bf6e":[11,0,0,0,38,5], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a44feda6cc9507a8613b9263b1acc8ce1":[11,0,0,0,38,8], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a52236b42ec5ffe65d4cdbadeb6c4fcb0":[11,0,0,0,38,2], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45":[11,0,0,0,38,15], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a62ae208399be1f872e14843fd15f9e06":[11,0,0,0,38,17], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a65785467c0b560bead865231fdd405d7":[11,0,0,0,38,0], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2":[11,0,0,0,38,14], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a7d5b3bcc88ccbddfa57674e174a78c2d":[11,0,0,0,38,9], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a8587dc22f946c45e2f38c4045479fda5":[11,0,0,0,38,18], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaac32d9ca2f7c31f5649ad4059d7b985":[11,0,0,0,38,16], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaf69f440c2e000787efae5ad6f39e74c":[11,0,0,0,38,11], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ab20463ee983bcd68cd8a501319da56d3":[11,0,0,0,38,6], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ad7ebebb506afd30c48e1e5e3a578cd30":[11,0,0,0,38,1], -"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ae8b3de955cec5da5ea52fe040f914501":[11,0,0,0,38,10], +"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[11,0,0,0,150], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e":[11,0,0,0,39,12], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0eef059426f37d00b75142d4dc3e25e3":[11,0,0,0,39,3], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a1104c39d0177378713a9332ab7a9d7fe":[11,0,0,0,39,4], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a11292263c9eccd090294e7e316200d7f":[11,0,0,0,39,13], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a13527b2b1f61d9b2709eb432acd0a248":[11,0,0,0,39,7], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a211dd9910c37aa3a3a45fd532c76bf6e":[11,0,0,0,39,5], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a44feda6cc9507a8613b9263b1acc8ce1":[11,0,0,0,39,8], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a52236b42ec5ffe65d4cdbadeb6c4fcb0":[11,0,0,0,39,2], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45":[11,0,0,0,39,15], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a62ae208399be1f872e14843fd15f9e06":[11,0,0,0,39,17], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a65785467c0b560bead865231fdd405d7":[11,0,0,0,39,0], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2":[11,0,0,0,39,14], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a7d5b3bcc88ccbddfa57674e174a78c2d":[11,0,0,0,39,9], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a8587dc22f946c45e2f38c4045479fda5":[11,0,0,0,39,18], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaac32d9ca2f7c31f5649ad4059d7b985":[11,0,0,0,39,16], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaf69f440c2e000787efae5ad6f39e74c":[11,0,0,0,39,11], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ab20463ee983bcd68cd8a501319da56d3":[11,0,0,0,39,6], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ad7ebebb506afd30c48e1e5e3a578cd30":[11,0,0,0,39,1], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ae8b3de955cec5da5ea52fe040f914501":[11,0,0,0,39,10], "group__urlendec.html":[9,6,5], -"group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[11,0,0,0,156], +"group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[11,0,0,0,161], "group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[9,6,5,0], -"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[11,0,0,0,157], +"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[11,0,0,0,162], "group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[9,6,5,1], "group__usercb.html":[9,16], "group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[11,0,0,0,8], "group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[9,16,0], -"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[11,0,0,0,22], +"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[11,0,0,0,23], "group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[9,16,1], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6":[11,0,0,0,22,17], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6":[11,0,0,0,23,17], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6":[9,16,1,17], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0418587d5083bb4850faa438648496ba":[11,0,0,0,22,49], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493":[11,0,0,0,22,22], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0418587d5083bb4850faa438648496ba":[11,0,0,0,23,49], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493":[11,0,0,0,23,22], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493":[9,16,1,22], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79":[11,0,0,0,22,36], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79":[11,0,0,0,23,36], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79":[9,16,1,36], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[11,0,0,0,22,9], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[11,0,0,0,23,9], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[9,16,1,9], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a182a4a14c3278784505cea6d516a8308":[11,0,0,0,22,47], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46":[11,0,0,0,22,26], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a182a4a14c3278784505cea6d516a8308":[11,0,0,0,23,47], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46":[11,0,0,0,23,26], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46":[9,16,1,26], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768":[11,0,0,0,22,33], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768":[11,0,0,0,23,33], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768":[9,16,1,33], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a23b90b5e5146e760bc3123ae1fd2a6e5":[11,0,0,0,22,40], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439":[11,0,0,0,22,0], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a23b90b5e5146e760bc3123ae1fd2a6e5":[11,0,0,0,23,40], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439":[11,0,0,0,23,0], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439":[9,16,1,0], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[11,0,0,0,22,7], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[11,0,0,0,23,7], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[9,16,1,7], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[11,0,0,0,22,14], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[11,0,0,0,23,14], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[9,16,1,14], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e":[11,0,0,0,22,25], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e":[11,0,0,0,23,25], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e":[9,16,1,25], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a45d538082dec32dbecfe9d9a05ddfecd":[11,0,0,0,22,50], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[11,0,0,0,22,4], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a45d538082dec32dbecfe9d9a05ddfecd":[11,0,0,0,23,50], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[11,0,0,0,23,4], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[9,16,1,4], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[11,0,0,0,22,6], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[11,0,0,0,23,6], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[9,16,1,6], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa":[11,0,0,0,22,28], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa":[11,0,0,0,23,28], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa":[9,16,1,28], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a659539cfa65c66e0d813113b09900d31":[11,0,0,0,22,42], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a6a09ee9c01c4a233aedbe6697e29cc01":[11,0,0,0,22,44], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c":[11,0,0,0,22,18], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a659539cfa65c66e0d813113b09900d31":[11,0,0,0,23,42], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a6a09ee9c01c4a233aedbe6697e29cc01":[11,0,0,0,23,44], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c":[11,0,0,0,23,18], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c":[9,16,1,18], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[9,16,1,3], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[11,0,0,0,22,3], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[11,0,0,0,22,11], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[11,0,0,0,23,3], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[11,0,0,0,23,11], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[9,16,1,11], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[11,0,0,0,22,5], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[11,0,0,0,23,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,16,1,5], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[11,0,0,0,22,35], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[11,0,0,0,23,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[9,16,1,35], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[11,0,0,0,22,52], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[11,0,0,0,22,10], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[11,0,0,0,23,52], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[9,16,1,10], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[11,0,0,0,22,24], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[11,0,0,0,23,10], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[11,0,0,0,23,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[9,16,1,24], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[11,0,0,0,22,58], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[11,0,0,0,23,58], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[9,16,1,41], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[11,0,0,0,22,37], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[11,0,0,0,23,37], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[9,16,1,37], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,22,2], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,16,1,2], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[11,0,0,0,22,56], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,23,2], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[11,0,0,0,23,56], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[9,16,1,39], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[11,0,0,0,22,15], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[11,0,0,0,23,15], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[9,16,1,15], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e":[11,0,0,0,22,34], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e":[11,0,0,0,23,34], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e":[9,16,1,34], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aaffd08a5cae791c9f3c38ee242203900":[11,0,0,0,22,46], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412":[11,0,0,0,22,32], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aaffd08a5cae791c9f3c38ee242203900":[11,0,0,0,23,46], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412":[11,0,0,0,23,32], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412":[9,16,1,32], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab884f3d5f8a6126a0d34c0172f5e3725":[11,0,0,0,22,53], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ab884f3d5f8a6126a0d34c0172f5e3725":[11,0,0,0,23,53], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[11,0,0,0,23,8], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[9,16,1,8], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[11,0,0,0,22,8], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abcf9c720cd3d361a83d1ac65bf052a25":[11,0,0,0,22,39], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac11c336f7052abf3618962902a71ebc8":[11,0,0,0,22,54], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[11,0,0,0,22,38], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abcf9c720cd3d361a83d1ac65bf052a25":[11,0,0,0,23,39], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac11c336f7052abf3618962902a71ebc8":[11,0,0,0,23,54], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[11,0,0,0,23,38], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[9,16,1,38], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac432e9f891c733ba8f968c1bf57c0ddc":[11,0,0,0,22,45], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[11,0,0,0,22,13], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac432e9f891c733ba8f968c1bf57c0ddc":[11,0,0,0,23,45], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[11,0,0,0,23,13], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[9,16,1,13], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac8c0ae966ef1877e0020c0077ff2e4a4":[11,0,0,0,22,41], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[11,0,0,0,22,30], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac8c0ae966ef1877e0020c0077ff2e4a4":[11,0,0,0,23,41], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[11,0,0,0,23,30], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[9,16,1,30], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[11,0,0,0,22,20], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[11,0,0,0,23,20], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[9,16,1,20], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[11,0,0,0,22,27], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[11,0,0,0,23,27], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[9,16,1,27], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad724974204d51d688f569c5d387b967d":[11,0,0,0,22,43], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad87774f1c7784cf632e1e2f5b51036e1":[11,0,0,0,22,48], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad724974204d51d688f569c5d387b967d":[11,0,0,0,23,43], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad87774f1c7784cf632e1e2f5b51036e1":[11,0,0,0,23,48], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[9,16,1,1], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[11,0,0,0,22,1], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[11,0,0,0,22,31], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[11,0,0,0,23,1], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[11,0,0,0,23,31], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[9,16,1,31], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[11,0,0,0,23,21], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[9,16,1,21], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[11,0,0,0,22,21], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[11,0,0,0,22,23], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[11,0,0,0,23,23], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,16,1,23], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,22,12], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,23,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[11,0,0,0,22,19], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[11,0,0,0,23,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,16,1,19], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[11,0,0,0,22,57], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[11,0,0,0,23,57], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[9,16,1,40], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[11,0,0,0,22,55], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[11,0,0,0,22,51], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[11,0,0,0,22,29], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[11,0,0,0,23,55], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[11,0,0,0,23,51], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[11,0,0,0,23,29], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,16,1,29], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[11,0,0,0,22,16], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[11,0,0,0,23,16], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,16,1,16], "group__uv.html":[9,22], -"group__uv.html#ga097c89497824d4de225a85a00661fc89":[11,0,0,0,120], -"group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[11,0,0,0,121], -"group__uv.html#ga99099e045993383f251a8026e1e40414":[11,0,0,0,161], -"group__uv.html#gaa5e3593c94f91910d9d928dfa0c18f6c":[11,0,0,0,158], -"group__uv.html#gac5f60dba13a45e5d554b4fb7df7b9610":[11,0,0,0,160], -"group__uv.html#gad85ce3bfc53ff754988d36bf5de39e21":[11,0,0,0,159], +"group__uv.html#ga097c89497824d4de225a85a00661fc89":[11,0,0,0,124], +"group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[11,0,0,0,125], +"group__uv.html#ga99099e045993383f251a8026e1e40414":[11,0,0,0,166], +"group__uv.html#gaa17758e1f852017a2271d8fb3e9305aa":[11,0,0,0,126], +"group__uv.html#gaa5e3593c94f91910d9d928dfa0c18f6c":[11,0,0,0,163], +"group__uv.html#gac5f60dba13a45e5d554b4fb7df7b9610":[11,0,0,0,165], +"group__uv.html#gad85ce3bfc53ff754988d36bf5de39e21":[11,0,0,0,164], "group__vhost-mounts.html":[9,4,0], "group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[9,4,0,2], -"group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[11,0,0,0,32], +"group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[11,0,0,0,33], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,4,0,2,3], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[11,0,0,0,32,3], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[11,0,0,0,32,0], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[11,0,0,0,33,3], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,4,0,2,0], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[11,0,0,0,33,0], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,4,0,2,2], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[11,0,0,0,32,2], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[11,0,0,0,33,2], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,4,0,2,5], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,32,5], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,33,5], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,4,0,2,6], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[11,0,0,0,32,6], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[11,0,0,0,33,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,4,0,2,4], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[11,0,0,0,32,4], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[11,0,0,0,33,4], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[9,4,0,2,1], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[11,0,0,0,32,1], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[11,0,0,0,33,1], "group__wsclose.html":[9,17], "group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[9,17,1], -"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[11,0,0,0,71], -"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[11,0,0,0,25], +"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[11,0,0,0,72], +"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[11,0,0,0,26], "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,17,0], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,17,0,2], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,25,3], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,26,3], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[11,0,0,0,26,10], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,17,0,9], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[11,0,0,0,25,10], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[11,0,0,0,25,14], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[11,0,0,0,25,1], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[11,0,0,0,26,14], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[11,0,0,0,26,1], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,17,0,0], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[11,0,0,0,25,4], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[11,0,0,0,26,4], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,17,0,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,17,0,5], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[11,0,0,0,25,6], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[11,0,0,0,25,7], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[11,0,0,0,26,6], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[11,0,0,0,26,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,17,0,6], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[11,0,0,0,25,8], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[11,0,0,0,26,8], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,17,0,7], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[11,0,0,0,25,2], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[11,0,0,0,26,2], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,17,0,1], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[11,0,0,0,25,11], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,17,0,10], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[11,0,0,0,25,0], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[11,0,0,0,26,11], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[11,0,0,0,26,0], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,17,0,11], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,25,12], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[11,0,0,0,25,9], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,26,12], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[11,0,0,0,26,9], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,25,13], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,25,5], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,26,13], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,26,5], "group__wsstatus.html":[9,18], +"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[11,0,0,0,119], "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,18,3], -"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[11,0,0,0,115], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,18,4], -"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,116], -"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,133], -"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6], -"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,100], -"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1], -"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,18,2], -"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,114] +"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,120] }; diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js index 2f6fbe43a73d710b61c46825581686f4aae66e3a..092ee0a36e7057fd654384065a23bff3b0737a48 100644 --- a/doc/html/navtreeindex3.js +++ b/doc/html/navtreeindex3.js @@ -1,46 +1,52 @@ var NAVTREEINDEX3 = { +"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,138], +"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6], +"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1], +"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,104], +"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,18,2], +"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,118], "group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,18,0], -"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[11,0,0,0,87], +"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[11,0,0,0,91], +"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,129], "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,18,5], -"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,124], "hierarchy.html":[10,2], "index.html":[], "index.html":[0], "libwebsockets_8h.html":[11,0,0,0], -"libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[11,0,0,0,171], -"libwebsockets_8h.html#a17f5fc891b31d2920bd18b0d66d6cb25":[11,0,0,0,176], -"libwebsockets_8h.html#a1b12016562c728eb306c7f954c804bef":[11,0,0,0,20], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[11,0,0,0,27], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa7741c12fc97574fa73a810fedae2be76":[11,0,0,0,27,1], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa9ce9c65d4229d1d168fca3cc12e7f535":[11,0,0,0,27,2], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fafdb6cf2797a3ea957c690ad6edff25d6":[11,0,0,0,27,0], -"libwebsockets_8h.html#a27551d6899b1e4de4b2b5854e805c6eb":[11,0,0,0,19], -"libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4":[11,0,0,0,64], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedb":[11,0,0,0,23], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba35cf2bed9944faa062d9310197489b2f":[11,0,0,0,23,4], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba60ac587febc583475c185e1409a0210c":[11,0,0,0,23,1], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbaa424646e067c6266bcb4f0190b026d66":[11,0,0,0,23,0], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbac8f5f992c6615324108cdf931da903be":[11,0,0,0,23,2], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad655f0eecc9e94be37b8ed07348716ef":[11,0,0,0,23,6], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad9cdc12a796e6c7d912278834d9c7dde":[11,0,0,0,23,3], -"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbada3dca91d96bcde5df08a67b5a66e972":[11,0,0,0,23,5], -"libwebsockets_8h.html#a4e877a4f0bb027d05d3a90c8e6a632de":[11,0,0,0,41], -"libwebsockets_8h.html#a5326d3402af8429a166dd991dc65c4a2":[11,0,0,0,65], -"libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672":[11,0,0,0,131], -"libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536":[11,0,0,0,129], -"libwebsockets_8h.html#a75e9827318684877deb4189121a8cd2a":[11,0,0,0,43], -"libwebsockets_8h.html#a863bdd5bca33bcbaa424c42fb7b2fc96":[11,0,0,0,175], -"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d":[11,0,0,0,173], -"libwebsockets_8h.html#a9b1bfc6f34319188d2aa40500d825bab":[11,0,0,0,42], -"libwebsockets_8h.html#a9b878fb94f4596226c982eef4f42a607":[11,0,0,0,44], -"libwebsockets_8h.html#a9f2a8506fd963db95a5103823c60fb0a":[11,0,0,0,174], -"libwebsockets_8h.html#abddb8d337fb2692586d892b494739003":[11,0,0,0,18], -"libwebsockets_8h.html#ac3abb8b7e6d29a0292797230e4031681":[11,0,0,0,17], -"libwebsockets_8h.html#adedbc79528b71a5c7f27cde87100c9aa":[11,0,0,0,15], -"libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e":[11,0,0,0,132], -"libwebsockets_8h.html#aefb2f20fe5bb29d79701a399838ef4ce":[11,0,0,0,172], -"libwebsockets_8h.html#af52923473c59e643a974d65e12290831":[11,0,0,0,63], +"libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[11,0,0,0,176], +"libwebsockets_8h.html#a17f5fc891b31d2920bd18b0d66d6cb25":[11,0,0,0,181], +"libwebsockets_8h.html#a1b12016562c728eb306c7f954c804bef":[11,0,0,0,21], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[11,0,0,0,28], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa7741c12fc97574fa73a810fedae2be76":[11,0,0,0,28,1], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa9ce9c65d4229d1d168fca3cc12e7f535":[11,0,0,0,28,2], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fafdb6cf2797a3ea957c690ad6edff25d6":[11,0,0,0,28,0], +"libwebsockets_8h.html#a27551d6899b1e4de4b2b5854e805c6eb":[11,0,0,0,20], +"libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4":[11,0,0,0,65], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedb":[11,0,0,0,24], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba35cf2bed9944faa062d9310197489b2f":[11,0,0,0,24,4], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba60ac587febc583475c185e1409a0210c":[11,0,0,0,24,1], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbaa424646e067c6266bcb4f0190b026d66":[11,0,0,0,24,0], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbac8f5f992c6615324108cdf931da903be":[11,0,0,0,24,2], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad655f0eecc9e94be37b8ed07348716ef":[11,0,0,0,24,6], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad9cdc12a796e6c7d912278834d9c7dde":[11,0,0,0,24,3], +"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbada3dca91d96bcde5df08a67b5a66e972":[11,0,0,0,24,5], +"libwebsockets_8h.html#a4e877a4f0bb027d05d3a90c8e6a632de":[11,0,0,0,42], +"libwebsockets_8h.html#a5326d3402af8429a166dd991dc65c4a2":[11,0,0,0,66], +"libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672":[11,0,0,0,136], +"libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536":[11,0,0,0,134], +"libwebsockets_8h.html#a75e9827318684877deb4189121a8cd2a":[11,0,0,0,44], +"libwebsockets_8h.html#a863bdd5bca33bcbaa424c42fb7b2fc96":[11,0,0,0,180], +"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d":[11,0,0,0,178], +"libwebsockets_8h.html#a9b1bfc6f34319188d2aa40500d825bab":[11,0,0,0,43], +"libwebsockets_8h.html#a9b878fb94f4596226c982eef4f42a607":[11,0,0,0,45], +"libwebsockets_8h.html#a9f2a8506fd963db95a5103823c60fb0a":[11,0,0,0,179], +"libwebsockets_8h.html#abddb8d337fb2692586d892b494739003":[11,0,0,0,19], +"libwebsockets_8h.html#ac3abb8b7e6d29a0292797230e4031681":[11,0,0,0,18], +"libwebsockets_8h.html#adedbc79528b71a5c7f27cde87100c9aa":[11,0,0,0,16], +"libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e":[11,0,0,0,137], +"libwebsockets_8h.html#aefb2f20fe5bb29d79701a399838ef4ce":[11,0,0,0,177], +"libwebsockets_8h.html#af52923473c59e643a974d65e12290831":[11,0,0,0,64], "libwebsockets_8h.html#aff42d53861afdc1a6edfb999ba688ecb":[11,0,0,0,11], "libwebsockets_8h_source.html":[11,0,0,0], "md_README_8build.html":[1], @@ -111,15 +117,16 @@ var NAVTREEINDEX3 = "md_README_8lwsws.html#lwsws":[3,0], "md_README_8lwsws.html#lwswsb":[3,1], "md_README_8lwsws.html#lwswsc":[3,2], -"md_README_8lwsws.html#lwswslr":[3,14], +"md_README_8lwsws.html#lwswslr":[3,15], "md_README_8lwsws.html#lwswsm":[3,8], "md_README_8lwsws.html#lwswsomo":[3,9], "md_README_8lwsws.html#lwswsovo":[3,7], "md_README_8lwsws.html#lwswspl":[3,10], "md_README_8lwsws.html#lwswsplaplp":[3,11], "md_README_8lwsws.html#lwswspr":[3,6], +"md_README_8lwsws.html#lwswsreload":[3,13], "md_README_8lwsws.html#lwswsssp":[3,12], -"md_README_8lwsws.html#lwswssysd":[3,13], +"md_README_8lwsws.html#lwswssysd":[3,14], "md_README_8lwsws.html#lwswsv":[3,4], "md_README_8lwsws.html#lwswsvn":[3,5], "md_README_8problems.html":[2], @@ -242,12 +249,5 @@ var NAVTREEINDEX3 = "structlws__extension.html#afa21f3b3c8c2c9212a276c52b680c3af":[9,5,2,0], "structlws__gs__event__args.html":[9,10,0,3], "structlws__gs__event__args.html#a2bec693d8a43730d487004a44326178b":[9,10,0,3,2], -"structlws__gs__event__args.html#a477274f8ca22ba7411b9285b9dc8dd06":[9,10,0,3,1], -"structlws__gs__event__args.html#acd17e4f9f91f7f9a8f0fbf0744a3a463":[9,10,0,3,0], -"structlws__http__mount.html":[9,4,0,1], -"structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44":[9,4,0,1,12], -"structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b":[9,4,0,1,17], -"structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773":[9,4,0,1,11], -"structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a":[9,4,0,1,15], -"structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98":[9,4,0,1,2] +"structlws__gs__event__args.html#a477274f8ca22ba7411b9285b9dc8dd06":[9,10,0,3,1] }; diff --git a/doc/html/navtreeindex4.js b/doc/html/navtreeindex4.js index 6a12090f732080eb518c36006e4a27a76eb183d7..c3d14ee7c621a8189fc0362ab5365f5aff43e507 100644 --- a/doc/html/navtreeindex4.js +++ b/doc/html/navtreeindex4.js @@ -1,5 +1,12 @@ var NAVTREEINDEX4 = { +"structlws__gs__event__args.html#acd17e4f9f91f7f9a8f0fbf0744a3a463":[9,10,0,3,0], +"structlws__http__mount.html":[9,4,0,1], +"structlws__http__mount.html#a0109baf93f23c07c824c997c3533ee44":[9,4,0,1,12], +"structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b":[9,4,0,1,17], +"structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773":[9,4,0,1,11], +"structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a":[9,4,0,1,15], +"structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98":[9,4,0,1,2], "structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146":[9,4,0,1,4], "structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7":[9,4,0,1,10], "structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa":[9,4,0,1,7], @@ -56,16 +63,16 @@ var NAVTREEINDEX4 = "structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968":[9,6,1,1,0], "structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3":[9,6,1,1,4], "structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5":[9,6,1,1,1], -"structlws__protocol__vhost__options.html":[9,4,2], "structlws__protocol__vhost__options.html":[9,4,0,0], -"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,2,3], +"structlws__protocol__vhost__options.html":[9,4,2], "structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,0,0,3], -"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,2,1], +"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,2,3], "structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,0,0,1], +"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,2,1], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,0,0,0], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,2,0], -"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,2,2], "structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,0,0,2], +"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,2,2], "structlws__protocols.html":[9,10,1], "structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5":[9,10,1,4], "structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624":[9,10,1,2], @@ -81,10 +88,10 @@ var NAVTREEINDEX4 = "structlws__session__info.html#afb924864b70f40372920688a5c1c895e":[9,10,0,2,2], "structlws__token__limits.html":[9,6,4,1], "structlws__token__limits.html#a6ec712306cbf8585bce7a56758a3ceff":[9,6,4,1,0], -"structlws__tokens.html":[9,6,6], "structlws__tokens.html":[9,6,4,0], -"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,4,0,1], +"structlws__tokens.html":[9,6,6], "structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,6,1], +"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,4,0,1], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,4,0,0], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,6,0], "structlwsgw__hash.html":[9,10,0,1], diff --git a/lib/context.c b/lib/context.c index ba2a27503a2197cc391e76d0cd74565f9d1e0947..cab33516be451892439ce4d2225ab7bb11f11a51 100644 --- a/lib/context.c +++ b/lib/context.c @@ -610,6 +610,7 @@ lws_create_context(struct lws_context_creation_info *info) info->external_baggage_free_on_destroy; context->time_up = time(NULL); + #ifndef LWS_NO_DAEMONIZE if (pid_daemon) { context->started_with_parent = pid_daemon; @@ -824,22 +825,79 @@ bail: return NULL; } +LWS_VISIBLE LWS_EXTERN void +lws_context_deprecate(struct lws_context *context, lws_reload_func cb) +{ + struct lws_vhost *vh = context->vhost_list, *vh1; + struct lws *wsi; + + /* + * "deprecation" means disable the context from accepting any new + * connections and free up listen sockets to be used by a replacement + * context. + * + * Otherwise the deprecated context remains operational, until its + * number of connected sockets falls to zero, when it is deleted. + */ + + /* for each vhost, close his listen socket */ + + while (vh) { + wsi = vh->lserv_wsi; + if (wsi) { + wsi->socket_is_permanently_unusable = 1; + lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS); + wsi->context->deprecation_pending_listen_close_count++; + /* + * other vhosts can share the listen port, they + * point to the same wsi. So zap those too. + */ + vh1 = context->vhost_list; + while (vh1) { + if (vh1->lserv_wsi == wsi) + vh1->lserv_wsi = NULL; + vh1 = vh1->vhost_next; + } + } + vh = vh->vhost_next; + } + + context->deprecated = 1; + context->deprecation_cb = cb; +} + +LWS_VISIBLE LWS_EXTERN int +lws_context_is_deprecated(struct lws_context *context) +{ + return context->deprecated; +} + +LWS_VISIBLE void +lws_context_destroy2(struct lws_context *context); + LWS_VISIBLE void lws_context_destroy(struct lws_context *context) { const struct lws_protocols *protocol = NULL; struct lws_context_per_thread *pt; - struct lws_vhost *vh = NULL, *vh1; + struct lws_vhost *vh = NULL; struct lws wsi; int n, m; - lwsl_notice("%s\n", __func__); - - if (!context) + if (!context) { + lwsl_notice("%s: ctx %p\n", __func__, context); + return; + } + if (context->being_destroyed1) { + lwsl_notice("%s: ctx %p: already being destroyed\n", __func__, context); return; + } + + lwsl_notice("%s: ctx %p\n", __func__, context); m = context->count_threads; context->being_destroyed = 1; + context->being_destroyed1 = 1; memset(&wsi, 0, sizeof(wsi)); wsi.context = context; @@ -864,6 +922,7 @@ lws_context_destroy(struct lws_context *context) } lws_pt_mutex_destroy(pt); } + /* * give all extensions a chance to clean up any per-context * allocations they might have made @@ -913,12 +972,30 @@ lws_context_destroy(struct lws_context *context) lws_free(pt->http_header_data); } lws_plat_context_early_destroy(context); - lws_ssl_context_destroy(context); if (context->pt[0].fds) lws_free_set_NULL(context->pt[0].fds); - /* free all the vhost allocations */ + if (!LWS_LIBUV_ENABLED(context)) + lws_context_destroy2(context); +} + +/* + * call the second one after the event loop has been shut down cleanly + */ + +LWS_VISIBLE void +lws_context_destroy2(struct lws_context *context) +{ + const struct lws_protocols *protocol = NULL; + struct lws_vhost *vh = NULL, *vh1; + int n; + + lwsl_notice("%s: ctx %p\n", __func__, context); + + /* + * free all the per-vhost allocations + */ vh = context->vhost_list; while (vh) { @@ -928,6 +1005,7 @@ lws_context_destroy(struct lws_context *context) while (n < vh->count_protocols) { if (vh->protocol_vh_privs && vh->protocol_vh_privs[n]) { + // lwsl_notice(" %s: freeing per-vhost protocol data %p\n", __func__, vh->protocol_vh_privs[n]); lws_free(vh->protocol_vh_privs[n]); vh->protocol_vh_privs[n] = NULL; } @@ -957,10 +1035,12 @@ lws_context_destroy(struct lws_context *context) vh = vh1; } + lws_ssl_context_destroy(context); lws_plat_context_late_destroy(context); if (context->external_baggage_free_on_destroy) free(context->external_baggage_free_on_destroy); + lws_free(context); } diff --git a/lib/daemonize.c b/lib/daemonize.c index 73b2d5803c79ff8b70e9f93c39b3318ee167b90e..8ec58a3f375eebb21cce4311eae0c8b614b2995f 100644 --- a/lib/daemonize.c +++ b/lib/daemonize.c @@ -45,28 +45,31 @@ child_handler(int signum) break; case SIGUSR1: /* positive confirmation we daemonized well */ - /* Create the lock file as the current user */ - - fd = open(lock_path, O_TRUNC | O_RDWR | O_CREAT, 0640); - if (fd < 0) { - fprintf(stderr, - "unable to create lock file %s, code=%d (%s)\n", - lock_path, errno, strerror(errno)); - exit(5); + + if (lock_path) { + /* Create the lock file as the current user */ + + fd = open(lock_path, O_TRUNC | O_RDWR | O_CREAT, 0640); + if (fd < 0) { + fprintf(stderr, + "unable to create lock file %s, code=%d (%s)\n", + lock_path, errno, strerror(errno)); + exit(0); + } + len = sprintf(sz, "%u", pid_daemon); + sent = write(fd, sz, len); + if (sent != len) + fprintf(stderr, + "unable to write pid to lock file %s, code=%d (%s)\n", + lock_path, errno, strerror(errno)); + + close(fd); } - len = sprintf(sz, "%u", pid_daemon); - sent = write(fd, sz, len); - if (sent != len) - fprintf(stderr, - "unable to write pid to lock file %s, code=%d (%s)\n", - lock_path, errno, strerror(errno)); - - close(fd); exit(0); //!!(sent == len)); case SIGCHLD: /* daemonization failed */ - exit(6); + exit(0); break; } } @@ -102,32 +105,34 @@ lws_daemonize(const char *_lock_path) // if (getppid() == 1) // return 1; - fd = open(_lock_path, O_RDONLY); - if (fd >= 0) { - n = read(fd, buf, sizeof(buf)); - close(fd); - if (n) { - n = atoi(buf); - ret = kill(n, 0); - if (ret >= 0) { + if (_lock_path) { + fd = open(_lock_path, O_RDONLY); + if (fd >= 0) { + n = read(fd, buf, sizeof(buf)); + close(fd); + if (n) { + n = atoi(buf); + ret = kill(n, 0); + if (ret >= 0) { + fprintf(stderr, + "Daemon already running from pid %d\n", n); + exit(1); + } fprintf(stderr, - "Daemon already running from pid %d\n", n); - exit(1); + "Removing stale lock file %s from dead pid %d\n", + _lock_path, n); + unlink(lock_path); } - fprintf(stderr, - "Removing stale lock file %s from dead pid %d\n", - _lock_path, n); - unlink(lock_path); } - } - n = strlen(_lock_path) + 1; - lock_path = lws_malloc(n); - if (!lock_path) { - fprintf(stderr, "Out of mem in lws_daemonize\n"); - return 1; + n = strlen(_lock_path) + 1; + lock_path = lws_malloc(n); + if (!lock_path) { + fprintf(stderr, "Out of mem in lws_daemonize\n"); + return 1; + } + strcpy(lock_path, _lock_path); } - strcpy(lock_path, _lock_path); /* Trap signals that we expect to receive */ signal(SIGCHLD, child_handler); /* died */ diff --git a/lib/lejp-conf.c b/lib/lejp-conf.c index 699dfc61862a0af5729945da33fff63e4f4f92d4..39f6ca46a6e3e1a7096ad82311d158b0eefbfdec 100644 --- a/lib/lejp-conf.c +++ b/lib/lejp-conf.c @@ -551,8 +551,8 @@ lejp_vhosts_cb(struct lejp_ctx *ctx, char reason) a->p += n; mp_cgienv->value = a->p; mp_cgienv->options = NULL; - lwsl_notice(" adding pmo / cgi-env '%s' = '%s'\n", mp_cgienv->name, - mp_cgienv->value); + //lwsl_notice(" adding pmo / cgi-env '%s' = '%s'\n", mp_cgienv->name, + // mp_cgienv->value); goto dostring; case LEJPVP_PROTOCOL_NAME_OPT: @@ -703,10 +703,13 @@ lwsws_get_config_d(void *user, const char *d, const char * const *paths, uv_dirent_t dent; uv_fs_t req; char path[256]; - int ret = 0; + int ret = 0, ir; uv_loop_t loop; - uv_loop_init(&loop); + ir = uv_loop_init(&loop); + if (ir) { + lwsl_err("%s: loop init failed %d\n", __func__, ir); + } if (!uv_fs_scandir(&loop, &req, d, 0, NULL)) { lwsl_err("Scandir on %s failed\n", d); diff --git a/lib/libuv.c b/lib/libuv.c index 805f71a8812190ae5415cdfbb15b1da61b192799..5572e0a8dc467536fd877e6371072af3e8b95a71 100644 --- a/lib/libuv.c +++ b/lib/libuv.c @@ -67,7 +67,7 @@ lws_io_cb(uv_poll_t *watcher, int status, int revents) struct lws_io_watcher *lws_io = lws_container_of(watcher, struct lws_io_watcher, uv_watcher); struct lws *wsi = lws_container_of(lws_io, struct lws, w_read); - struct lws_context *context = lws_io->context; + struct lws_context *context = wsi->context; struct lws_pollfd eventfd; #if defined(WIN32) || defined(_WIN32) @@ -141,7 +141,7 @@ lws_uv_timeout_cb(uv_timer_t *timer lws_service_fd_tsi(pt->context, NULL, pt->tid); } -static const int sigs[] = { SIGINT, SIGTERM, SIGSEGV, SIGFPE }; +static const int sigs[] = { SIGINT, SIGTERM, SIGSEGV, SIGFPE, SIGHUP }; int lws_uv_initvhost(struct lws_vhost* vh, struct lws* wsi) @@ -265,6 +265,7 @@ void lws_libuv_destroyloop(struct lws_context *context, int tsi) { struct lws_context_per_thread *pt = &context->pt[tsi]; +// struct lws_context *ctx; int m, budget = 100, ns; if (!lws_check_opt(context->options, LWS_SERVER_OPTION_LIBUV)) @@ -273,6 +274,8 @@ lws_libuv_destroyloop(struct lws_context *context, int tsi) if (!pt->io_loop_uv) return; + lwsl_notice("%s: closing signals + timers context %p\n", __func__, context); + if (context->use_ev_sigint) { uv_signal_stop(&pt->w_sigint.uv_watcher); @@ -292,11 +295,13 @@ lws_libuv_destroyloop(struct lws_context *context, int tsi) uv_idle_stop(&pt->uv_idle); uv_close((uv_handle_t *)&pt->uv_idle, lws_uv_close_cb); + if (pt->ev_loop_foreign) + return; + while (budget-- && uv_run(pt->io_loop_uv, UV_RUN_NOWAIT)) ; - if (pt->ev_loop_foreign) - return; + lwsl_notice("%s: closing all loop handles context %p\n", __func__, context); uv_stop(pt->io_loop_uv); @@ -404,15 +409,24 @@ lws_libuv_run(const struct lws_context *context, int tsi) uv_run(context->pt[tsi].io_loop_uv, 0); } +LWS_VISIBLE void +lws_libuv_stop_without_kill(const struct lws_context *context, int tsi) +{ + if (context->pt[tsi].io_loop_uv && LWS_LIBUV_ENABLED(context)) + uv_stop(context->pt[tsi].io_loop_uv); +} + static void lws_libuv_kill(const struct lws_context *context) { int n; + lwsl_notice("%s\n", __func__); + for (n = 0; n < context->count_threads; n++) if (context->pt[n].io_loop_uv && - LWS_LIBUV_ENABLED(context) && - !context->pt[n].ev_loop_foreign) + LWS_LIBUV_ENABLED(context) )//&& + //!context->pt[n].ev_loop_foreign) uv_stop(context->pt[n].io_loop_uv); } @@ -472,9 +486,25 @@ lws_libuv_closewsi(uv_handle_t* handle) struct lws *n = NULL, *wsi = (struct lws *)(((char *)handle) - (char *)(&n->w_read.uv_watcher)); struct lws_context *context = lws_get_context(wsi); + int lspd = 0; + + if (wsi->mode == LWSCM_SERVER_LISTENER && + wsi->context->deprecated) { + lspd = 1; + context->deprecation_pending_listen_close_count--; + if (!context->deprecation_pending_listen_close_count) + lspd = 2; + } lws_close_free_wsi_final(wsi); + if (lspd == 2 && context->deprecation_cb) { + lwsl_notice("calling deprecation callback\n"); + context->deprecation_cb(); + } + + //lwsl_notice("%s: ctx %p: wsi left %d\n", __func__, context, context->count_wsi_allocated); + if (context->requested_kill && context->count_wsi_allocated == 0) lws_libuv_kill(context); } @@ -495,7 +525,7 @@ lws_libuv_closehandle(struct lws *wsi) #if defined(LWS_WITH_PLUGINS) && (UV_VERSION_MAJOR > 0) LWS_VISIBLE int -lws_plat_plugins_init(struct lws_context * context, const char * const *d) +lws_plat_plugins_init(struct lws_context *context, const char * const *d) { struct lws_plugin_capability lcaps; struct lws_plugin *plugin; @@ -584,6 +614,7 @@ bail: d++; } + uv_run(&loop, UV_RUN_NOWAIT); uv_loop_close(&loop); return ret; @@ -591,7 +622,7 @@ bail: } LWS_VISIBLE int -lws_plat_plugins_destroy(struct lws_context * context) +lws_plat_plugins_destroy(struct lws_context *context) { struct lws_plugin *plugin = context->plugin_list, *p; lws_plugin_destroy_func func; diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index 36fb4711d071a4de85d7ee153c4a8112da839fed..c2bc9402df8845f7edc00eae5462ec21c2c687a2 100755 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -392,6 +392,21 @@ just_kill_connection: lwsl_err("%s: failed to detach from parent\n", __func__); } +#if 0 + /* manage the vhost same protocol list entry */ + + if (wsi->same_vh_protocol_prev) { // we are on the vh list + + // make guy who pointed to us, point to what our next was pointing to + *wsi->same_vh_protocol_prev = wsi->same_vh_protocol_next; + + // if we had a next guy... + if (wsi->same_vh_protocol_next) + // have him point back to our prev + wsi->same_vh_protocol_next->same_vh_protocol_prev = + wsi->same_vh_protocol_prev; + } +#endif #if LWS_POSIX /* @@ -583,9 +598,13 @@ lws_close_free_wsi_final(struct lws *wsi) #ifdef LWS_WITH_CGI if (wsi->cgi) { - for (n = 0; n < 6; n++) + for (n = 0; n < 6; n++) { + if (wsi->cgi->pipe_fds[n / 2][n & 1] == 0) + lwsl_err("ZERO FD IN CGI CLOSE"); + if (wsi->cgi->pipe_fds[n / 2][n & 1] >= 0) close(wsi->cgi->pipe_fds[n / 2][n & 1]); + } lws_free(wsi->cgi); } @@ -2516,6 +2535,25 @@ lws_access_log(struct lws *wsi) } #endif +void +lws_sum_stats(const struct lws_context *ctx, struct lws_conn_stats *cs) +{ + const struct lws_vhost *vh = ctx->vhost_list; + + while (vh) { + + cs->rx += vh->conn_stats.rx; + cs->tx += vh->conn_stats.tx; + cs->conn += vh->conn_stats.conn; + cs->trans += vh->conn_stats.trans; + cs->ws_upg += vh->conn_stats.ws_upg; + cs->http2_upg += vh->conn_stats.http2_upg; + cs->rejected += vh->conn_stats.rejected; + + vh = vh->vhost_next; + } +} + #ifdef LWS_WITH_SERVER_STATUS LWS_EXTERN int @@ -2546,6 +2584,7 @@ lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len) " \"conn\":\"%lu\",\n" " \"trans\":\"%lu\",\n" " \"ws_upg\":\"%lu\",\n" + " \"rejected\":\"%lu\",\n" " \"http2_upg\":\"%lu\"" , vh->name, vh->listen_port, @@ -2555,8 +2594,11 @@ lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len) 0, #endif !!(vh->options & LWS_SERVER_OPTION_STS), - vh->rx, vh->tx, vh->conn, vh->trans, vh->ws_upgrades, - vh->http2_upgrades + vh->conn_stats.rx, vh->conn_stats.tx, + vh->conn_stats.conn, vh->conn_stats.trans, + vh->conn_stats.ws_upg, + vh->conn_stats.rejected, + vh->conn_stats.http2_upg ); if (vh->mount_list) { @@ -2618,31 +2660,30 @@ lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len) LWS_EXTERN LWS_VISIBLE int -lws_json_dump_context(const struct lws_context *context, char *buf, int len) +lws_json_dump_context(const struct lws_context *context, char *buf, int len, + int hide_vhosts) { char *orig = buf, *end = buf + len - 1, first = 1; const struct lws_vhost *vh = context->vhost_list; - + const struct lws_context_per_thread *pt; + time_t t = time(NULL); + int n, cc = 0, listening = 0, cgi_count = 0; + struct lws_conn_stats cs; + double d = 0; #ifdef LWS_WITH_CGI struct lws_cgi * const *pcgi; #endif - const struct lws_context_per_thread *pt; - time_t t = time(NULL); - int listening = 0, cgi_count = 0, n; + +#ifdef LWS_USE_LIBUV + uv_uptime(&d); +#endif buf += lws_snprintf(buf, end - buf, "{ " - "\"version\":\"%s\",\n" - "\"uptime\":\"%ld\",\n" - "\"cgi_spawned\":\"%d\",\n" - "\"pt_fd_max\":\"%d\",\n" - "\"ah_pool_max\":\"%d\",\n" - "\"wsi_alive\":\"%d\",\n", - lws_get_library_version(), - (unsigned long)(t - context->time_up), - context->count_cgi_spawned, - context->fd_limit_per_thread, - context->max_http_header_pool, - context->count_wsi_allocated); + "\"version\":\"%s\",\n" + "\"uptime\":\"%ld\",\n", + lws_get_library_version(), + (long)d); + #ifdef LWS_HAVE_GETLOADAVG { double d[3]; @@ -2657,6 +2698,25 @@ lws_json_dump_context(const struct lws_context *context, char *buf, int len) } #endif + buf += lws_snprintf(buf, end - buf, "\"contexts\":[\n"); + + if (cc++) + buf += lws_snprintf(buf, end - buf, ","); + + buf += lws_snprintf(buf, end - buf, "{ " + "\"context_uptime\":\"%ld\",\n" + "\"cgi_spawned\":\"%d\",\n" + "\"pt_fd_max\":\"%d\",\n" + "\"ah_pool_max\":\"%d\",\n" + "\"deprecated\":\"%d\",\n" + "\"wsi_alive\":\"%d\",\n", + (unsigned long)(t - context->time_up), + context->count_cgi_spawned, + context->fd_limit_per_thread, + context->max_http_header_pool, + context->deprecated, + context->count_wsi_allocated); + buf += lws_snprintf(buf, end - buf, "\"pt\":[\n "); for (n = 0; n < context->count_threads; n++) { pt = &context->pt[n]; @@ -2673,21 +2733,41 @@ lws_json_dump_context(const struct lws_context *context, char *buf, int len) pt->ah_wait_list_length); } - buf += lws_snprintf(buf, end - buf, "], \"vhosts\":[\n "); + buf += lws_snprintf(buf, end - buf, "]"); + buf += lws_snprintf(buf, end - buf, ", \"vhosts\":[\n "); + + first = 1; + vh = context->vhost_list; + listening = 0; + cs = context->conn_stats; + lws_sum_stats(context, &cs); while (vh) { - if (!first) - if(buf != end) - *buf++ = ','; - buf += lws_json_dump_vhost(vh, buf, end - buf); - first = 0; + + if (!hide_vhosts) { + if (!first) + if(buf != end) + *buf++ = ','; + buf += lws_json_dump_vhost(vh, buf, end - buf); + first = 0; + } if (vh->lserv_wsi) listening++; vh = vh->vhost_next; } - buf += lws_snprintf(buf, end - buf, "],\n\"listen_wsi\":\"%d\"", - listening); + buf += lws_snprintf(buf, end - buf, + "],\n\"listen_wsi\":\"%d\",\n" + " \"rx\":\"%llu\",\n" + " \"tx\":\"%llu\",\n" + " \"conn\":\"%lu\",\n" + " \"trans\":\"%lu\",\n" + " \"ws_upg\":\"%lu\",\n" + " \"rejected\":\"%lu\",\n" + " \"http2_upg\":\"%lu\"", + listening, + cs.rx, cs.tx, cs.conn, cs.trans, + cs.ws_upg, cs.rejected, cs.http2_upg); #ifdef LWS_WITH_CGI for (n = 0; n < context->count_threads; n++) { @@ -2704,7 +2784,10 @@ lws_json_dump_context(const struct lws_context *context, char *buf, int len) buf += lws_snprintf(buf, end - buf, ",\n \"cgi_alive\":\"%d\"\n ", cgi_count); - buf += lws_snprintf(buf, end - buf, "}\n "); + buf += lws_snprintf(buf, end - buf, "}"); + + + buf += lws_snprintf(buf, end - buf, "]}\n "); return buf - orig; } diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 361bc99622f0de48105aaded2795e23ec2990595..98debfda9a36d74ec4da37f930f97dda766628a9 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -1782,6 +1782,41 @@ lws_create_context(struct lws_context_creation_info *info); LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context); +LWS_VISIBLE LWS_EXTERN void +lws_context_destroy2(struct lws_context *context); + +typedef int (*lws_reload_func)(void); + +/** + * lws_context_deprecate() - Deprecate the websocket context + * \param context: Websocket context + * + * This function is used on an existing context before superceding it + * with a new context. + * + * It closes any listen sockets in the context, so new connections are + * not possible. + * + * And it marks the context to be deleted when the number of active + * connections into it falls to zero. + * + * Otherwise if you attach the deprecated context to the replacement + * context when it has been created using lws_context_attach_deprecated() + * both any deprecated and the new context will service their connections. + * + * This is aimed at allowing seamless configuration reloads. + * + * The callback cb will be called after the listen sockets are actually + * closed and may be reopened. In the callback the new context should be + * configured and created. (With libuv, socket close happens async after + * more loop events). + */ +LWS_VISIBLE LWS_EXTERN void +lws_context_deprecate(struct lws_context *context, lws_reload_func cb); + +LWS_VISIBLE LWS_EXTERN int +lws_context_is_deprecated(struct lws_context *context); + /** * lws_set_proxy() - Setups proxy to lws_context. * \param vhost: pointer to struct lws_vhost you want set proxy for @@ -1886,7 +1921,8 @@ lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len); * \param len: max length of buf */ LWS_VISIBLE LWS_EXTERN int -lws_json_dump_context(const struct lws_context *context, char *buf, int len); +lws_json_dump_context(const struct lws_context *context, char *buf, int len, + int hide_vhosts); /** * lws_context_user() - get the user data associated with the context @@ -3102,6 +3138,9 @@ lws_libuv_run(const struct lws_context *context, int tsi); LWS_VISIBLE LWS_EXTERN void lws_libuv_stop(struct lws_context *context); +LWS_VISIBLE LWS_EXTERN void +lws_libuv_stop_without_kill(const struct lws_context *context, int tsi); + LWS_VISIBLE LWS_EXTERN int lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi); diff --git a/lib/lws-plat-unix.c b/lib/lws-plat-unix.c index b98c9b026313adc3b813734422b2a6cf69f239f7..b48e10ce9a5bac0de13f43d01dcc6b8882cf308e 100644 --- a/lib/lws-plat-unix.c +++ b/lib/lws-plat-unix.c @@ -479,11 +479,16 @@ lws_plat_context_late_destroy(struct lws_context *context) lws_free(context->lws_lookup); while (m--) { - close(pt->dummy_pipe_fds[0]); - close(pt->dummy_pipe_fds[1]); + if (pt->dummy_pipe_fds[0]) + close(pt->dummy_pipe_fds[0]); + if (pt->dummy_pipe_fds[1]) + close(pt->dummy_pipe_fds[1]); pt++; } - close(context->fd_random); + if (!context->fd_random) + lwsl_err("ZERO RANDOM FD\n"); + if (context->fd_random != LWS_INVALID_FILE) + close(context->fd_random); } /* cast a struct sockaddr_in6 * into addr for ipv6 */ diff --git a/lib/lws-plat-win.c b/lib/lws-plat-win.c index 23d34803dd8429a1a028b5ba0a62a11e69492da8..7d3ebdd8012b9d922a094dcce616dfb9a6f6506c 100644 --- a/lib/lws-plat-win.c +++ b/lib/lws-plat-win.c @@ -635,3 +635,17 @@ lws_plat_init(struct lws_context *context, return 0; } + + +int kill(int pid, int sig) +{ + lwsl_err("Sorry Windows doesn't support kill()."); + exit(0); +} + +int fork(void) +{ + lwsl_err("Sorry Windows doesn't support fork()."); + exit(0); +} + diff --git a/lib/pollfd.c b/lib/pollfd.c index a56908b83a9c5e72908b7b14227792240823618e..2284269bb4c0913cdca56fc8bf12e96a47518aa1 100644 --- a/lib/pollfd.c +++ b/lib/pollfd.c @@ -107,15 +107,35 @@ bail: return ret; } +#ifndef LWS_NO_SERVER +static void +lws_accept_modulation(struct lws_context_per_thread *pt, int allow) +{ +// multithread listen seems broken +#if 0 + struct lws_vhost *vh = context->vhost_list; + struct lws_pollargs pa1; + + while (vh) { + if (allow) + _lws_change_pollfd(pt->wsi_listening, + 0, LWS_POLLIN, &pa1); + else + _lws_change_pollfd(pt->wsi_listening, + LWS_POLLIN, 0, &pa1); + vh = vh->vhost_next; + } +#endif +} +#endif + int insert_wsi_socket_into_fds(struct lws_context *context, struct lws *wsi) { struct lws_pollargs pa = { wsi->sock, LWS_POLLIN, 0 }; struct lws_context_per_thread *pt = &context->pt[(int)wsi->tsi]; int ret = 0; -#ifndef LWS_NO_SERVER - struct lws_pollargs pa1; -#endif + lwsl_debug("%s: %p: tsi=%d, sock=%d, pos-in-fds=%d\n", __func__, wsi, wsi->tsi, wsi->sock, pt->fds_count); @@ -169,7 +189,7 @@ insert_wsi_socket_into_fds(struct lws_context *context, struct lws *wsi) #ifndef LWS_NO_SERVER /* if no more room, defeat accepts on this thread */ if ((unsigned int)pt->fds_count == context->fd_limit_per_thread - 1) - _lws_change_pollfd(pt->wsi_listening, LWS_POLLIN, 0, &pa1); + lws_accept_modulation(pt, 0); #endif lws_pt_unlock(pt); @@ -186,9 +206,6 @@ remove_wsi_socket_from_fds(struct lws *wsi) struct lws_context *context = wsi->context; struct lws_pollargs pa = { wsi->sock, 0, 0 }; #if !defined(LWS_WITH_ESP8266) -#ifndef LWS_NO_SERVER - struct lws_pollargs pa1; -#endif struct lws_context_per_thread *pt = &context->pt[(int)wsi->tsi]; struct lws *end_wsi; int v; @@ -230,6 +247,9 @@ remove_wsi_socket_from_fds(struct lws *wsi) } //else //lwsl_err("null wsi->next\n"); + wsi->same_vh_protocol_prev = NULL; + wsi->same_vh_protocol_next = NULL; + /* the guy who is to be deleted's slot index in pt->fds */ m = wsi->position_in_fds_table; @@ -272,7 +292,7 @@ remove_wsi_socket_from_fds(struct lws *wsi) if (!context->being_destroyed) /* if this made some room, accept connects on this thread */ if ((unsigned int)pt->fds_count < context->fd_limit_per_thread - 1) - _lws_change_pollfd(pt->wsi_listening, 0, LWS_POLLIN, &pa1); + lws_accept_modulation(pt, 1); #endif lws_pt_unlock(pt); diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index a1abe453172f74d6ac9667faf6f96bf3a7e958ca..5499ed8d8b672596c69ef84d52105e3bb2835ab3 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -144,6 +144,13 @@ char *ets_strchr(const char *s, int c); #define lws_snprintf _snprintf #endif +/* we don't have an implementation for this on windows... */ +int kill(int pid, int sig); +int fork(void); +#ifndef SIGINT +#define SIGINT 2 +#endif + #else /* not windows --> */ #include <fcntl.h> @@ -696,9 +703,6 @@ struct lws_context_per_thread { #ifdef LWS_OPENSSL_SUPPORT struct lws *pending_read_list; /* linked list */ #endif -#ifndef LWS_NO_SERVER - struct lws *wsi_listening; -#endif #if defined(LWS_USE_LIBEV) struct ev_loop *io_loop_ev; #endif @@ -735,6 +739,14 @@ struct lws_context_per_thread { unsigned char lock_depth; }; +struct lws_conn_stats { + unsigned long long rx, tx; + unsigned long conn, trans, ws_upg, http2_upg, rejected; +}; + +void +lws_sum_stats(const struct lws_context *ctx, struct lws_conn_stats *cs); + /* * virtual host -related context information * vhostwide SSL context @@ -762,6 +774,7 @@ struct lws_vhost { /* listen sockets need a place to hang their hat */ esp_tcp tcp; #endif + struct lws_conn_stats conn_stats; struct lws_context *context; struct lws_vhost *vhost_next; const struct lws_http_mount *mount_list; @@ -780,8 +793,6 @@ struct lws_vhost { #ifndef LWS_NO_EXTENSIONS const struct lws_extension *extensions; #endif - unsigned long long rx, tx; - unsigned long conn, trans, ws_upgrades, http2_upgrades; int listen_port; unsigned int http_proxy_port; @@ -819,6 +830,7 @@ struct lws_context { time_t time_up; struct lws_plat_file_ops fops; struct lws_context_per_thread pt[LWS_MAX_SMP]; + struct lws_conn_stats conn_stats; #ifdef _WIN32 /* different implementation between unix and windows */ struct lws_fd_hashtable fd_hashtable[FD_HASHTABLE_MODULUS]; @@ -834,11 +846,13 @@ struct lws_context { #endif struct lws_vhost *vhost_list; struct lws_plugin *plugin_list; + void *external_baggage_free_on_destroy; const struct lws_token_limits *token_limits; void *user_space; const char *server_string; const struct lws_protocol_vhost_options *reject_service_keywords; + lws_reload_func deprecation_cb; #if defined(LWS_USE_LIBEV) lws_ev_signal_cb_t * lws_ev_sigint_cb; @@ -879,6 +893,12 @@ struct lws_context { unsigned int pt_serv_buf_size; int max_http_header_data; + unsigned int deprecated:1; + unsigned int being_destroyed:1; + unsigned int being_destroyed1:1; + unsigned int requested_kill:1; + unsigned int protocol_init_done:1; + /* * set to the Thread ID that's doing the service loop just before entry * to poll indicates service thread likely idling in poll() @@ -894,10 +914,7 @@ struct lws_context { short plugin_extension_count; short server_string_len; unsigned short ws_ping_pong_interval; - - unsigned int being_destroyed:1; - unsigned int requested_kill:1; - unsigned int protocol_init_done:1; + unsigned short deprecation_pending_listen_close_count; }; #define lws_get_context_protocol(ctx, x) ctx->vhost_list->protocols[x] @@ -1445,6 +1462,7 @@ struct lws { unsigned int sending_chunked:1; unsigned int already_did_cce:1; unsigned int told_user_closed:1; + unsigned int :1; #if defined(LWS_WITH_ESP8266) unsigned int pending_send_completion:3; unsigned int close_is_pending_send_completion:1; @@ -1907,12 +1925,9 @@ lws_server_socket_service(struct lws_context *context, struct lws *wsi, struct lws_pollfd *pollfd); LWS_EXTERN int lws_handshake_server(struct lws *wsi, unsigned char **buf, size_t len); -LWS_EXTERN int -_lws_server_listen_accept_flow_control(struct lws *twsi, int on); #else #define lws_server_socket_service(_a, _b, _c) (0) #define lws_handshake_server(_a, _b, _c) (0) -#define _lws_server_listen_accept_flow_control(a, b) (0) #endif #ifdef LWS_WITH_ACCESS_LOG diff --git a/lib/server.c b/lib/server.c index 2c8cf7df188e09606f0afb376931fc73f0e18499..45f691bf61de8ee24d9d144ded12f3815cee8bf0 100644 --- a/lib/server.c +++ b/lib/server.c @@ -152,8 +152,6 @@ lws_context_init_server(struct lws_context_creation_info *info, wsi->vhost = vhost; wsi->listener = 1; - vhost->context->pt[m].wsi_listening = wsi; - #ifdef LWS_USE_LIBUV if (LWS_LIBUV_ENABLED(vhost->context)) lws_uv_initvhost(vhost, wsi); @@ -192,27 +190,6 @@ bail: return 1; } -int -_lws_server_listen_accept_flow_control(struct lws *twsi, int on) -{ - struct lws_context_per_thread *pt = &twsi->context->pt[(int)twsi->tsi]; - struct lws *wsi = pt->wsi_listening; - int n; - - if (!wsi || twsi->context->being_destroyed) - return 0; - - lwsl_debug("%s: Thr %d: LISTEN wsi %p: state %d\n", - __func__, twsi->tsi, (void *)wsi, on); - - if (on) - n = lws_change_pollfd(wsi, 0, LWS_POLLIN); - else - n = lws_change_pollfd(wsi, LWS_POLLIN, 0); - - return n; -} - #if defined(LWS_WITH_ESP8266) #undef strchr #define strchr ets_strchr @@ -1208,6 +1185,8 @@ lws_handshake_server(struct lws *wsi, unsigned char **buf, size_t len) msg++; lws_return_http_status(wsi, atoi(rej->value), msg); + wsi->vhost->conn_stats.rejected++; + goto bail_nuke_ah; } rej = rej->next; @@ -1227,9 +1206,9 @@ lws_handshake_server(struct lws *wsi, unsigned char **buf, size_t len) } else lwsl_info("no host\n"); - wsi->vhost->trans++; + wsi->vhost->conn_stats.trans++; if (!wsi->conn_stat_done) { - wsi->vhost->conn++; + wsi->vhost->conn_stats.conn++; wsi->conn_stat_done = 1; } @@ -1241,14 +1220,14 @@ lws_handshake_server(struct lws *wsi, unsigned char **buf, size_t len) if (lws_hdr_total_length(wsi, WSI_TOKEN_UPGRADE)) { if (!strcasecmp(lws_hdr_simple_ptr(wsi, WSI_TOKEN_UPGRADE), "websocket")) { - wsi->vhost->ws_upgrades++; + wsi->vhost->conn_stats.ws_upg++; lwsl_info("Upgrade to ws\n"); goto upgrade_ws; } #ifdef LWS_USE_HTTP2 if (!strcasecmp(lws_hdr_simple_ptr(wsi, WSI_TOKEN_UPGRADE), "h2c")) { - wsi->vhost->http2_upgrades++; + wsi->vhost->conn_stats.http2_upg++; lwsl_info("Upgrade to h2c\n"); goto upgrade_h2c; } @@ -1591,7 +1570,8 @@ lws_create_new_server_wsi(struct lws_vhost *vhost) } new_wsi->tsi = n; - lwsl_info("Accepted %p to tsi %d\n", new_wsi, new_wsi->tsi); + lwsl_notice("Accepted wsi %p to context %p, tsi %d\n", new_wsi, + vhost->context, new_wsi->tsi); new_wsi->vhost = vhost; new_wsi->context = vhost->context; diff --git a/lib/service.c b/lib/service.c index d2b1e903b5ba7c73950998c8fefff3a21eb2b425..dc61c1d23aef3ec5c609e2486f58494fca6dc2c5 100644 --- a/lib/service.c +++ b/lib/service.c @@ -695,6 +695,14 @@ lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd, int t lws_plat_service_periodic(context); + /* retire unused deprecated context */ + + if (context->deprecated && !context->count_wsi_allocated) { + lwsl_notice("%s: ending deprecated context\n", __func__); + kill(getpid(), SIGINT); + return 0; + } + /* global timeout check once per second */ if (pollfd) diff --git a/lib/smtp.c b/lib/smtp.c index 72480b08f8e7dc64944360b18fdf7f3bda598af6..59818802f374b4372400c88d3b488752db401e78 100644 --- a/lib/smtp.c +++ b/lib/smtp.c @@ -211,6 +211,7 @@ lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content) email->content = lws_malloc(max_content); if (!email->content) return 1; + email->max_content_size = max_content; uv_timer_init(loop, &email->timeout_email); @@ -235,5 +236,6 @@ lws_email_destroy(struct lws_email *email) lws_free_set_NULL(email->content); uv_timer_stop(&email->timeout_email); + uv_close((uv_handle_t *)&email->timeout_email, NULL); } diff --git a/lib/ssl.c b/lib/ssl.c index 9cf07e4350dfcbaae9fbafcdb9ca155a27627eb5..36f25ac4478fc045e222a858b0656b21be9a9a41 100644 --- a/lib/ssl.c +++ b/lib/ssl.c @@ -35,6 +35,9 @@ static int urandom_bytes(void *ctx, unsigned char *dest, size_t len) int cur; int fd = open("/dev/urandom", O_RDONLY); + if (fd < 0) + return -1; + while (len) { cur = read(fd, dest, len); if (cur < 0) @@ -290,7 +293,7 @@ lws_ssl_capable_read(struct lws *wsi, unsigned char *buf, int len) } if (wsi->vhost) - wsi->vhost->rx += n; + wsi->vhost->conn_stats.rx += n; lws_restart_ws_ping_pong_timer(wsi); diff --git a/lwsws/main.c b/lwsws/main.c index f948878905851312a0afb4b6694395cf26b92066..d93742de5ac725565a8df41906e7cbff706f5d78 100644 --- a/lwsws/main.c +++ b/lwsws/main.c @@ -32,14 +32,28 @@ #include <syslog.h> #include <sys/time.h> #include <unistd.h> +#include <sys/wait.h> #else #include <io.h> #include "gettimeofday.h" + +int fork(void) +{ + fprintf(stderr, "Sorry Windows doesn't support fork()."); + exit(0); +} #endif #include "../lib/libwebsockets.h" +#include <uv.h> + static struct lws_context *context; +static char config_dir[128]; +static int opts = 0, do_reload = 1; +static uv_loop_t loop; +static uv_signal_t signal_outer; +static int pids[32]; #define LWSWS_CONFIG_STRING_SIZE (32 * 1024) @@ -61,59 +75,141 @@ static struct option options[] = { { "help", no_argument, NULL, 'h' }, { "debug", required_argument, NULL, 'd' }, { "configdir", required_argument, NULL, 'c' }, -#ifndef LWS_NO_DAEMONIZE - { "daemonize", no_argument, NULL, 'D' }, -#endif { NULL, 0, 0, 0 } }; void signal_cb(uv_signal_t *watcher, int signum) { - lwsl_err("Signal %d caught, exiting...\n", watcher->signum); switch (watcher->signum) { case SIGTERM: case SIGINT: break; + + case SIGHUP: + if (lws_context_is_deprecated(context)) + return; + lwsl_notice("Dropping listen sockets\n"); + lws_context_deprecate(context, NULL); + return; + default: signal(SIGABRT, SIG_DFL); abort(); break; } + lwsl_err("Signal %d caught\n", watcher->signum); lws_libuv_stop(context); } -int main(int argc, char **argv) +static int +context_creation(void) { + int cs_len = LWSWS_CONFIG_STRING_SIZE - 1; struct lws_context_creation_info info; - char *cs; - int opts = 0, cs_len = LWSWS_CONFIG_STRING_SIZE - 1; - int n = 0; + char *cs, *config_strings; + + cs = config_strings = malloc(LWSWS_CONFIG_STRING_SIZE); + if (!config_strings) { + lwsl_err("Unable to allocate config strings heap\n"); + return -1; + } + + memset(&info, 0, sizeof(info)); + + info.external_baggage_free_on_destroy = config_strings; + info.max_http_header_pool = 16; + info.options = opts | LWS_SERVER_OPTION_VALIDATE_UTF8 | + LWS_SERVER_OPTION_EXPLICIT_VHOSTS | + LWS_SERVER_OPTION_LIBUV; + + info.plugin_dirs = plugin_dirs; + lwsl_notice("Using config dir: \"%s\"\n", config_dir); + + /* + * first go through the config for creating the outer context + */ + if (lwsws_get_config_globals(&info, config_dir, &cs, &cs_len)) + goto init_failed; + + context = lws_create_context(&info); + if (context == NULL) { + lwsl_err("libwebsocket init failed\n"); + goto init_failed; + } + + lws_uv_sigint_cfg(context, 1, signal_cb); + lws_uv_initloop(context, &loop, 0); + + /* + * then create the vhosts... protocols are entirely coming from + * plugins, so we leave it NULL + */ + + info.extensions = exts; + + if (lwsws_get_config_vhosts(context, &info, config_dir, + &cs, &cs_len)) + return 1; + + return 0; + +init_failed: + free(config_strings); + + return 1; +} + + +/* + * root-level sighup handler + */ + +static void +reload_handler(int signum) +{ #ifndef _WIN32 - int syslog_options = LOG_PID | LOG_PERROR; + int m; + + switch (signum) { + + case SIGHUP: /* reload */ + fprintf(stderr, "root process receives reload\n"); + if (!do_reload) { + fprintf(stderr, "passing HUP to child processes\n"); + for (m = 0; m < ARRAY_SIZE(pids); m++) + if (pids[m]) + kill(pids[m], SIGHUP); + sleep(1); + } + do_reload = 1; + break; + case SIGINT: + case SIGTERM: + case SIGKILL: + fprintf(stderr, "killing service processes\n"); + for (m = 0; m < ARRAY_SIZE(pids); m++) + if (pids[m]) + kill(pids[m], SIGTERM); + exit(0); + } +#else + // kill() implementation needed for WIN32 #endif -#ifndef LWS_NO_DAEMONIZE - int daemonize = 0; +} + +int main(int argc, char **argv) +{ + int n = 0, m, debug_level = 7; +#ifndef _WIN32 + int status, syslog_options = LOG_PID | LOG_PERROR; #endif - int debug_level = 7; - char config_dir[128]; - char *config_strings; - memset(&info, 0, sizeof info); strcpy(config_dir, "/etc/lwsws"); while (n >= 0) { - n = getopt_long(argc, argv, "hd:c:D", options, NULL); + n = getopt_long(argc, argv, "hd:c:", options, NULL); if (n < 0) continue; switch (n) { -#ifndef LWS_NO_DAEMONIZE - case 'D': - daemonize = 1; - #ifndef _WIN32 - syslog_options &= ~LOG_PERROR; - #endif - printf("Daemonizing...\n"); - break; -#endif case 'd': debug_level = atoi(optarg); break; @@ -128,19 +224,51 @@ int main(int argc, char **argv) } } -#if !defined(LWS_NO_DAEMONIZE) && !defined(WIN32) /* - * normally lock path would be /var/lock/lwsts or similar, to - * simplify getting started without having to take care about - * permissions or running as root, set to /tmp/.lwsts-lock + * We leave our original process up permanently, because that + * suits systemd. + * + * Otherwise we get into problems when reload spawns new processes and + * the original one dies randomly. */ - if (daemonize && lws_daemonize("/tmp/.lwsts-lock")) { - fprintf(stderr, "Failed to daemonize\n"); - return 10; - } - if (daemonize) - lwsl_notice("Daemonized\n"); + + signal(SIGHUP, reload_handler); + signal(SIGINT, reload_handler); + + fprintf(stderr, "Root process is %u\n", getpid()); + + while (1) { + if (do_reload) { + do_reload = 0; + n = fork(); + if (n == 0) /* new */ + break; + /* old */ + if (n > 0) + for (m = 0; m < ARRAY_SIZE(pids); m++) + if (!pids[m]) { + // fprintf(stderr, "added child pid %d\n", n); + pids[m] = n; + break; + } + } +#ifndef _WIN32 + sleep(2); + + n = waitpid(-1, &status, WNOHANG); + if (n > 0) + for (m = 0; m < ARRAY_SIZE(pids); m++) + if (pids[m] == n) { + // fprintf(stderr, "reaped child pid %d\n", pids[m]); + pids[m] = 0; + break; + } +#else +// !!! implemenation needed #endif + } + + /* child process */ #ifndef _WIN32 /* we will only try to log things according to our debug_level */ @@ -153,54 +281,33 @@ int main(int argc, char **argv) lwsl_notice("lwsws libwebsockets web server - license CC0 + LGPL2.1\n"); lwsl_notice("(C) Copyright 2010-2016 Andy Green <andy@warmcat.com>\n"); - cs = config_strings = malloc(LWSWS_CONFIG_STRING_SIZE); - if (!config_strings) { - lwsl_err("Unable to allocate config strings heap\n"); - return -1; - } - - memset(&info, 0, sizeof(info)); - - info.external_baggage_free_on_destroy = config_strings; - info.max_http_header_pool = 16; - info.options = opts | LWS_SERVER_OPTION_VALIDATE_UTF8 | - LWS_SERVER_OPTION_EXPLICIT_VHOSTS | - LWS_SERVER_OPTION_LIBUV; - - info.plugin_dirs = plugin_dirs; - lwsl_notice("Using config dir: \"%s\"\n", config_dir); - - /* - * first go through the config for creating the outer context - */ - if (lwsws_get_config_globals(&info, config_dir, &cs, &cs_len)) - goto init_failed; +#if (UV_VERSION_MAJOR > 0) // Travis... + uv_loop_init(&loop); +#else + fprintf(stderr, "Your libuv is too old!\n"); + return 0; +#endif + uv_signal_init(&loop, &signal_outer); + uv_signal_start(&signal_outer, signal_cb, SIGINT); + uv_signal_start(&signal_outer, signal_cb, SIGHUP); - context = lws_create_context(&info); - if (context == NULL) { - lwsl_err("libwebsocket init failed\n"); - goto init_failed; + if (context_creation()) { + lwsl_err("Context creation failed\n"); + return 1; } - /* - * then create the vhosts... protocols are entirely coming from - * plugins, so we leave it NULL - */ - - info.extensions = exts; + lws_libuv_run(context, 0); - if (!lwsws_get_config_vhosts(context, &info, config_dir, - &cs, &cs_len)) { - - /* run the server */ - - lws_uv_sigint_cfg(context, 1, signal_cb); - lws_uv_initloop(context, NULL, 0); + uv_signal_stop(&signal_outer); + lws_context_destroy(context); - lws_libuv_run(context, 0); - } +#if (UV_VERSION_MAJOR > 0) // Travis... + n = 0; + while (n++ < 1024 && uv_loop_close(&loop)) + uv_run(&loop, UV_RUN_NOWAIT); +#endif - lws_context_destroy(context); + lws_context_destroy2(context); fprintf(stderr, "lwsws exited cleanly\n"); @@ -209,9 +316,4 @@ int main(int argc, char **argv) #endif return 0; - -init_failed: - free(config_strings); - - return 1; } diff --git a/lwsws/usr-lib-systemd-system-lwsws.service b/lwsws/usr-lib-systemd-system-lwsws.service index dfa36de30c18d3e1d645c98f9992e8f0b9455da4..13041a3fdca6772745d5991007358cb8f0ed9cf8 100644 --- a/lwsws/usr-lib-systemd-system-lwsws.service +++ b/lwsws/usr-lib-systemd-system-lwsws.service @@ -4,6 +4,8 @@ After=syslog.target [Service] ExecStart=/usr/local/bin/lwsws +ExecReload=/usr/bin/kill -HUP $MAINPID +ExecStop=/usr/bin/killall lwsws StandardError=null [Install] diff --git a/mainpage.md b/mainpage.md index 52b08d745f19b79d8efba0787fd209d622f26d7f..9a427b39afbe5d89989e025261743e5d3e829d3c 100644 --- a/mainpage.md +++ b/mainpage.md @@ -10,4 +10,7 @@ Libwebsockets covers a lot of interesting features for people making embedded se - account management (including registration, email verification, lost pw etc) - strong ssl PFS support (A+ on SSLlabs test) -You can browse by api category <a href="modules.html">here</a>. +You can browse by api category <a href="modules.html">here</a> + +A collection of READMEs for build, coding, lwsws etc are <a href="pages.html">here</a> + diff --git a/plugins/generic-sessions/private-lwsgs.h b/plugins/generic-sessions/private-lwsgs.h index cb408ae8c2d73443d252b781965a73a6cb46ecd8..8bdd51396239a93a3fa4c498d3dddbdd5dd480c4 100644 --- a/plugins/generic-sessions/private-lwsgs.h +++ b/plugins/generic-sessions/private-lwsgs.h @@ -63,6 +63,7 @@ struct lwsgs_user { struct per_vhost_data__gs { struct lws_email email; + struct lwsgs_user u; struct lws_context *context; char session_db[256]; char admin_user[32]; @@ -78,7 +79,7 @@ struct per_vhost_data__gs { int timeout_anon_absolute_secs; int timeout_email_secs; time_t last_session_expire; - struct lwsgs_user u; + char email_inited; }; struct per_session_data__gs { diff --git a/plugins/generic-sessions/protocol_generic_sessions.c b/plugins/generic-sessions/protocol_generic_sessions.c index a828c2091fde6689bdf98e037a8d819cb64c96f6..3c1bf8d69bedcf6ea2c1cb1ba9b3632150bb67fc 100644 --- a/plugins/generic-sessions/protocol_generic_sessions.c +++ b/plugins/generic-sessions/protocol_generic_sessions.c @@ -403,14 +403,20 @@ callback_generic_sessions(struct lws *wsi, enum lws_callback_reasons reason, lws_email_init(&vhd->email, lws_uv_getloop(vhd->context, 0), LWSGS_EMAIL_CONTENT_SIZE); + + vhd->email_inited = 1; break; case LWS_CALLBACK_PROTOCOL_DESTROY: + // lwsl_notice("gs: LWS_CALLBACK_PROTOCOL_DESTROY: v=%p, ctx=%p\n", vhd, vhd->context); if (vhd->pdb) { sqlite3_close(vhd->pdb); vhd->pdb = NULL; } - lws_email_destroy(&vhd->email); + if (vhd->email_inited) { + lws_email_destroy(&vhd->email); + vhd->email_inited = 0; + } break; case LWS_CALLBACK_HTTP: diff --git a/plugins/protocol_dumb_increment.c b/plugins/protocol_dumb_increment.c index 042c5dc9f535c00a28cd8e64e746422506d93778..2157a86401208dd77c200d9def618aa6d278ed48 100644 --- a/plugins/protocol_dumb_increment.c +++ b/plugins/protocol_dumb_increment.c @@ -88,7 +88,9 @@ callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason, case LWS_CALLBACK_PROTOCOL_DESTROY: if (!vhd) break; + // lwsl_notice("di: LWS_CALLBACK_PROTOCOL_DESTROY: v=%p, ctx=%p\n", vhd, vhd->context); uv_timer_stop(&vhd->timeout_watcher); + uv_close((uv_handle_t *)&vhd->timeout_watcher, NULL); break; case LWS_CALLBACK_ESTABLISHED: diff --git a/plugins/protocol_lws_server_status.c b/plugins/protocol_lws_server_status.c index baaabafd083156b1137ec7bbbafc167e0971b2b3..04f792d56d28f8cbd568416f7323a4335d27c3b0 100644 --- a/plugins/protocol_lws_server_status.c +++ b/plugins/protocol_lws_server_status.c @@ -29,6 +29,11 @@ struct lws_ss_load_sample { int load_x100; }; +struct lws_ss_filepath { + struct lws_ss_filepath *next; + char filepath[128]; +}; + struct lws_ss_dumps { char buf[32768]; int length; @@ -38,16 +43,20 @@ struct lws_ss_dumps { int load_tail; }; -static struct lws_ss_dumps d; -static uv_timer_t timeout_watcher; -static struct lws_context *context; -static int tow_flag; - struct per_session_data__server_status { int ver; int pos; }; +struct per_vhost_data__lws_server_status { + uv_timer_t timeout_watcher; + struct lws_context *context; + int hide_vhosts; + int tow_flag; + struct lws_ss_dumps d; + struct lws_ss_filepath *fp; +}; + static const struct lws_protocols protocols[1]; static void @@ -57,30 +66,58 @@ uv_timeout_cb_server_status(uv_timer_t *w #endif ) { - char *p = d.buf + LWS_PRE; - -#if 0 -#ifdef LWS_HAVE_GETLOADAVG - double l = 0.0; - - getloadavg(&l, 1); - d.load[d.load_head].load_x100 = (int)(l * 100); - d.load[d.load_head].t = lws_now_secs(); - d.load_head++; - if (d.load_head == ARRAY_SIZE(d.load)) - d.load_head = 0; - if (d.load_head == d.load_tail) { - d.load_tail++; - if (d.load_tail == ARRAY_SIZE(d.load)) - d.load_tail = 0; + struct per_vhost_data__lws_server_status *v = lws_container_of(w, + struct per_vhost_data__lws_server_status, + timeout_watcher); + struct lws_ss_filepath *fp; + char *p = v->d.buf + LWS_PRE, contents[256], pure[256]; + int n, l, first = 1, fd; + + l = sizeof(v->d.buf) - LWS_PRE; + + n = lws_snprintf(p, l, "{\"i\":"); + p += n; + l -= n; + + n = lws_json_dump_context(v->context, p, l, v->hide_vhosts); + p += n; + l -= n; + + n = lws_snprintf(p, l, ", \"files\": ["); + p += n; + l -= n; + + fp = v->fp; + while (fp) { + if (!first) { + n = lws_snprintf(p, l, ","); + p += n; + l -= n; + } + fd = open(fp->filepath, LWS_O_RDONLY); + if (fd != LWS_INVALID_FILE) { + n = read(fd, contents, sizeof(contents) - 1); + if (n >= 0) { + contents[n] = '\0'; + lws_json_purify(pure, contents, sizeof(pure)); + + n = lws_snprintf(p, l, "{\"path\":\"%s\",\"val\":\"%s\"}", + fp->filepath, pure); + p += n; + l -= n; + first = 0; + } + close(fd); + } + fp = fp->next; } -#endif -#endif + n = lws_snprintf(p, l, "]}"); + p += n; + l -= n; - d.length = lws_json_dump_context(context, p, - sizeof(d.buf) - LWS_PRE); + v->d.length = p - (v->d.buf + LWS_PRE); - lws_callback_on_writable_all_protocol(context, &protocols[0]); + lws_callback_on_writable_all_protocol(v->context, &protocols[0]); } static int @@ -89,6 +126,11 @@ callback_lws_server_status(struct lws *wsi, enum lws_callback_reasons reason, { const struct lws_protocol_vhost_options *pvo = (const struct lws_protocol_vhost_options *)in; + struct per_vhost_data__lws_server_status *v = + (struct per_vhost_data__lws_server_status *) + lws_protocol_vh_priv_get(lws_get_vhost(wsi), + lws_get_protocol(wsi)); + struct lws_ss_filepath *fp, *fp1, **fp_old; int m, period = 1000; switch (reason) { @@ -99,30 +141,55 @@ callback_lws_server_status(struct lws *wsi, enum lws_callback_reasons reason, break; case LWS_CALLBACK_PROTOCOL_INIT: /* per vhost */ - if (tow_flag) + if (v) break; + + lws_protocol_vh_priv_zalloc(lws_get_vhost(wsi), + lws_get_protocol(wsi), + sizeof(struct per_vhost_data__lws_server_status)); + v = (struct per_vhost_data__lws_server_status *) + lws_protocol_vh_priv_get(lws_get_vhost(wsi), + lws_get_protocol(wsi)); + + fp_old = &v->fp; + while (pvo) { + if (!strcmp(pvo->name, "hide-vhosts")) + v->hide_vhosts = atoi(pvo->value); if (!strcmp(pvo->name, "update-ms")) period = atoi(pvo->value); + if (!strcmp(pvo->name, "filepath")) { + fp = malloc(sizeof(*fp)); + fp->next = NULL; + lws_snprintf(&fp->filepath[0], sizeof(fp->filepath), "%s", pvo->value); + *fp_old = fp; + fp_old = &fp->next; + } pvo = pvo->next; } - context = lws_get_context(wsi); - uv_timer_init(lws_uv_getloop(context, 0), &timeout_watcher); - uv_timer_start(&timeout_watcher, + v->context = lws_get_context(wsi); + uv_timer_init(lws_uv_getloop(v->context, 0), &v->timeout_watcher); + uv_timer_start(&v->timeout_watcher, uv_timeout_cb_server_status, 2000, period); - tow_flag = 1; break; case LWS_CALLBACK_PROTOCOL_DESTROY: /* per vhost */ - if (!tow_flag) + // lwsl_notice("ss: LWS_CALLBACK_PROTOCOL_DESTROY: v=%p, ctx=%p\n", v, v->context); + if (!v) break; - uv_timer_stop(&timeout_watcher); - tow_flag = 0; + uv_timer_stop(&v->timeout_watcher); + uv_close((uv_handle_t *)&v->timeout_watcher, NULL); + fp = v->fp; + while (fp) { + fp1= fp->next; + free(fp); + fp = fp1; + } break; case LWS_CALLBACK_SERVER_WRITEABLE: - m = lws_write(wsi, (unsigned char *)d.buf + LWS_PRE, d.length, - LWS_WRITE_TEXT); + m = lws_write(wsi, (unsigned char *)v->d.buf + LWS_PRE, + v->d.length, LWS_WRITE_TEXT); if (m < 0) return -1; break; diff --git a/plugins/server-status.html b/plugins/server-status.html index 62d35454c0558c1a1dd1a72b18f024747a604742..a49513252a926e1259bcd743a70ba23fd1fb8e9f 100644 --- a/plugins/server-status.html +++ b/plugins/server-status.html @@ -48,6 +48,13 @@ -webkit-border-radius:3px; -moz-border-radius:3px; border-radius:3px; } + td.dl { vertical-align:middle; + text-align:center; + background:#c0c0c0; + padding:3px; + -webkit-border-radius:3px; + -moz-border-radius:3px; + border-radius:3px; } td.c { vertical-align:middle; text-align:center; background:#c0c0a0; @@ -55,6 +62,27 @@ -webkit-border-radius:3px; -moz-border-radius:3px; border-radius:3px; } + td.c0 { vertical-align:middle; + text-align:center; + background:#b0b090; + padding:3px; + -webkit-border-radius:3px; + -moz-border-radius:3px; + border-radius:3px; } + td.dc0 { vertical-align:middle; + text-align:center; + background:#a0a0a0; + padding:3px; + -webkit-border-radius:3px; + -moz-border-radius:3px; + border-radius:3px; } + td.c1 { vertical-align:middle; + text-align:center; + background:#c0c0c0; + padding:3px; + -webkit-border-radius:3px; + -moz-border-radius:3px; + border-radius:3px; } td.t { vertical-align:middle; text-align:center; background:#e0e0c0; @@ -113,6 +141,7 @@ <tr><td><img src="./lwsws-logo.png"></td><td><span id=title class=title>Server status</span></td></tr> <tr><td align=center colspan=2> <div id="conninfo">...</div> +<div id="json"></div> </td></tr> @@ -200,89 +229,133 @@ function get_appropriate_ws_url() } socket_status.onmessage =function got_packet(msg) { - var u; - //document.getElementById("conninfo").innerHTML = "<pre>"+msg.data+"</pre>"; + var u, ci, n; + //document.getElementById("json").innerHTML = "<pre>"+msg.data+"</pre>"; jso = JSON.parse(msg.data); - u = parseInt(san(jso.uptime)); - s = "<table><tr><td class=\"c\">" + - "Context</td><td>" + + u = parseInt(san(jso.i.uptime)); + + if (parseInt(jso.i.contexts[0].deprecated) == 0) + s = "<table><tr><td></td><td class=\"c0\">"; + else + s = "<table><tr><td></td><td class=\"dc0\">"; + s += + "Server</td><td>" + "<span class=n>Version:</span> <span class=v>" + - san(jso.version) + "</span><br>" + + san(jso.i.version) + "</span><br>" + "<span class=n>Uptime:</span> <span class=v>" + ((u / (24 * 3600)) | 0) + "d " + (((u % (24 * 3600)) / 3600) | 0) + "h " + (((u % 3600) / 60) | 0) + "m</span>"; - if (jso.l1) - s = s + ", <span class=n>Load:</span> <span class=v>" + san(jso.l1) + " "; - if (jso.l2) - s = s + san(jso.l2) + " "; - if (jso.l3) - s = s + san(jso.l3); - if (jso.l1) + if (jso.i.l1) + s = s + ", <span class=n>Load:</span> <span class=v>" + san(jso.i.l1) + " "; + if (jso.i.l2) + s = s + san(jso.i.l2) + " "; + if (jso.i.l3) + s = s + san(jso.i.l3); + if (jso.i.l1) s =s + "<span>"; - s = s + - "<br>" + - "<span class=n>Listening wsi:</span> <span class=v>" + san(jso.listen_wsi) + "</span>, " + - "<span class=n>Current wsi alive:</span> <span class=v>" + (parseInt(san(jso.wsi_alive)) - - parseInt(san(jso.listen_wsi))) + "</span><br>" + - "<span class=n>Current cgi alive:</span> <span class=v>" + san(jso.cgi_alive) + "</span>, " + - "<span class=n>Total CGI spawned:</span> <span class=v>" + san(jso.cgi_spawned) + - "</span></td></tr>"; - var n; - for (n = 0; n < jso.pt.length; n++) { - - s = s + "<tr><td class=\"l\">service thread " + (n + 1) + - "</td><td>" + - "<span class=n>fds:</span> <span class=v>" + san(jso.pt[n].fds_count) + " / " + - san(jso.pt_fd_max) + "</span>, "; - s = s + "<span class=n>ah pool:</span> <span class=v>" + san(jso.pt[n].ah_pool_inuse) + " / " + - san(jso.ah_pool_max) + "</span>, " + - "<span class=n>ah waiting list:</span> <span class=v>" + san(jso.pt[n].ah_wait_list); - - s = s + "</span></td></tr>"; - + + for (n = 0; n < jso.files.length; n++) { + s += "<br><span class=n>" + san(jso.files[n].path) + ":</span><br> " + san(jso.files[n].val); } - for (n = 0; n < jso.vhosts.length; n++) { - s = s + "<tr><td class=\"l\">vhost " + (n + 1) + - "</td><td><span class=\"mountname\">"; - if (jso.vhosts[n].use_ssl == '1') - s = s + "https://"; + s += "</td></tr>"; + + for (ci = 0; ci < jso.i.contexts.length; ci++) { + + if (parseInt(jso.i.contexts[ci].deprecated) == 0) + s += "<tr><td></td><td class=\"c\">" + + "Active Context</td><td>"; else - s = s + "http://"; - s = s + san(jso.vhosts[n].name) + ":" + - san(jso.vhosts[n].port) + "</span>"; - if (jso.vhosts[n].sts == '1') - s = s + " (STS)"; - s = s +"<br>" + - "<span class=n>rx:</span> <span class=v>" + humanize(san(jso.vhosts[n].rx)) + "B</span>, " + - "<span class=n>tx</span> <span class=v>" + humanize(san(jso.vhosts[n].tx)) + "B</span><br>" + - "<span class=n>total connections</span> <span class=v>" + san(jso.vhosts[n].conn) + "</span>, " + - "<span class=n>total http transactions</span> <span class=v>" + san(jso.vhosts[n].trans) + "</span><br>" + - "<span class=n>Upgrades to ws:</span> <span class=v>" + san(jso.vhosts[n].ws_upg) + "</span>, " + - "<span class=n>to http/2:</span> <span class=v>" + san(jso.vhosts[n].http2_upg) + "</span><br>" + - "<table style=\"margin-left:16px\"><tr><td class=t>Mountpoint</td><td class=t>Origin</td><td class=t>Cache Policy</td></tr>"; + s += "<tr><td></td><td class=\"c1\">" + + "Deprecated Context " + ci + "</td><td>"; + + u = parseInt(san(jso.i.contexts[ci].context_uptime)); + s += "<span class=n>Uptime:</span> <span class=v>" + + ((u / (24 * 3600)) | 0) + "d " + + (((u % (24 * 3600)) / 3600) | 0) + "h " + + (((u % 3600) / 60) | 0) + "m</span>"; + + s = s + + "<br>" + + "<span class=n>Listening wsi:</span> <span class=v>" + san(jso.i.contexts[ci].listen_wsi) + "</span>, " + + "<span class=n>Current wsi alive:</span> <span class=v>" + (parseInt(san(jso.i.contexts[ci].wsi_alive)) - + parseInt(san(jso.i.contexts[ci].listen_wsi))) + "</span><br>" + + "<span class=n>Total Rx:</span> <span class=v>" + humanize(san(jso.i.contexts[ci].rx)) +"</span>, " + + "<span class=n>Total Tx:</span> <span class=v>" + humanize(san(jso.i.contexts[ci].tx)) +"</span><br>" + + "<span class=n>Total connections:</span> <span class=v>" + san(jso.i.contexts[ci].conn) +"</span>, " + + "<span class=n>Total HTTP Transactions:</span> <span class=v>" + san(jso.i.contexts[ci].trans) +"</span><br>" + + "<span class=n>Total ws upgrades:</span> <span class=v>" + san(jso.i.contexts[ci].ws_upg) +"</span>, " + + "<span class=n>Total h2 upgrades:</span> <span class=v>" + san(jso.i.contexts[ci].http2_upg) +"</span>, " + + "<span class=n>Total Rejected:</span> <span class=v>" + san(jso.i.contexts[ci].rejected) +"</span><br>" + + "<span class=n>Current cgi alive:</span> <span class=v>" + san(jso.i.contexts[ci].cgi_alive) + "</span>, " + + "<span class=n>Total CGI spawned:</span> <span class=v>" + san(jso.i.contexts[ci].cgi_spawned) + + "</span><table>"; - var m; - for (m = 0; m < jso.vhosts[n].mounts.length; m++) { - s = s + "<tr><td>"; - s = s + "<span class=\"m1\">" + san(jso.vhosts[n].mounts[m].mountpoint) + - "</span></td><td><span class=\"m2\">" + - san(jso.vhosts[n].mounts[m].origin) + - "</span></td><td>"; - if (parseInt(san(jso.vhosts[n].mounts[m].cache_max_age))) - s = s + "<span class=n>max-age:</span> <span class=v>" + - san(jso.vhosts[n].mounts[m].cache_max_age) + - "</span>, <span class=n>reuse:</span> <span class=v>" + - san(jso.vhosts[n].mounts[m].cache_reuse) + - "</span>, <span class=n>reval:</span> <span class=v>" + - san(jso.vhosts[n].mounts[m].cache_revalidate) + - "</span>, <span class=n>inter:</span> <span class=v>" + - san(jso.vhosts[n].mounts[m].cache_intermediaries); - s = s + "</span></td></tr>" + for (n = 0; n < jso.i.contexts[ci].pt.length; n++) { + + if (parseInt(jso.i.contexts[ci].deprecated) == 0) + s += "<tr><td> </td><td class=\"l\">service thread " + (n + 1); + else + s += "<tr><td> </td><td class=\"dl\">service thread " + (n + 1); + s += "</td><td>" + + "<span class=n>fds:</span> <span class=v>" + san(jso.i.contexts[ci].pt[n].fds_count) + " / " + + san(jso.i.contexts[ci].pt_fd_max) + "</span>, "; + s = s + "<span class=n>ah pool:</span> <span class=v>" + san(jso.i.contexts[ci].pt[n].ah_pool_inuse) + " / " + + san(jso.i.contexts[ci].ah_pool_max) + "</span>, " + + "<span class=n>ah waiting list:</span> <span class=v>" + san(jso.i.contexts[ci].pt[n].ah_wait_list); + + s = s + "</span></td></tr>"; + } - s = s + "</table>"; - s = s + "</td></tr>"; - } + for (n = 0; n < jso.i.contexts[ci].vhosts.length; n++) { + if (parseInt(jso.i.contexts[ci].deprecated) == 0) + s += "<tr><td> </td><td class=\"l\">vhost " + (n + 1); + else + s += "<tr><td> </td><td class=\"dl\">vhost " + (n + 1); + s += "</td><td><span class=\"mountname\">"; + if (jso.i.contexts[ci].vhosts[n].use_ssl == '1') + s = s + "https://"; + else + s = s + "http://"; + s = s + san(jso.i.contexts[ci].vhosts[n].name) + ":" + + san(jso.i.contexts[ci].vhosts[n].port) + "</span>"; + if (jso.i.contexts[ci].vhosts[n].sts == '1') + s = s + " (STS)"; + s = s +"<br>" + + "<span class=n>rx:</span> <span class=v>" + humanize(san(jso.i.contexts[ci].vhosts[n].rx)) + "B</span>, " + + "<span class=n>tx</span> <span class=v>" + humanize(san(jso.i.contexts[ci].vhosts[n].tx)) + "B</span><br>" + + "<span class=n>vh connections</span> <span class=v>" + san(jso.i.contexts[ci].vhosts[n].conn) + "</span>, " + + "<span class=n>vh http transactions</span> <span class=v>" + san(jso.i.contexts[ci].vhosts[n].trans) + "</span><br>" + + "<span class=n>vh upgrades to ws:</span> <span class=v>" + san(jso.i.contexts[ci].vhosts[n].ws_upg) + "</span>, " + + "<span class=n>to http/2:</span> <span class=v>" + san(jso.i.contexts[ci].vhosts[n].http2_upg) + "</span>, " + + "<span class=n>rejected:</span> <span class=v>" + san(jso.i.contexts[ci].vhosts[n].rejected) + "</span><br>" + + "<table style=\"margin-left:16px\"><tr><td class=t>Mountpoint</td><td class=t>Origin</td><td class=t>Cache Policy</td></tr>"; + + var m; + for (m = 0; m < jso.i.contexts[ci].vhosts[n].mounts.length; m++) { + s = s + "<tr><td>"; + s = s + "<span class=\"m1\">" + san(jso.i.contexts[ci].vhosts[n].mounts[m].mountpoint) + + "</span></td><td><span class=\"m2\">" + + san(jso.i.contexts[ci].vhosts[n].mounts[m].origin) + + "</span></td><td>"; + if (parseInt(san(jso.i.contexts[ci].vhosts[n].mounts[m].cache_max_age))) + s = s + "<span class=n>max-age:</span> <span class=v>" + + san(jso.i.contexts[ci].vhosts[n].mounts[m].cache_max_age) + + "</span>, <span class=n>reuse:</span> <span class=v>" + + san(jso.i.contexts[ci].vhosts[n].mounts[m].cache_reuse) + + "</span>, <span class=n>reval:</span> <span class=v>" + + san(jso.i.contexts[ci].vhosts[n].mounts[m].cache_revalidate) + + "</span>, <span class=n>inter:</span> <span class=v>" + + san(jso.i.contexts[ci].vhosts[n].mounts[m].cache_intermediaries); + s = s + "</span></td></tr>" + } + s = s + "</table>"; + s = s + "</td></tr>"; + } + + s += "</table></td></tr>"; + + } // context s = s + "</table>"; document.getElementById("conninfo").innerHTML = s;