mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-09 00:00:04 +01:00
ws ping pong on idle connections
This adds a new member to the context creation info struct "ws_ping_pong_interval". If nonzero, it sets the number of seconds that established ws connections are allowed to be idle before a PING is forced to be sent. If zero (the default) then tracking of idle connection is disabled for backwards compatibility. Timeouts cover both the period between decision to send the ping and it being sent (because it needs the socket to become writeable), and the period between the ping being sent and the PONG coming back. INFO debug logs are issues when the timeout stuff is operating. You can test the server side by running the test server hacked to set ws_ping_pong_interval and debug log mask of 15. Both the mirror protocol and the server-status protocol are idle if nothing is happening and will trigger the PING / PONG testing. (You can also test using lwsws and /etc/lwsws/conf with "ws-pingpong-secs": "20" in the global section) For client, run the test client with -n -P 20 for 20s interval. -n stops the test client writing using the mirror protocol, so it will be idle and trigger the PING / PONGs. The timeout interval may be up to +10s late, as lws checks for affected connections every 10s.
This commit is contained in:
parent
0fa6821214
commit
f32d25051c
36 changed files with 391 additions and 197 deletions
|
@ -42,6 +42,7 @@ There is a single file intended for global settings
|
|||
"gid": "48", # apache user
|
||||
"count-threads": "1",
|
||||
"server-string": "myserver v1", # returned in http headers
|
||||
"ws-pingpong-secs": "200", # confirm idle established ws connections this often
|
||||
"init-ssl": "yes"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -642,6 +642,9 @@ $(document).ready(function(){initNavTree('functions.html','');});
|
|||
<li>write
|
||||
: <a class="el" href="structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793">lws_plat_file_ops</a>
|
||||
</li>
|
||||
<li>ws_ping_pong_interval
|
||||
: <a class="el" href="structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078">lws_context_creation_info</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
|
|
|
@ -629,6 +629,9 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
|
|||
<li>write
|
||||
: <a class="el" href="structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793">lws_plat_file_ops</a>
|
||||
</li>
|
||||
<li>ws_ping_pong_interval
|
||||
: <a class="el" href="structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078">lws_context_creation_info</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
|
|
|
@ -112,7 +112,7 @@ LWS_VISIBLE LWS_EXTERN int </td><td class="memItemRight" valign="bottom"><b
|
|||
|
||||
<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="l01859"></a><span class="lineno"> 1859</span>  {</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  LCCSCF_USE_SSL = (1 << 0),</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> };</div></div><!-- fragment -->
|
||||
<div class="fragment"><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>  {</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>  LCCSCF_USE_SSL = (1 << 0),</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span> };</div></div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
|
|
|
@ -40,7 +40,8 @@ var group__context_and_vhost =
|
|||
[ "token_limits", "structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29", null ],
|
||||
[ "uid", "structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e", null ],
|
||||
[ "user", "structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0", null ],
|
||||
[ "vhost_name", "structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9", null ]
|
||||
[ "vhost_name", "structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9", null ],
|
||||
[ "ws_ping_pong_interval", "structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078", null ]
|
||||
] ],
|
||||
[ "lws_protocol_vhost_options", "structlws__protocol__vhost__options.html", [
|
||||
[ "name", "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9", null ],
|
||||
|
|
|
@ -156,9 +156,9 @@ Functions</h2></td></tr>
|
|||
<p>a new file is starting to arrive </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="fragment"><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  {</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a>,</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a>,</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</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:2642</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:2644</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:2640</div></div>
|
||||
<div class="fragment"><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>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a>,</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a>,</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</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:2654</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:2656</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:2652</div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -130,13 +130,13 @@ Functions</h2></td></tr>
|
|||
<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="l02980"></a><span class="lineno"> 2980</span>  {</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a> = 0,</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a> = 1,</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a> = 2,</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a> = 3,</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>  <span class="comment">/* LWS_WRITE_CLOSE is handled by lws_close_reason() */</span></div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>  LWS_WRITE_PING = 5,</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>  LWS_WRITE_PONG = 6,</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span> </div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>  <span class="comment">/* Same as write_http but we know this write ends the transaction */</span></div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>  LWS_WRITE_HTTP_FINAL = 7,</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span> </div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>  <span class="comment">/* HTTP2 */</span></div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span> </div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a> = 8,</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span> </div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>  <span class="comment">/* flags */</span></div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span> </div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a> = 0x40,</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a> = 0x80</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</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:2991</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:3014</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:2981</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:2985</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:3017</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:2988</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:3003</div></div>
|
||||
<div class="fragment"><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>  {</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a> = 0,</div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a> = 1,</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a> = 2,</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a> = 3,</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>  <span class="comment">/* LWS_WRITE_CLOSE is handled by lws_close_reason() */</span></div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>  LWS_WRITE_PING = 5,</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>  LWS_WRITE_PONG = 6,</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span> </div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>  <span class="comment">/* Same as write_http but we know this write ends the transaction */</span></div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>  LWS_WRITE_HTTP_FINAL = 7,</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span> </div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>  <span class="comment">/* HTTP2 */</span></div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span> </div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a> = 8,</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span> </div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>  <span class="comment">/* flags */</span></div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span> </div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a> = 0x40,</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a> = 0x80</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</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:3005</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:3028</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:2995</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:2999</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:3031</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:3002</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:3017</div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -157,15 +157,15 @@ Functions</h2></td></tr>
|
|||
<p>sent the session quit </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="fragment"><div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>  {</div><div class="line"><a name="l03903"></a><span class="lineno"> 3903</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a>, </div><div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a>, </div><div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a>, </div><div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a>, </div><div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a>, </div><div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a>, </div><div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a>, </div><div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a>, </div><div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a>, </div><div class="line"><a name="l03912"></a><span class="lineno"> 3912</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:3905</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:3910</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:3903</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:3904</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:3908</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:3907</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:3911</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:3906</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:3909</div></div>
|
||||
<div class="fragment"><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>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a>, </div><div class="line"><a name="l03918"></a><span class="lineno"> 3918</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a>, </div><div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a>, </div><div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a>, </div><div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a>, </div><div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a>, </div><div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a>, </div><div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a>, </div><div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a>, </div><div class="line"><a name="l03926"></a><span class="lineno"> 3926</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:3919</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:3924</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:3917</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:3918</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:3922</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:3921</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:3925</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:3920</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:3923</div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -90,7 +90,10 @@ Enumerations</h2></td></tr>
|
|||
  <b>PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE</b> = 12,
|
||||
<b>PENDING_TIMEOUT_SHUTDOWN_FLUSH</b> = 13,
|
||||
<b>PENDING_TIMEOUT_CGI</b> = 14,
|
||||
<b>PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE</b> = 15
|
||||
<b>PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE</b> = 15,
|
||||
<br />
|
||||
  <b>PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING</b> = 16,
|
||||
<b>PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG</b> = 17
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:ga2c0aa4b9c3c55bae7b35cbfac3246c87"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
|
|
|
@ -129,13 +129,13 @@ Enumerations</h2></td></tr>
|
|||
<p>hand by named protocol's callback </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="fragment"><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>  {</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a> = 0, </div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a> = 1, </div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a> = 2, </div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a> = 3, </div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a> = 4, </div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a> = 5, </div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a> = 6, </div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</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:1799</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:1797</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:1798</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:1800</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:1801</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:1796</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:1802</div></div>
|
||||
<div class="fragment"><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>  {</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0">LWSMPRO_HTTP</a> = 0, </div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1">LWSMPRO_HTTPS</a> = 1, </div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2">LWSMPRO_FILE</a> = 2, </div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69">LWSMPRO_CGI</a> = 3, </div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970">LWSMPRO_REDIR_HTTP</a> = 4, </div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67">LWSMPRO_REDIR_HTTPS</a> = 5, </div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  <a class="code" href="group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da">LWSMPRO_CALLBACK</a> = 6, </div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</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:1811</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:1809</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:1810</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:1812</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:1813</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:1808</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:1814</div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -562,7 +562,10 @@ Enumerations</h2></td></tr>
|
|||
  <b>PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE</b> = 12,
|
||||
<b>PENDING_TIMEOUT_SHUTDOWN_FLUSH</b> = 13,
|
||||
<b>PENDING_TIMEOUT_CGI</b> = 14,
|
||||
<b>PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE</b> = 15
|
||||
<b>PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE</b> = 15,
|
||||
<br />
|
||||
  <b>PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING</b> = 16,
|
||||
<b>PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG</b> = 17
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:ga2c0aa4b9c3c55bae7b35cbfac3246c87"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
|
|
|
@ -368,7 +368,9 @@ var libwebsockets_8h =
|
|||
[ "PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e", null ],
|
||||
[ "PENDING_TIMEOUT_SHUTDOWN_FLUSH", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a11292263c9eccd090294e7e316200d7f", null ],
|
||||
[ "PENDING_TIMEOUT_CGI", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2", null ],
|
||||
[ "PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45", null ]
|
||||
[ "PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45", null ],
|
||||
[ "PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaac32d9ca2f7c31f5649ad4059d7b985", null ],
|
||||
[ "PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a62ae208399be1f872e14843fd15f9e06", null ]
|
||||
] ],
|
||||
[ "_lws_log", "group__log.html#gaf5f07837692b2f231a79da8a058288aa", null ],
|
||||
[ "_lws_logv", "group__log.html#ga74eb146969f0595e12ea835851b4588e", null ],
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -81,7 +81,7 @@ Lwsws Configuration</h1>
|
|||
<li>There's also a single substitution, if a string contains "_lws_ddir_", then that is replaced with the LWS install data directory path, eg, "/usr/share" or whatever was set when LWS was built + installed. That lets you refer to installed paths without having to change the config if your install path was different.</li>
|
||||
</ul>
|
||||
<p>There is a single file intended for global settings</p>
|
||||
<p>/etc/lwsws/conf </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> # these are the server global settings</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> # stuff related to vhosts should go in one</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> # file per vhost in ../conf.d/</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  "global": {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  "uid": "48", # apache user</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  "gid": "48", # apache user</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  "count-threads": "1",</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  "server-string": "myserver v1", # returned in http headers</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  "init-ssl": "yes"</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  }</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> }</div></div><!-- fragment --><p> and a config directory intended to take one file per vhost</p>
|
||||
<p>/etc/lwsws/conf </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> # these are the server global settings</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> # stuff related to vhosts should go in one</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> # file per vhost in ../conf.d/</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  "global": {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  "uid": "48", # apache user</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  "gid": "48", # apache user</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  "count-threads": "1",</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  "server-string": "myserver v1", # returned in http headers</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  "ws-pingpong-secs": "200", # confirm idle established ws connections this often</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  "init-ssl": "yes"</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  }</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> }</div></div><!-- fragment --><p> and a config directory intended to take one file per vhost</p>
|
||||
<p>/etc/lwsws/conf.d/warmcat.com </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> {</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  "vhosts": [{</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>  "name": "warmcat.com",</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  "port": "443",</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  "interface": "eth0", # optional</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  "host-ssl-key": "/etc/pki/tls/private/warmcat.com.key", # if given enable ssl</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  "host-ssl-cert": "/etc/pki/tls/certs/warmcat.com.crt",</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  "host-ssl-ca": "/etc/pki/tls/certs/warmcat.com.cer",</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  "mounts": [{ # autoserve</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  "mountpoint": "/",</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  "origin": "file:///var/www/warmcat.com",</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  "default": "index.html"</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  }]</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  }]</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> }</div></div><!-- fragment --><p> To get started quickly, an example config reproducing the old test server on port 7681, non-SSL is provided. To set it up </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> # mkdir -p /etc/lwsws/conf.d /var/log/lwsws</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> # cp ./lwsws/etc-lwsws-conf-EXAMPLE /etc/lwsws/conf</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> # cp ./lwsws/etc-lwsws-conf.d-localhost-EXAMPLE /etc/lwsws/conf.d/test-server</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> # sudo lwsws</div></div><!-- fragment --><h1><a class="anchor" id="lwswsv"></a>
|
||||
Lwsws Vhosts</h1>
|
||||
<p>One server can run many vhosts, where SSL is in use SNI is used to match the connection to a vhost and its vhost-specific SSL keys during SSL negotiation.</p>
|
||||
|
|
|
@ -134,8 +134,8 @@ var NAVTREEINDEX =
|
|||
"annotated.html",
|
||||
"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016",
|
||||
"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5",
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbac8f5f992c6615324108cdf931da903be",
|
||||
"structlws__polarssl__context.html#a919c33af37aab170f828d954de1fa270"
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba60ac587febc583475c185e1409a0210c",
|
||||
"structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f"
|
||||
];
|
||||
|
||||
var SYNCONMSG = 'click to disable panel synchronisation';
|
||||
|
|
|
@ -204,8 +204,8 @@ var NAVTREEINDEX0 =
|
|||
"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,94],
|
||||
"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,66],
|
||||
"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,4,7],
|
||||
"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,66],
|
||||
"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[11,0,0,0,158],
|
||||
"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,4,14],
|
||||
"group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[11,0,0,0,23],
|
||||
|
@ -214,16 +214,16 @@ var NAVTREEINDEX0 =
|
|||
"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,4,11],
|
||||
"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[11,0,0,0,150],
|
||||
"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,4,12],
|
||||
"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,4,4],
|
||||
"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[11,0,0,0,63],
|
||||
"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,4,4],
|
||||
"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[9,4,10],
|
||||
"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[11,0,0,0,108],
|
||||
"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[11,0,0,0,157],
|
||||
"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[9,4,13],
|
||||
"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[9,4,9],
|
||||
"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[11,0,0,0,107],
|
||||
"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[11,0,0,0,64],
|
||||
"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[9,4,5],
|
||||
"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[11,0,0,0,64],
|
||||
"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[11,0,0,0,65],
|
||||
"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[9,4,6],
|
||||
"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[11,0,0,0,23,8],
|
||||
|
|
|
@ -189,8 +189,8 @@ var NAVTREEINDEX1 =
|
|||
"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[11,0,0,0,85],
|
||||
"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[11,0,0,0,153],
|
||||
"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,8,10],
|
||||
"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9],
|
||||
"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,130],
|
||||
"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9],
|
||||
"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,8,4],
|
||||
"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[11,0,0,0,83],
|
||||
"group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[9,8,1],
|
||||
|
@ -218,8 +218,8 @@ var NAVTREEINDEX1 =
|
|||
"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,32,2],
|
||||
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[9,13,0,5],
|
||||
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[11,0,0,0,32,8],
|
||||
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3":[9,13,0,5],
|
||||
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[9,13,0,6],
|
||||
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce":[11,0,0,0,32,9],
|
||||
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da6e556322ff8f205bf311608f7f6e6559":[11,0,0,0,32,4],
|
||||
|
@ -234,18 +234,18 @@ var NAVTREEINDEX1 =
|
|||
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,13,0,4],
|
||||
"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[11,0,0,0,32,7],
|
||||
"group__service.html":[9,0],
|
||||
"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,53],
|
||||
"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[9,0,1],
|
||||
"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,53],
|
||||
"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0],
|
||||
"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,52],
|
||||
"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,5],
|
||||
"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,129],
|
||||
"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,5],
|
||||
"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,3],
|
||||
"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,127],
|
||||
"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,4],
|
||||
"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,128],
|
||||
"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,2],
|
||||
"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,4],
|
||||
"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,126],
|
||||
"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,44],
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
var NAVTREEINDEX2 =
|
||||
{
|
||||
"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[9,11,2],
|
||||
"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,11,1],
|
||||
"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[11,0,0,0,45],
|
||||
"group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,11,1],
|
||||
"group__smtp.html":[9,14],
|
||||
"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,14,1],
|
||||
"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[11,0,0,0,34],
|
||||
"group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,14,1],
|
||||
"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,14,3],
|
||||
"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,69],
|
||||
"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,14,2],
|
||||
|
@ -14,27 +14,27 @@ var NAVTREEINDEX2 =
|
|||
"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,14,4],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[9,14,1,3],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[11,0,0,0,34,3],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,34,0],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[9,14,1,0],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,34,8],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,34,0],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,34,8],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,34,7],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,14,1,7],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,14,1,6],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,34,6],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,14,1,6],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,14,1,4],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[11,0,0,0,34,4],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[11,0,0,0,34,5],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[11,0,0,0,34,2],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,14,1,2],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[11,0,0,0,34,2],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,14,1,1],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[11,0,0,0,34,1],
|
||||
"group__sock-adopt.html":[9,15],
|
||||
"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,43],
|
||||
"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,15,1],
|
||||
"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0],
|
||||
"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,43],
|
||||
"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[11,0,0,0,42],
|
||||
"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0],
|
||||
"group__timeout.html":[9,3],
|
||||
"group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[11,0,0,0,35],
|
||||
"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[11,0,0,0,134],
|
||||
|
@ -48,9 +48,11 @@ var NAVTREEINDEX2 =
|
|||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a44feda6cc9507a8613b9263b1acc8ce1":[11,0,0,0,35,8],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a52236b42ec5ffe65d4cdbadeb6c4fcb0":[11,0,0,0,35,2],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a5fe48ea6f3f5363cca55d39b78490b45":[11,0,0,0,35,15],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a62ae208399be1f872e14843fd15f9e06":[11,0,0,0,35,17],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a65785467c0b560bead865231fdd405d7":[11,0,0,0,35,0],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2":[11,0,0,0,35,14],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a7d5b3bcc88ccbddfa57674e174a78c2d":[11,0,0,0,35,9],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaac32d9ca2f7c31f5649ad4059d7b985":[11,0,0,0,35,16],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaf69f440c2e000787efae5ad6f39e74c":[11,0,0,0,35,11],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ab20463ee983bcd68cd8a501319da56d3":[11,0,0,0,35,6],
|
||||
"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ad7ebebb506afd30c48e1e5e3a578cd30":[11,0,0,0,35,1],
|
||||
|
@ -61,10 +63,10 @@ var NAVTREEINDEX2 =
|
|||
"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[11,0,0,0,145],
|
||||
"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[9,6,5,1],
|
||||
"group__usercb.html":[9,16],
|
||||
"group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[11,0,0,0,7],
|
||||
"group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[9,16,0],
|
||||
"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[11,0,0,0,19],
|
||||
"group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[11,0,0,0,7],
|
||||
"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[9,16,1],
|
||||
"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[11,0,0,0,19],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6":[11,0,0,0,19,17],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6":[9,16,1,17],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0418587d5083bb4850faa438648496ba":[11,0,0,0,19,49],
|
||||
|
@ -103,8 +105,8 @@ var NAVTREEINDEX2 =
|
|||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[9,16,1,3],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[11,0,0,0,19,11],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[9,16,1,11],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,16,1,5],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[11,0,0,0,19,5],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,16,1,5],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[11,0,0,0,19,35],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[9,16,1,35],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[11,0,0,0,19,52],
|
||||
|
@ -132,11 +134,11 @@ var NAVTREEINDEX2 =
|
|||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1":[9,16,1,8],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7abcf9c720cd3d361a83d1ac65bf052a25":[11,0,0,0,19,39],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac11c336f7052abf3618962902a71ebc8":[11,0,0,0,19,54],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[11,0,0,0,19,38],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[9,16,1,38],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[11,0,0,0,19,38],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac432e9f891c733ba8f968c1bf57c0ddc":[11,0,0,0,19,45],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[9,16,1,13],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[11,0,0,0,19,13],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[9,16,1,13],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac8c0ae966ef1877e0020c0077ff2e4a4":[11,0,0,0,19,41],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[11,0,0,0,19,30],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[9,16,1,30],
|
||||
|
@ -154,16 +156,16 @@ var NAVTREEINDEX2 =
|
|||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[9,16,1,21],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[11,0,0,0,19,23],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,16,1,23],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,19,12],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[11,0,0,0,19,19],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,16,1,19],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[11,0,0,0,19,55],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[11,0,0,0,19,51],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[11,0,0,0,19,29],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,16,1,29],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,16,1,16],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[11,0,0,0,19,16],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,16,1,16],
|
||||
"group__uv.html":[9,22],
|
||||
"group__uv.html#ga097c89497824d4de225a85a00661fc89":[11,0,0,0,110],
|
||||
"group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[11,0,0,0,111],
|
||||
|
@ -174,8 +176,8 @@ var NAVTREEINDEX2 =
|
|||
"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,29],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,4,0,2,3],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[11,0,0,0,29,3],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,4,0,2,3],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[11,0,0,0,29,0],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,4,0,2,0],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,4,0,2,2],
|
||||
|
@ -184,8 +186,8 @@ var NAVTREEINDEX2 =
|
|||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,29,5],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,4,0,2,6],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[11,0,0,0,29,6],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[11,0,0,0,29,4],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,4,0,2,4],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[11,0,0,0,29,4],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[11,0,0,0,29,1],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[9,4,0,2,1],
|
||||
"group__wsclose.html":[9,17],
|
||||
|
@ -195,8 +197,8 @@ var NAVTREEINDEX2 =
|
|||
"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,17,0],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,22,3],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,17,0,2],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,17,0,9],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[11,0,0,0,22,10],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,17,0,9],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[11,0,0,0,22,14],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[11,0,0,0,22,1],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,17,0,0],
|
||||
|
@ -210,24 +212,24 @@ var NAVTREEINDEX2 =
|
|||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,17,0,7],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[11,0,0,0,22,2],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,17,0,1],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,17,0,10],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[11,0,0,0,22,11],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,17,0,10],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[11,0,0,0,22,0],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,22,12],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,17,0,11],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,22,12],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[11,0,0,0,22,9],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,22,13],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,22,5],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4],
|
||||
"group__wsstatus.html":[9,18],
|
||||
"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,18,3],
|
||||
"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[11,0,0,0,105],
|
||||
"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,18,4],
|
||||
"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,106],
|
||||
"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6],
|
||||
"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,123],
|
||||
"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6],
|
||||
"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1],
|
||||
"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,91],
|
||||
"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,18,2],
|
||||
|
@ -237,8 +239,8 @@ var NAVTREEINDEX2 =
|
|||
"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,18,5],
|
||||
"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,114],
|
||||
"hierarchy.html":[10,2],
|
||||
"index.html":[0],
|
||||
"index.html":[],
|
||||
"index.html":[0],
|
||||
"libwebsockets_8h.html":[11,0,0,0],
|
||||
"libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[11,0,0,0,159],
|
||||
"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[11,0,0,0,24],
|
||||
|
@ -247,7 +249,5 @@ var NAVTREEINDEX2 =
|
|||
"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fafdb6cf2797a3ea957c690ad6edff25d6":[11,0,0,0,24,0],
|
||||
"libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4":[11,0,0,0,56],
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedb":[11,0,0,0,20],
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba35cf2bed9944faa062d9310197489b2f":[11,0,0,0,20,4],
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba60ac587febc583475c185e1409a0210c":[11,0,0,0,20,1],
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbaa424646e067c6266bcb4f0190b026d66":[11,0,0,0,20,0]
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba35cf2bed9944faa062d9310197489b2f":[11,0,0,0,20,4]
|
||||
};
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
var NAVTREEINDEX3 =
|
||||
{
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedba60ac587febc583475c185e1409a0210c":[11,0,0,0,20,1],
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbaa424646e067c6266bcb4f0190b026d66":[11,0,0,0,20,0],
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbac8f5f992c6615324108cdf931da903be":[11,0,0,0,20,2],
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad655f0eecc9e94be37b8ed07348716ef":[11,0,0,0,20,6],
|
||||
"libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbad9cdc12a796e6c7d912278834d9c7dde":[11,0,0,0,20,3],
|
||||
|
@ -147,6 +149,7 @@ var NAVTREEINDEX3 =
|
|||
"structlws__context__creation__info.html#a137a9b9de4f6a7993fed8746d551e616":[9,4,1,26],
|
||||
"structlws__context__creation__info.html#a13ffbb0d010309669611f8c4eda7d7f8":[9,4,1,17],
|
||||
"structlws__context__creation__info.html#a1654d41bea6fb2f619b57e6a264b26a4":[9,4,1,22],
|
||||
"structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078":[9,4,1,39],
|
||||
"structlws__context__creation__info.html#a381342a398883d6204955ff3c1849ddd":[9,4,1,9],
|
||||
"structlws__context__creation__info.html#a3baab4285c679fbe027c2504621d7410":[9,4,1,10],
|
||||
"structlws__context__creation__info.html#a3e1516fd7fed26bfa77c0246ed26c2eb":[9,4,1,29],
|
||||
|
@ -246,8 +249,5 @@ var NAVTREEINDEX3 =
|
|||
"structlws__plugin__capability.html#a523c7cde6f15bba345f56493dcf6b32a":[9,10,2,0],
|
||||
"structlws__plugin__capability.html#a6a4d9d01e770f378ddadc77b37522033":[9,10,2,4],
|
||||
"structlws__plugin__capability.html#a7936f0eb93d79dea76b903d0f8a5f623":[9,10,2,3],
|
||||
"structlws__plugin__capability.html#abcf51db969522fdda9aaf902e65739d3":[9,10,2,1],
|
||||
"structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f":[9,10,2,2],
|
||||
"structlws__polarssl__context.html":[10,0,14],
|
||||
"structlws__polarssl__context.html#a1872f2ea24878d807ae20ca8513674af":[10,0,14,0]
|
||||
"structlws__plugin__capability.html#abcf51db969522fdda9aaf902e65739d3":[9,10,2,1]
|
||||
};
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
var NAVTREEINDEX4 =
|
||||
{
|
||||
"structlws__plugin__capability.html#ae38f7cf1246b9ca3af3cbf9d46b7090f":[9,10,2,2],
|
||||
"structlws__polarssl__context.html":[10,0,14],
|
||||
"structlws__polarssl__context.html#a1872f2ea24878d807ae20ca8513674af":[10,0,14,0],
|
||||
"structlws__polarssl__context.html#a919c33af37aab170f828d954de1fa270":[10,0,14,2],
|
||||
"structlws__polarssl__context.html#ae7e11c9129ff71c7ee71b3b2e320ff27":[10,0,14,1],
|
||||
"structlws__pollargs.html":[10,0,15],
|
||||
|
@ -23,12 +26,12 @@ 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,0,0],
|
||||
"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,0,0,3],
|
||||
"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,2,3],
|
||||
"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,2,1],
|
||||
"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,2,0],
|
||||
"structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,0,0,0],
|
||||
"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,2,2],
|
||||
|
@ -48,12 +51,12 @@ 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":[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,6,0],
|
||||
"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,4,0,0],
|
||||
"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,6,0],
|
||||
"structlwsgw__hash.html":[9,10,0,1],
|
||||
"structlwsgw__hash.html#a29435f5cf78747d4257695b0f141d164":[9,10,0,1,0],
|
||||
"structlwsgw__hash__bin.html":[9,10,0,0],
|
||||
|
|
|
@ -156,6 +156,8 @@ Data Fields</h2></td></tr>
|
|||
<tr class="separator:a704940261951ced6b5d8191bd8b9bb2d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:adb0bc0b28cd7d90ab306723d8ffa96fa"><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__context__creation__info.html#adb0bc0b28cd7d90ab306723d8ffa96fa">ssl_options_clear</a></td></tr>
|
||||
<tr class="separator:adb0bc0b28cd7d90ab306723d8ffa96fa"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a33a1a25a7df3793f59047e20dd580078"><td class="memItemLeft" align="right" valign="top">unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078">ws_ping_pong_interval</a></td></tr>
|
||||
<tr class="separator:a33a1a25a7df3793f59047e20dd580078"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afce3b59950eca3203faa07381bbed5d7"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlws__context__creation__info.html#afce3b59950eca3203faa07381bbed5d7">_unused</a> [8]</td></tr>
|
||||
<tr class="separator:afce3b59950eca3203faa07381bbed5d7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
|
@ -669,6 +671,19 @@ Data Fields</h2></td></tr>
|
|||
</div><div class="memdoc">
|
||||
<p>VHOST: name of vhost, must match external DNS name used to access the site, like "warmcat.com" as it's used to match Host: header and / or SNI name for SSL. </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="anchor" id="a33a1a25a7df3793f59047e20dd580078"></a>
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">unsigned short lws_context_creation_info::ws_ping_pong_interval</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>CONTEXT: 0 for none, else interval in seconds between sending PINGs on idle websocket connections. When the PING is sent, the PONG must come within the normal timeout_secs timeout period or the connection will be dropped. Any RX or TX traffic on the connection restarts the interval timer, so a connection which always sends or receives something at intervals less than the interval given here will never send PINGs / expect PONGs. Conversely as soon as the ws connection is established, an idle connection will do the PING / PONG roundtrip as soon as ws_ping_pong_interval seconds has passed without traffic </p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
|
|
|
@ -38,5 +38,6 @@ var structlws__context__creation__info =
|
|||
[ "token_limits", "structlws__context__creation__info.html#ac8a75b7b259a3c3a5fbb4219a3f06c29", null ],
|
||||
[ "uid", "structlws__context__creation__info.html#ac105b4180008cb3e672d57beead8382e", null ],
|
||||
[ "user", "structlws__context__creation__info.html#a0e9d94cdfb893d777b4a4db81e7b5ac0", null ],
|
||||
[ "vhost_name", "structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9", null ]
|
||||
[ "vhost_name", "structlws__context__creation__info.html#ad50db098a208f045f7811207d2bee4b9", null ],
|
||||
[ "ws_ping_pong_interval", "structlws__context__creation__info.html#a33a1a25a7df3793f59047e20dd580078", null ]
|
||||
];
|
|
@ -435,6 +435,11 @@ ping_drop:
|
|||
lwsl_hexdump(&wsi->u.ws.rx_ubuf[LWS_PRE],
|
||||
wsi->u.ws.rx_ubuf_head);
|
||||
|
||||
if (wsi->pending_timeout == PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG) {
|
||||
lwsl_info("received expected PONG on wsi %p\n", wsi);
|
||||
lws_set_timeout(wsi, NO_PENDING_TIMEOUT, 0);
|
||||
}
|
||||
|
||||
/* issue it */
|
||||
callback_action = LWS_CALLBACK_CLIENT_RECEIVE_PONG;
|
||||
break;
|
||||
|
|
24
lib/client.c
24
lib/client.c
|
@ -627,6 +627,29 @@ lws_client_interpret_server_handshake(struct lws *wsi)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* stitch protocol choice into the vh protocol linked list
|
||||
* We always insert ourselves at the start of the list
|
||||
*
|
||||
* X <-> B
|
||||
* X <-> pAn <-> pB
|
||||
*/
|
||||
//lwsl_err("%s: pre insert vhost start wsi %p, that wsi prev == %p\n",
|
||||
// __func__,
|
||||
// wsi->vhost->same_vh_protocol_list[n],
|
||||
// wsi->same_vh_protocol_prev);
|
||||
wsi->same_vh_protocol_prev = /* guy who points to us */
|
||||
&wsi->vhost->same_vh_protocol_list[n];
|
||||
wsi->same_vh_protocol_next = /* old first guy is our next */
|
||||
wsi->vhost->same_vh_protocol_list[n];
|
||||
/* we become the new first guy */
|
||||
wsi->vhost->same_vh_protocol_list[n] = wsi;
|
||||
|
||||
if (wsi->same_vh_protocol_next)
|
||||
/* old first guy points back to us now */
|
||||
wsi->same_vh_protocol_next->same_vh_protocol_prev =
|
||||
&wsi->same_vh_protocol_next;
|
||||
|
||||
check_extensions:
|
||||
#ifndef LWS_NO_EXTENSIONS
|
||||
/* instantiate the accepted extensions */
|
||||
|
@ -809,6 +832,7 @@ check_accept:
|
|||
|
||||
lws_union_transition(wsi, LWSCM_WS_CLIENT);
|
||||
wsi->state = LWSS_ESTABLISHED;
|
||||
lws_restart_ws_ping_pong_timer(wsi);
|
||||
|
||||
wsi->rxflow_change_to = LWS_RXFLOW_ALLOW;
|
||||
|
||||
|
|
|
@ -617,6 +617,8 @@ lws_create_context(struct lws_context_creation_info *info)
|
|||
else
|
||||
context->timeout_secs = AWAITING_TIMEOUT;
|
||||
|
||||
context->ws_ping_pong_interval = info->ws_ping_pong_interval;
|
||||
|
||||
lwsl_info(" default timeout (secs): %u\n", context->timeout_secs);
|
||||
|
||||
if (info->max_http_header_data)
|
||||
|
|
|
@ -35,7 +35,8 @@ static const char * const paths_global[] = {
|
|||
"global.count-threads",
|
||||
"global.init-ssl",
|
||||
"global.server-string",
|
||||
"global.plugin-dir"
|
||||
"global.plugin-dir",
|
||||
"global.ws-pingpong-secs",
|
||||
};
|
||||
|
||||
enum lejp_global_paths {
|
||||
|
@ -44,7 +45,8 @@ enum lejp_global_paths {
|
|||
LEJPGP_COUNT_THREADS,
|
||||
LWJPGP_INIT_SSL,
|
||||
LEJPGP_SERVER_STRING,
|
||||
LEJPGP_PLUGIN_DIR
|
||||
LEJPGP_PLUGIN_DIR,
|
||||
LWJPGP_PINGPONG_SECS,
|
||||
};
|
||||
|
||||
static const char * const paths_vhosts[] = {
|
||||
|
@ -233,6 +235,10 @@ lejp_globals_cb(struct lejp_ctx *ctx, char reason)
|
|||
a->plugin_dirs[a->count_plugin_dirs++] = a->p;
|
||||
break;
|
||||
|
||||
case LWJPGP_PINGPONG_SECS:
|
||||
a->info->ws_ping_pong_interval = atoi(ctx->buf);
|
||||
return 0;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1507,6 +1507,18 @@ lws_socket_bind(struct lws_vhost *vhost, int sockfd, int port,
|
|||
return port;
|
||||
}
|
||||
|
||||
LWS_EXTERN void
|
||||
lws_restart_ws_ping_pong_timer(struct lws *wsi)
|
||||
{
|
||||
if (!wsi->context->ws_ping_pong_interval)
|
||||
return;
|
||||
if (wsi->state != LWSS_ESTABLISHED)
|
||||
return;
|
||||
|
||||
wsi->u.ws.time_next_ping_check = (time_t)lws_now_secs() +
|
||||
wsi->context->ws_ping_pong_interval;
|
||||
}
|
||||
|
||||
static const char *hex = "0123456789ABCDEF";
|
||||
|
||||
LWS_VISIBLE LWS_EXTERN const char *
|
||||
|
|
|
@ -1591,6 +1591,18 @@ struct lws_context_creation_info {
|
|||
/**< VHOST: Any bits set here will be set as SSL options */
|
||||
long ssl_options_clear;
|
||||
/**< VHOST: Any bits set here will be cleared as SSL options */
|
||||
unsigned short ws_ping_pong_interval;
|
||||
/**< CONTEXT: 0 for none, else interval in seconds between sending
|
||||
* PINGs on idle websocket connections. When the PING is sent,
|
||||
* the PONG must come within the normal timeout_secs timeout period
|
||||
* or the connection will be dropped.
|
||||
* Any RX or TX traffic on the connection restarts the interval timer,
|
||||
* so a connection which always sends or receives something at intervals
|
||||
* less than the interval given here will never send PINGs / expect
|
||||
* PONGs. Conversely as soon as the ws connection is established, an
|
||||
* idle connection will do the PING / PONG roundtrip as soon as
|
||||
* ws_ping_pong_interval seconds has passed without traffic
|
||||
*/
|
||||
|
||||
/* Add new things just above here ---^
|
||||
* This is part of the ABI, don't needlessly break compatibility
|
||||
|
@ -2932,6 +2944,8 @@ enum pending_timeout {
|
|||
PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
|
||||
PENDING_TIMEOUT_CGI = 14,
|
||||
PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
|
||||
PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
|
||||
PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
|
||||
|
||||
/****** add new things just above ---^ ******/
|
||||
};
|
||||
|
|
|
@ -249,6 +249,8 @@ LWS_VISIBLE int lws_write(struct lws *wsi, unsigned char *buf, size_t len,
|
|||
lwsl_ext("FORCED draining wp to 0x%02X\n", wp);
|
||||
}
|
||||
|
||||
lws_restart_ws_ping_pong_timer(wsi);
|
||||
|
||||
if (wp == LWS_WRITE_HTTP ||
|
||||
wp == LWS_WRITE_HTTP_FINAL ||
|
||||
wp == LWS_WRITE_HTTP_HEADERS)
|
||||
|
@ -643,6 +645,7 @@ lws_ssl_capable_read_no_ssl(struct lws *wsi, unsigned char *buf, int len)
|
|||
if (n >= 0) {
|
||||
if (wsi->vhost)
|
||||
wsi->vhost->rx += n;
|
||||
lws_restart_ws_ping_pong_timer(wsi);
|
||||
return n;
|
||||
}
|
||||
#if LWS_POSIX
|
||||
|
|
|
@ -1331,6 +1331,11 @@ ping_drop:
|
|||
lwsl_hexdump(&wsi->u.ws.rx_ubuf[LWS_PRE],
|
||||
wsi->u.ws.rx_ubuf_head);
|
||||
|
||||
if (wsi->pending_timeout == PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG) {
|
||||
lwsl_info("received expected PONG on wsi %p\n", wsi);
|
||||
lws_set_timeout(wsi, NO_PENDING_TIMEOUT, 0);
|
||||
}
|
||||
|
||||
/* issue it */
|
||||
callback_action = LWS_CALLBACK_RECEIVE_PONG;
|
||||
break;
|
||||
|
|
|
@ -674,6 +674,7 @@ struct lws_vhost {
|
|||
int allow_non_ssl_on_ssl_port;
|
||||
unsigned int user_supplied_ssl_ctx:1;
|
||||
#endif
|
||||
|
||||
unsigned char default_protocol_index;
|
||||
};
|
||||
|
||||
|
@ -686,6 +687,7 @@ struct lws_vhost {
|
|||
|
||||
struct lws_context {
|
||||
time_t last_timeout_check_s;
|
||||
time_t last_ws_ping_pong_check_s;
|
||||
time_t time_up;
|
||||
struct lws_plat_file_ops fops;
|
||||
struct lws_context_per_thread pt[LWS_MAX_SMP];
|
||||
|
@ -754,6 +756,7 @@ struct lws_context {
|
|||
short plugin_protocol_count;
|
||||
short plugin_extension_count;
|
||||
short server_string_len;
|
||||
unsigned short ws_ping_pong_interval;
|
||||
|
||||
unsigned int being_destroyed:1;
|
||||
unsigned int requested_kill:1;
|
||||
|
@ -774,6 +777,9 @@ lws_plat_plugins_init(struct lws_context * context, const char * const *d);
|
|||
LWS_VISIBLE LWS_EXTERN int
|
||||
lws_plat_plugins_destroy(struct lws_context * context);
|
||||
|
||||
LWS_EXTERN void
|
||||
lws_restart_ws_ping_pong_timer(struct lws *wsi);
|
||||
|
||||
enum {
|
||||
LWS_EV_READ = (1 << 0),
|
||||
LWS_EV_WRITE = (1 << 1),
|
||||
|
@ -1087,6 +1093,7 @@ struct _lws_websocket_related {
|
|||
unsigned int rx_ubuf_alloc;
|
||||
struct lws *rx_draining_ext_list;
|
||||
struct lws *tx_draining_ext_list;
|
||||
time_t time_next_ping_check;
|
||||
size_t rx_packet_length;
|
||||
unsigned int rx_ubuf_head;
|
||||
unsigned char mask[4];
|
||||
|
@ -1120,6 +1127,7 @@ struct _lws_websocket_related {
|
|||
unsigned int stashed_write_pending:1;
|
||||
unsigned int rx_draining_ext:1;
|
||||
unsigned int tx_draining_ext:1;
|
||||
unsigned int send_check_ping:1;
|
||||
};
|
||||
|
||||
#ifdef LWS_WITH_CGI
|
||||
|
|
|
@ -1286,6 +1286,8 @@ upgrade_ws:
|
|||
wsi->u.hdr = hdr;
|
||||
lws_pt_unlock(pt);
|
||||
|
||||
lws_restart_ws_ping_pong_timer(wsi);
|
||||
|
||||
/*
|
||||
* create the frame buffer for this connection according to the
|
||||
* size mentioned in the protocol definition. If 0 there, use
|
||||
|
|
|
@ -127,6 +127,29 @@ lws_handle_POLLOUT_event(struct lws *wsi, struct lws_pollfd *pollfd)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (wsi->state == LWSS_ESTABLISHED &&
|
||||
!wsi->socket_is_permanently_unusable &&
|
||||
wsi->u.ws.send_check_ping) {
|
||||
|
||||
lwsl_info("issuing ping on wsi %p\n", wsi);
|
||||
wsi->u.ws.send_check_ping = 0;
|
||||
n = lws_write(wsi, &wsi->u.ws.ping_payload_buf[LWS_PRE],
|
||||
0, LWS_WRITE_PING);
|
||||
if (n < 0)
|
||||
return -1;
|
||||
|
||||
/*
|
||||
* we apparently were able to send the PING in a reasonable time
|
||||
* now reset the clock on our peer to be able to send the
|
||||
* PONG in a reasonable time.
|
||||
*/
|
||||
|
||||
lws_set_timeout(wsi, PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG,
|
||||
wsi->context->timeout_secs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Priority 4: if we are closing, not allowed to send more data frags
|
||||
* which means user callback or tx ext flush banned now
|
||||
*/
|
||||
|
@ -704,6 +727,41 @@ lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd, int t
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* at intervals, check for ws connections needing ping-pong checks
|
||||
*/
|
||||
|
||||
if (context->ws_ping_pong_interval &&
|
||||
context->last_ws_ping_pong_check_s < now + 10) {
|
||||
context->last_ws_ping_pong_check_s = now;
|
||||
|
||||
struct lws_vhost *vh = context->vhost_list;
|
||||
while (vh) {
|
||||
for (n = 0; n < vh->count_protocols; n++) {
|
||||
wsi = vh->same_vh_protocol_list[n];
|
||||
|
||||
while (wsi) {
|
||||
if (wsi->state == LWSS_ESTABLISHED &&
|
||||
!wsi->socket_is_permanently_unusable &&
|
||||
!wsi->u.ws.send_check_ping &&
|
||||
wsi->u.ws.time_next_ping_check &&
|
||||
wsi->u.ws.time_next_ping_check < now) {
|
||||
|
||||
lwsl_info("requesting ping-pong on wsi %p\n", wsi);
|
||||
wsi->u.ws.send_check_ping = 1;
|
||||
lws_set_timeout(wsi, PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING,
|
||||
context->timeout_secs);
|
||||
lws_callback_on_writable(wsi);
|
||||
wsi->u.ws.time_next_ping_check = now +
|
||||
wsi->context->ws_ping_pong_interval;
|
||||
}
|
||||
wsi = wsi->same_vh_protocol_next;
|
||||
}
|
||||
}
|
||||
vh = vh->vhost_next;
|
||||
}
|
||||
}
|
||||
|
||||
/* the socket we came to service timed out, nothing to do */
|
||||
if (timed_out)
|
||||
return 0;
|
||||
|
|
|
@ -290,6 +290,8 @@ lws_ssl_capable_read(struct lws *wsi, unsigned char *buf, int len)
|
|||
if (wsi->vhost)
|
||||
wsi->vhost->rx += n;
|
||||
|
||||
lws_restart_ws_ping_pong_timer(wsi);
|
||||
|
||||
/*
|
||||
* if it was our buffer that limited what we read,
|
||||
* check if SSL has additional data pending inside SSL buffers.
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
"interface": "eth0",
|
||||
"count-threads": "1",
|
||||
"server-string": "lwsws",
|
||||
"ws-pingpong-secs": "200",
|
||||
"init-ssl": "yes"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,10 +37,11 @@
|
|||
|
||||
#include "../lib/libwebsockets.h"
|
||||
|
||||
static int deny_deflate, deny_mux, longlived, mirror_lifetime;
|
||||
static int deny_deflate, longlived, mirror_lifetime;
|
||||
static struct lws *wsi_dumb, *wsi_mirror;
|
||||
static volatile int force_exit;
|
||||
static unsigned int opts;
|
||||
static int flag_no_mirror_traffic;
|
||||
#if defined(LWS_USE_POLARSSL)
|
||||
#else
|
||||
#if defined(LWS_USE_MBEDTLS)
|
||||
|
@ -106,10 +107,14 @@ callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason,
|
|||
/* because we are protocols[0] ... */
|
||||
|
||||
case LWS_CALLBACK_CLIENT_CONNECTION_ERROR:
|
||||
if (wsi == wsi_dumb)
|
||||
if (wsi == wsi_dumb) {
|
||||
which = "dumb";
|
||||
if (wsi == wsi_mirror)
|
||||
wsi_dumb = NULL;
|
||||
}
|
||||
if (wsi == wsi_mirror) {
|
||||
which = "mirror";
|
||||
wsi_mirror = NULL;
|
||||
}
|
||||
|
||||
lwsl_err("CLIENT_CONNECTION_ERROR: %s: %s %p\n", which, in);
|
||||
break;
|
||||
|
@ -222,7 +227,8 @@ callback_lws_mirror(struct lws *wsi, enum lws_callback_reasons reason,
|
|||
* start the ball rolling,
|
||||
* LWS_CALLBACK_CLIENT_WRITEABLE will come next service
|
||||
*/
|
||||
lws_callback_on_writable(wsi);
|
||||
if (!flag_no_mirror_traffic)
|
||||
lws_callback_on_writable(wsi);
|
||||
break;
|
||||
|
||||
case LWS_CALLBACK_CLOSED:
|
||||
|
@ -231,6 +237,8 @@ callback_lws_mirror(struct lws *wsi, enum lws_callback_reasons reason,
|
|||
break;
|
||||
|
||||
case LWS_CALLBACK_CLIENT_WRITEABLE:
|
||||
if (flag_no_mirror_traffic)
|
||||
return 0;
|
||||
for (n = 0; n < 1; n++) {
|
||||
lws_get_random(lws_get_context(wsi), rands, sizeof(rands));
|
||||
l += sprintf((char *)&buf[LWS_PRE + l],
|
||||
|
@ -314,8 +322,9 @@ static struct option options[] = {
|
|||
{ "strict-ssl", no_argument, NULL, 'S' },
|
||||
{ "version", required_argument, NULL, 'v' },
|
||||
{ "undeflated", no_argument, NULL, 'u' },
|
||||
{ "nomux", no_argument, NULL, 'n' },
|
||||
{ "nomirror", no_argument, NULL, 'n' },
|
||||
{ "longlived", no_argument, NULL, 'l' },
|
||||
{ "pingpong-secs", required_argument, NULL, 'P' },
|
||||
{ "ssl-cert", required_argument, NULL, 'C' },
|
||||
{ "ssl-key", required_argument, NULL, 'K' },
|
||||
{ "ssl-ca", required_argument, NULL, 'A' },
|
||||
|
@ -330,6 +339,7 @@ static int ratelimit_connects(unsigned int *last, unsigned int secs)
|
|||
struct timeval tv;
|
||||
|
||||
gettimeofday(&tv, NULL);
|
||||
|
||||
if (tv.tv_sec - (*last) < secs)
|
||||
return 0;
|
||||
|
||||
|
@ -341,7 +351,7 @@ static int ratelimit_connects(unsigned int *last, unsigned int secs)
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
int n = 0, ret = 0, port = 7681, use_ssl = 0, ietf_version = -1;
|
||||
unsigned int rl_dumb = 0, rl_mirror = 0, do_ws = 1;
|
||||
unsigned int rl_dumb = 0, rl_mirror = 0, do_ws = 1, pp_secs = 0;
|
||||
struct lws_context_creation_info info;
|
||||
struct lws_client_connect_info i;
|
||||
struct lws_context *context;
|
||||
|
@ -360,7 +370,7 @@ int main(int argc, char **argv)
|
|||
goto usage;
|
||||
|
||||
while (n >= 0) {
|
||||
n = getopt_long(argc, argv, "Snuv:hsp:d:lC:K:A:", options, NULL);
|
||||
n = getopt_long(argc, argv, "Snuv:hsp:d:lC:K:A:P:", options, NULL);
|
||||
if (n < 0)
|
||||
continue;
|
||||
switch (n) {
|
||||
|
@ -378,6 +388,10 @@ int main(int argc, char **argv)
|
|||
case 'p':
|
||||
port = atoi(optarg);
|
||||
break;
|
||||
case 'P':
|
||||
pp_secs = atoi(optarg);
|
||||
lwsl_notice("Setting pingpong interval to %d\n", pp_secs);
|
||||
break;
|
||||
case 'l':
|
||||
longlived = 1;
|
||||
break;
|
||||
|
@ -388,7 +402,8 @@ int main(int argc, char **argv)
|
|||
deny_deflate = 1;
|
||||
break;
|
||||
case 'n':
|
||||
deny_mux = 1;
|
||||
flag_no_mirror_traffic = 1;
|
||||
lwsl_notice("Disabled sending mirror data (for pingpong testing)\n");
|
||||
break;
|
||||
case 'C':
|
||||
strncpy(cert_path, optarg, sizeof(cert_path) - 1);
|
||||
|
@ -454,6 +469,7 @@ int main(int argc, char **argv)
|
|||
info.protocols = protocols;
|
||||
info.gid = -1;
|
||||
info.uid = -1;
|
||||
info.ws_ping_pong_interval = pp_secs;
|
||||
|
||||
if (use_ssl) {
|
||||
info.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;
|
||||
|
|
Loading…
Add table
Reference in a new issue