mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-09 00:00:04 +01:00
RFC7233 HTTP Ranges support for server
This adds a serverside implementation of RFC7233 HTTP ranges. - LWS_WITH_RANGES is on by default at cmake - Accept-Ranges: bytes is added if LWS_WITH_RANGES is enabled - Both single ranges and multipart (2+) ranges are supported Test with curl like this Single $ $ curl -s -r 64-95 http://localhost:7681/libwebsockets.org-logo.png | hexdump -C 00000000 2e 01 fd 9d 12 27 00 00 00 19 74 45 58 74 53 6f |.....'....tEXtSo| 00000010 66 74 77 61 72 65 00 77 77 77 2e 69 6e 6b 73 63 |ftware.www.inksc| Multipart $ curl -s -r 64-95,128-143 http://localhost:7681/libwebsockets.org-logo.png | hexdump -C 00000000 5f 6c 77 73 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 |_lws..Content-Ty| 00000010 70 65 3a 20 69 6d 61 67 65 2f 70 6e 67 0d 0a 43 |pe: image/png..C| 00000020 6f 6e 74 65 6e 74 2d 52 61 6e 67 65 3a 20 62 79 |ontent-Range: by| 00000030 74 65 73 20 36 34 2d 39 35 2f 37 30 32 39 0d 0a |tes 64-95/7029..| 00000040 0d 0a 2e 01 fd 9d 12 27 00 00 00 19 74 45 58 74 |.......'....tEXt| 00000050 53 6f 66 74 77 61 72 65 00 77 77 77 2e 69 6e 6b |Software.www.ink| 00000060 73 63 5f 6c 77 73 0d 0a 43 6f 6e 74 65 6e 74 2d |sc_lws..Content-| 00000070 54 79 70 65 3a 20 69 6d 61 67 65 2f 70 6e 67 0d |Type: image/png.| 00000080 0a 43 6f 6e 74 65 6e 74 2d 52 61 6e 67 65 3a 20 |.Content-Range: | 00000090 62 79 74 65 73 20 31 32 38 2d 31 34 33 2f 37 30 |bytes 128-143/70| 000000a0 32 39 0d 0a 0d 0a 05 14 50 40 05 15 a5 c4 60 43 |29......P@....`C| 000000b0 91 c4 4a d4 c4 fc 5f 6c 77 73 0d 00 |..J..._lws..| The corresponding header part is like this 0x0030: 4854 5450 2f31 2e31 2032 3036 HTTP/1.1.206 0x0040: 200d 0a73 6572 7665 723a 206c 7773 7773 ...server:.lwsws 0x0050: 0d0a 636f 6e74 656e 742d 7479 7065 3a20 ..content-type:. 0x0060: 6d75 6c74 6970 6172 742f 6279 7465 7261 multipart/bytera 0x0070: 6e67 6573 0d0a 6163 6365 7074 2d72 616e nges..accept-ran 0x0080: 6765 733a 2062 7974 6573 0d0a 636f 6e74 ges:.bytes..cont 0x0090: 656e 742d 6c65 6e67 7468 3a20 3138 380d ent-length:.188. 0x00a0: 0a63 6163 6865 2d63 6f6e 7472 6f6c 3a20 .cache-control:. 0x00b0: 7072 6976 6174 6520 6d61 782d 6167 653a private.max-age: 0x00c0: 2036 300d 0a63 6f6e 6e65 6374 696f 6e3a .60..connection: 0x00d0: 206b 6565 702d 616c 6976 650d 0a65 7461 .keep-alive..eta 0x00e0: 673a 2030 3030 3031 4237 3535 3444 3433 g:.00001B7554D43 0x00f0: 3033 330d 0a0d 0a 033....
This commit is contained in:
parent
fdddf5af51
commit
ed4acef481
20 changed files with 628 additions and 186 deletions
|
@ -110,6 +110,7 @@ option(LWS_WITH_SMTP "Provide SMTP support" OFF)
|
|||
option(LWS_WITH_ESP8266 "Build for ESP8266" OFF)
|
||||
option(LWS_WITH_NO_LOGS "Disable all logging from being compiled in" OFF)
|
||||
option(LWS_STATIC_PIC "Build the static version of the library with position-independent code" OFF)
|
||||
option(LWS_WITH_RANGES "Support http ranges (RFC7233)" ON)
|
||||
|
||||
if (LWS_WITH_LWSWS)
|
||||
message(STATUS "LWS_WITH_LWSWS --> Enabling LWS_WITH_PLUGINS and LWS_WITH_LIBUV")
|
||||
|
@ -164,6 +165,7 @@ if (LWS_WITH_ESP8266)
|
|||
set(LWS_WITHOUT_TESTAPPS ON)
|
||||
set(LWS_WITHOUT_EXTENSIONS ON)
|
||||
set(LWS_WITH_PLUGINS OFF)
|
||||
set(LWS_WITH_RANGES OFF)
|
||||
# this implies no pthreads in the lib
|
||||
set(LWS_MAX_SMP 1)
|
||||
set(LWS_HAVE_MALLOC 1)
|
||||
|
@ -652,6 +654,11 @@ if (LWS_WITH_SMTP)
|
|||
lib/smtp.c)
|
||||
endif()
|
||||
|
||||
if (LWS_WITH_RANGES)
|
||||
list(APPEND SOURCES
|
||||
lib/ranges.c)
|
||||
endif()
|
||||
|
||||
# Add helper files for Windows.
|
||||
if (WIN32)
|
||||
set(WIN32_HELPERS_PATH win32port/win32helpers)
|
||||
|
@ -1640,7 +1647,7 @@ message(" LWS_WITH_LEJP_CONF = ${LWS_WITH_LEJP_CONF}")
|
|||
message(" LWS_WITH_SMTP = ${LWS_WITH_SMTP}")
|
||||
message(" LWS_WITH_GENERIC_SESSIONS = ${LWS_WITH_GENERIC_SESSIONS}")
|
||||
message(" LWS_STATIC_PIC = ${LWS_STATIC_PIC}")
|
||||
|
||||
message(" LWS_WITH_RANGES = ${LWS_WITH_RANGES}")
|
||||
|
||||
message("---------------------------------------------------------------------")
|
||||
|
||||
|
|
|
@ -156,9 +156,9 @@ Functions</h2></td></tr>
|
|||
<tr><td class="fieldname"><a id="gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83"></a>LWS_UFS_OPEN </td><td class="fielddoc"><p>a new file is starting to arrive </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="fragment"><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>  {</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a>,</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a>,</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</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:2849</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:2851</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:2847</div></div>
|
||||
<div class="fragment"><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>  {</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a>,</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a>,</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>  <a class="code" href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span> };</div><div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7">LWS_UFS_FINAL_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2850</div></div>
|
||||
<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83">LWS_UFS_OPEN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2852</div></div>
|
||||
<div class="ttc" id="group__form-parsing_html_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f"><div class="ttname"><a href="group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f">LWS_UFS_CONTENT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:2848</div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -88,40 +88,41 @@ Enumerations</h2></td></tr>
|
|||
<tr class="memitem:gabc3b93f68c8bdd857ad32913628dfa8d"><td class="memItemLeft" align="right" valign="top"><a id="gabc3b93f68c8bdd857ad32913628dfa8d"></a>enum  </td><td class="memItemRight" valign="bottom"><b>http_status</b> { <br />
|
||||
  <b>HTTP_STATUS_OK</b> = 200,
|
||||
<b>HTTP_STATUS_NO_CONTENT</b> = 204,
|
||||
<b>HTTP_STATUS_PARTIAL_CONTENT</b> = 206,
|
||||
<b>HTTP_STATUS_MOVED_PERMANENTLY</b> = 301,
|
||||
<b>HTTP_STATUS_FOUND</b> = 302,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_SEE_OTHER</b> = 303,
|
||||
  <b>HTTP_STATUS_FOUND</b> = 302,
|
||||
<b>HTTP_STATUS_SEE_OTHER</b> = 303,
|
||||
<b>HTTP_STATUS_BAD_REQUEST</b> = 400,
|
||||
<b>HTTP_STATUS_UNAUTHORIZED</b>,
|
||||
<b>HTTP_STATUS_PAYMENT_REQUIRED</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_FORBIDDEN</b>,
|
||||
  <b>HTTP_STATUS_PAYMENT_REQUIRED</b>,
|
||||
<b>HTTP_STATUS_FORBIDDEN</b>,
|
||||
<b>HTTP_STATUS_NOT_FOUND</b>,
|
||||
<b>HTTP_STATUS_METHOD_NOT_ALLOWED</b>,
|
||||
<b>HTTP_STATUS_NOT_ACCEPTABLE</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_PROXY_AUTH_REQUIRED</b>,
|
||||
  <b>HTTP_STATUS_NOT_ACCEPTABLE</b>,
|
||||
<b>HTTP_STATUS_PROXY_AUTH_REQUIRED</b>,
|
||||
<b>HTTP_STATUS_REQUEST_TIMEOUT</b>,
|
||||
<b>HTTP_STATUS_CONFLICT</b>,
|
||||
<b>HTTP_STATUS_GONE</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_LENGTH_REQUIRED</b>,
|
||||
  <b>HTTP_STATUS_GONE</b>,
|
||||
<b>HTTP_STATUS_LENGTH_REQUIRED</b>,
|
||||
<b>HTTP_STATUS_PRECONDITION_FAILED</b>,
|
||||
<b>HTTP_STATUS_REQ_ENTITY_TOO_LARGE</b>,
|
||||
<b>HTTP_STATUS_REQ_URI_TOO_LONG</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE</b>,
|
||||
  <b>HTTP_STATUS_REQ_URI_TOO_LONG</b>,
|
||||
<b>HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE</b>,
|
||||
<b>HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE</b>,
|
||||
<b>HTTP_STATUS_EXPECTATION_FAILED</b>,
|
||||
<b>HTTP_STATUS_INTERNAL_SERVER_ERROR</b> = 500,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_NOT_IMPLEMENTED</b>,
|
||||
  <b>HTTP_STATUS_INTERNAL_SERVER_ERROR</b> = 500,
|
||||
<b>HTTP_STATUS_NOT_IMPLEMENTED</b>,
|
||||
<b>HTTP_STATUS_BAD_GATEWAY</b>,
|
||||
<b>HTTP_STATUS_SERVICE_UNAVAILABLE</b>,
|
||||
<b>HTTP_STATUS_GATEWAY_TIMEOUT</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED</b>
|
||||
  <b>HTTP_STATUS_GATEWAY_TIMEOUT</b>,
|
||||
<b>HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED</b>
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:gabc3b93f68c8bdd857ad32913628dfa8d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
|
|
|
@ -124,13 +124,13 @@ Functions</h2></td></tr>
|
|||
<tr><td class="fieldname"><a id="gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce"></a>LWS_WRITE_CLIENT_IGNORE_XOR_MASK </td><td class="fielddoc"><p>client packet payload goes out on wire unmunged only useful for security tests since normal servers cannot decode the content if used </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="fragment"><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>  {</div><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a> = 0,</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a> = 1,</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a> = 2,</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a> = 3,</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>  <span class="comment">/* LWS_WRITE_CLOSE is handled by lws_close_reason() */</span></div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>  LWS_WRITE_PING = 5,</div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  LWS_WRITE_PONG = 6,</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span> </div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>  <span class="comment">/* Same as write_http but we know this write ends the transaction */</span></div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  LWS_WRITE_HTTP_FINAL = 7,</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span> </div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  <span class="comment">/* HTTP2 */</span></div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span> </div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a> = 8,</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span> </div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>  <span class="comment">/* flags */</span></div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span> </div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a> = 0x40,</div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a> = 0x80</div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</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:3201</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:3224</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:3191</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:3195</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:3227</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:3198</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:3213</div></div>
|
||||
<div class="fragment"><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>  {</div><div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a> = 0,</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a> = 1,</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a> = 2,</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a> = 3,</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>  <span class="comment">/* LWS_WRITE_CLOSE is handled by lws_close_reason() */</span></div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  LWS_WRITE_PING = 5,</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>  LWS_WRITE_PONG = 6,</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span> </div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  <span class="comment">/* Same as write_http but we know this write ends the transaction */</span></div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>  LWS_WRITE_HTTP_FINAL = 7,</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span> </div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  <span class="comment">/* HTTP2 */</span></div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span> </div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a> = 8,</div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  <span class="comment">/****** add new things just above ---^ ******/</span></div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span> </div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  <span class="comment">/* flags */</span></div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span> </div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a> = 0x40,</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>  <a class="code" href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a> = 0x80</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span> };</div><div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e">LWS_WRITE_HTTP</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3202</div></div>
|
||||
<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3">LWS_WRITE_NO_FIN</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3225</div></div>
|
||||
<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db">LWS_WRITE_TEXT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3192</div></div>
|
||||
<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2">LWS_WRITE_BINARY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3196</div></div>
|
||||
<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce">LWS_WRITE_CLIENT_IGNORE_XOR_MASK</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3228</div></div>
|
||||
<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826">LWS_WRITE_CONTINUATION</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3199</div></div>
|
||||
<div class="ttc" id="group__sending-data_html_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917"><div class="ttname"><a href="group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917">LWS_WRITE_HTTP_HEADERS</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:3214</div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -149,15 +149,15 @@ Functions</h2></td></tr>
|
|||
<tr><td class="fieldname"><a id="gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5"></a>LGSSMTP_SENT_QUIT </td><td class="fielddoc"><p>sent the session quit </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
<div class="fragment"><div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>  {</div><div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a>, </div><div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a>, </div><div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a>, </div><div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a>, </div><div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a>, </div><div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a>, </div><div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a>, </div><div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a>, </div><div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a>, </div><div class="line"><a name="l04155"></a><span class="lineno"> 4155</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:4148</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:4153</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:4146</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:4147</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:4151</div></div>
|
||||
<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4150</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:4154</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:4149</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:4152</div></div>
|
||||
<div class="fragment"><div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>  {</div><div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a>, </div><div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a>, </div><div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a>, </div><div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a>, </div><div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a>, </div><div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a>, </div><div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a>, </div><div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a>, </div><div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>  <a class="code" href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a>, </div><div class="line"><a name="l04156"></a><span class="lineno"> 4156</span> };</div><div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d">LGSSMTP_CONNECTED</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4149</div></div>
|
||||
<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69">LGSSMTP_SENT_BODY</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4154</div></div>
|
||||
<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c">LGSSMTP_IDLE</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4147</div></div>
|
||||
<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933">LGSSMTP_CONNECTING</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4148</div></div>
|
||||
<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83">LGSSMTP_SENT_TO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4152</div></div>
|
||||
<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab">LGSSMTP_SENT_FROM</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4151</div></div>
|
||||
<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5">LGSSMTP_SENT_QUIT</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4155</div></div>
|
||||
<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad">LGSSMTP_SENT_HELO</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4150</div></div>
|
||||
<div class="ttc" id="group__smtp_html_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14"><div class="ttname"><a href="group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14">LGSSMTP_SENT_DATA</a></div><div class="ttdef"><b>Definition:</b> libwebsockets.h:4153</div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -387,40 +387,41 @@ Enumerations</h2></td></tr>
|
|||
<tr class="memitem:gabc3b93f68c8bdd857ad32913628dfa8d"><td class="memItemLeft" align="right" valign="top"><a id="gabc3b93f68c8bdd857ad32913628dfa8d"></a>enum  </td><td class="memItemRight" valign="bottom"><b>http_status</b> { <br />
|
||||
  <b>HTTP_STATUS_OK</b> = 200,
|
||||
<b>HTTP_STATUS_NO_CONTENT</b> = 204,
|
||||
<b>HTTP_STATUS_PARTIAL_CONTENT</b> = 206,
|
||||
<b>HTTP_STATUS_MOVED_PERMANENTLY</b> = 301,
|
||||
<b>HTTP_STATUS_FOUND</b> = 302,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_SEE_OTHER</b> = 303,
|
||||
  <b>HTTP_STATUS_FOUND</b> = 302,
|
||||
<b>HTTP_STATUS_SEE_OTHER</b> = 303,
|
||||
<b>HTTP_STATUS_BAD_REQUEST</b> = 400,
|
||||
<b>HTTP_STATUS_UNAUTHORIZED</b>,
|
||||
<b>HTTP_STATUS_PAYMENT_REQUIRED</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_FORBIDDEN</b>,
|
||||
  <b>HTTP_STATUS_PAYMENT_REQUIRED</b>,
|
||||
<b>HTTP_STATUS_FORBIDDEN</b>,
|
||||
<b>HTTP_STATUS_NOT_FOUND</b>,
|
||||
<b>HTTP_STATUS_METHOD_NOT_ALLOWED</b>,
|
||||
<b>HTTP_STATUS_NOT_ACCEPTABLE</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_PROXY_AUTH_REQUIRED</b>,
|
||||
  <b>HTTP_STATUS_NOT_ACCEPTABLE</b>,
|
||||
<b>HTTP_STATUS_PROXY_AUTH_REQUIRED</b>,
|
||||
<b>HTTP_STATUS_REQUEST_TIMEOUT</b>,
|
||||
<b>HTTP_STATUS_CONFLICT</b>,
|
||||
<b>HTTP_STATUS_GONE</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_LENGTH_REQUIRED</b>,
|
||||
  <b>HTTP_STATUS_GONE</b>,
|
||||
<b>HTTP_STATUS_LENGTH_REQUIRED</b>,
|
||||
<b>HTTP_STATUS_PRECONDITION_FAILED</b>,
|
||||
<b>HTTP_STATUS_REQ_ENTITY_TOO_LARGE</b>,
|
||||
<b>HTTP_STATUS_REQ_URI_TOO_LONG</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE</b>,
|
||||
  <b>HTTP_STATUS_REQ_URI_TOO_LONG</b>,
|
||||
<b>HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE</b>,
|
||||
<b>HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE</b>,
|
||||
<b>HTTP_STATUS_EXPECTATION_FAILED</b>,
|
||||
<b>HTTP_STATUS_INTERNAL_SERVER_ERROR</b> = 500,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_NOT_IMPLEMENTED</b>,
|
||||
  <b>HTTP_STATUS_INTERNAL_SERVER_ERROR</b> = 500,
|
||||
<b>HTTP_STATUS_NOT_IMPLEMENTED</b>,
|
||||
<b>HTTP_STATUS_BAD_GATEWAY</b>,
|
||||
<b>HTTP_STATUS_SERVICE_UNAVAILABLE</b>,
|
||||
<b>HTTP_STATUS_GATEWAY_TIMEOUT</b>,
|
||||
<br />
|
||||
  <b>HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED</b>
|
||||
  <b>HTTP_STATUS_GATEWAY_TIMEOUT</b>,
|
||||
<b>HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED</b>
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:gabc3b93f68c8bdd857ad32913628dfa8d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
|
|
|
@ -24,6 +24,7 @@ var libwebsockets_8h =
|
|||
[ "http_status", "group__html-chunked-substitution.html#gabc3b93f68c8bdd857ad32913628dfa8d", [
|
||||
[ "HTTP_STATUS_OK", "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad34cd21de350cd4fa83b8099e3993b91", null ],
|
||||
[ "HTTP_STATUS_NO_CONTENT", "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad000a2e30c534c201201dd74fac8d2f9", null ],
|
||||
[ "HTTP_STATUS_PARTIAL_CONTENT", "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daa55ceddb5bb2104bfcfefb16995192a4", null ],
|
||||
[ "HTTP_STATUS_MOVED_PERMANENTLY", "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da9632802fcd318d1676be7589e6004e96", null ],
|
||||
[ "HTTP_STATUS_FOUND", "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da53df069872b37830e4296f32e7ec20d8", null ],
|
||||
[ "HTTP_STATUS_SEE_OTHER", "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dae301c12d0cf56920659cb7b947a95267", null ],
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -134,9 +134,9 @@ var NAVTREEINDEX =
|
|||
[
|
||||
"annotated.html",
|
||||
"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a87a824b2e812f4c3e7f2c4a1ea4f8abd",
|
||||
"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939",
|
||||
"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2",
|
||||
"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd",
|
||||
"structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7"
|
||||
"structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146"
|
||||
];
|
||||
|
||||
var SYNCONMSG = 'click to disable panel synchronisation';
|
||||
|
|
|
@ -181,8 +181,8 @@ var NAVTREEINDEX0 =
|
|||
"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[9,1,7],
|
||||
"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[11,0,0,0,101],
|
||||
"group__callback-when-writeable.html#gaad3d524a84d2be08ac85153bc158504b":[11,0,0,0,55],
|
||||
"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[9,1,3],
|
||||
"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[11,0,0,0,57],
|
||||
"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[9,1,3],
|
||||
"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[9,1,6],
|
||||
"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[11,0,0,0,97],
|
||||
"group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,1,0],
|
||||
|
@ -195,8 +195,8 @@ var NAVTREEINDEX0 =
|
|||
"group__client.html#ga4450c34200bf9dab3beb90ef23221870":[11,0,0,0,109],
|
||||
"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[9,2,2],
|
||||
"group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[11,0,0,0,67],
|
||||
"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[9,2,6],
|
||||
"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[11,0,0,0,112],
|
||||
"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[9,2,6],
|
||||
"group__client.html#ga715efffc0c4e8fbf72a4293008eb2187":[9,2,5],
|
||||
"group__client.html#ga715efffc0c4e8fbf72a4293008eb2187":[11,0,0,0,108],
|
||||
"group__client.html#ga96f3dbad54b2853969cfa933d66871ce":[9,2,1],
|
||||
|
|
|
@ -116,35 +116,36 @@ var NAVTREEINDEX1 =
|
|||
"group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60":[11,0,0,0,66],
|
||||
"group__html-chunked-substitution.html#ga669d3d7ce2d5f193473f649a89b3e7ac":[11,0,0,0,14],
|
||||
"group__html-chunked-substitution.html#gabc3b93f68c8bdd857ad32913628dfa8d":[11,0,0,0,21],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da08107f6b0e1d7c9e2ca100700cc7200f":[11,0,0,0,21,22],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da145570ed1178d3d90ad9b7652fea83cf":[11,0,0,0,21,20],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da1558c42d80f54def5f3277dc879d2844":[11,0,0,0,21,11],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da2637ec8a704c0d7fcb7ff8ce5d871be0":[11,0,0,0,21,19],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da299a2d262210540b593420fe89e01b32":[11,0,0,0,21,23],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da2e57a633f7a2422f67bf207648519e30":[11,0,0,0,21,21],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da36b5bcf2059ae3c84a47e080822239c7":[11,0,0,0,21,13],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da40246e02220192ce8d7f86591ca1cfe4":[11,0,0,0,21,12],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da419c919f74b88d18803358141ab9471c":[11,0,0,0,21,8],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da49cf9c4c184f9e4d265ceae249e92477":[11,0,0,0,21,5],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da53df069872b37830e4296f32e7ec20d8":[11,0,0,0,21,3],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da63eb71a406e943d4634c357d60dd96df":[11,0,0,0,21,10],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da67278d96cfa0eb507535b94338810d65":[11,0,0,0,21,15],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da6964f9591ba7284dc4bd388d40c106a9":[11,0,0,0,21,14],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da9632802fcd318d1676be7589e6004e96":[11,0,0,0,21,2],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daafd60e3a2073e04b8f2247f8f9ac9710":[11,0,0,0,21,18],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dab355dd546e62b1478fe3ef94b554f75c":[11,0,0,0,21,26],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dab42dfcbd67b4e66096e3a8e924b6d6c9":[11,0,0,0,21,16],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac3d4da4de851d5c8f95748145b59716a":[11,0,0,0,21,17],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac96829d2c2cb76feb1549f0fac72c69e":[11,0,0,0,21,25],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac9c5b4e80aa858cfe2763656db1f16e3":[11,0,0,0,21,24],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da08107f6b0e1d7c9e2ca100700cc7200f":[11,0,0,0,21,23],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da145570ed1178d3d90ad9b7652fea83cf":[11,0,0,0,21,21],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da1558c42d80f54def5f3277dc879d2844":[11,0,0,0,21,12],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da2637ec8a704c0d7fcb7ff8ce5d871be0":[11,0,0,0,21,20],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da299a2d262210540b593420fe89e01b32":[11,0,0,0,21,24],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da2e57a633f7a2422f67bf207648519e30":[11,0,0,0,21,22],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da36b5bcf2059ae3c84a47e080822239c7":[11,0,0,0,21,14],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da40246e02220192ce8d7f86591ca1cfe4":[11,0,0,0,21,13],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da419c919f74b88d18803358141ab9471c":[11,0,0,0,21,9],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da49cf9c4c184f9e4d265ceae249e92477":[11,0,0,0,21,6],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da53df069872b37830e4296f32e7ec20d8":[11,0,0,0,21,4],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da63eb71a406e943d4634c357d60dd96df":[11,0,0,0,21,11],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da67278d96cfa0eb507535b94338810d65":[11,0,0,0,21,16],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da6964f9591ba7284dc4bd388d40c106a9":[11,0,0,0,21,15],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8da9632802fcd318d1676be7589e6004e96":[11,0,0,0,21,3],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daa55ceddb5bb2104bfcfefb16995192a4":[11,0,0,0,21,2],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daafd60e3a2073e04b8f2247f8f9ac9710":[11,0,0,0,21,19],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dab355dd546e62b1478fe3ef94b554f75c":[11,0,0,0,21,27],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dab42dfcbd67b4e66096e3a8e924b6d6c9":[11,0,0,0,21,17],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac3d4da4de851d5c8f95748145b59716a":[11,0,0,0,21,18],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac96829d2c2cb76feb1549f0fac72c69e":[11,0,0,0,21,26],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dac9c5b4e80aa858cfe2763656db1f16e3":[11,0,0,0,21,25],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad000a2e30c534c201201dd74fac8d2f9":[11,0,0,0,21,1],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad34cd21de350cd4fa83b8099e3993b91":[11,0,0,0,21,0],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad771b2a0ab88db11b2719c8e5086fb48":[11,0,0,0,21,6],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dadd02813da14cfdc7fe83029b8779ea4b":[11,0,0,0,21,28],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dae301c12d0cf56920659cb7b947a95267":[11,0,0,0,21,4],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daefdfc7b525c87b911d6e92a30e36cfec":[11,0,0,0,21,27],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daf06c31278cb67d7eec4b2b8157b9ad25":[11,0,0,0,21,9],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dafac24097912a70f224166528ce44b83b":[11,0,0,0,21,7],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dad771b2a0ab88db11b2719c8e5086fb48":[11,0,0,0,21,7],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dadd02813da14cfdc7fe83029b8779ea4b":[11,0,0,0,21,29],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dae301c12d0cf56920659cb7b947a95267":[11,0,0,0,21,5],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daefdfc7b525c87b911d6e92a30e36cfec":[11,0,0,0,21,28],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8daf06c31278cb67d7eec4b2b8157b9ad25":[11,0,0,0,21,10],
|
||||
"group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dafac24097912a70f224166528ce44b83b":[11,0,0,0,21,8],
|
||||
"group__http.html":[9,6],
|
||||
"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[9,6,7],
|
||||
"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[11,0,0,0,110],
|
||||
|
@ -199,8 +200,8 @@ var NAVTREEINDEX1 =
|
|||
"group__misc.html#ga9f37d0e357de2ab4170723fcdb665d21":[9,8,10],
|
||||
"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[11,0,0,0,165],
|
||||
"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,8,11],
|
||||
"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9],
|
||||
"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,141],
|
||||
"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9],
|
||||
"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,8,4],
|
||||
"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[11,0,0,0,92],
|
||||
"group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[9,8,1],
|
||||
|
@ -219,8 +220,8 @@ var NAVTREEINDEX1 =
|
|||
"group__pur.html":[9,12],
|
||||
"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[11,0,0,0,154],
|
||||
"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[9,12,1],
|
||||
"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[11,0,0,0,119],
|
||||
"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[9,12,0],
|
||||
"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[11,0,0,0,119],
|
||||
"group__sending-data.html":[9,13],
|
||||
"group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[9,13,0],
|
||||
"group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[11,0,0,0,35],
|
||||
|
@ -248,6 +249,5 @@ var NAVTREEINDEX1 =
|
|||
"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,61],
|
||||
"group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241":[11,0,0,0,137],
|
||||
"group__service.html#ga4fd9d714434ca499e2b3f7dbba86f241":[9,0,3],
|
||||
"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0],
|
||||
"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,60]
|
||||
"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0]
|
||||
};
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
var NAVTREEINDEX2 =
|
||||
{
|
||||
"group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,60],
|
||||
"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,140],
|
||||
"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,6],
|
||||
"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,138],
|
||||
"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,4],
|
||||
"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,5],
|
||||
"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,139],
|
||||
"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,5],
|
||||
"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,136],
|
||||
"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,2],
|
||||
"group__sha.html":[9,11],
|
||||
|
@ -32,10 +33,10 @@ var NAVTREEINDEX2 =
|
|||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,14,1,7],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,37,7],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,37,6],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,14,1,6],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,14,1,4],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,37,6],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[11,0,0,0,37,4],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,14,1,4],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[11,0,0,0,37,5],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,14,1,2],
|
||||
|
@ -43,8 +44,8 @@ var NAVTREEINDEX2 =
|
|||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,14,1,1],
|
||||
"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[11,0,0,0,37,1],
|
||||
"group__sock-adopt.html":[9,15],
|
||||
"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,50],
|
||||
"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,15,1],
|
||||
"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,50],
|
||||
"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[11,0,0,0,49],
|
||||
"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0],
|
||||
"group__timeout.html":[9,3],
|
||||
|
@ -78,8 +79,8 @@ var NAVTREEINDEX2 =
|
|||
"group__usercb.html":[9,16],
|
||||
"group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[11,0,0,0,8],
|
||||
"group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[9,16,0],
|
||||
"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[9,16,1],
|
||||
"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[11,0,0,0,22],
|
||||
"group__usercb.html#gad62860e19975ba4c4af401c3cdb6abf7":[9,16,1],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6":[11,0,0,0,22,17],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6":[9,16,1,17],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0418587d5083bb4850faa438648496ba":[11,0,0,0,22,49],
|
||||
|
@ -95,8 +96,8 @@ var NAVTREEINDEX2 =
|
|||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768":[11,0,0,0,22,33],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768":[9,16,1,33],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a23b90b5e5146e760bc3123ae1fd2a6e5":[11,0,0,0,22,40],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439":[9,16,1,0],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439":[11,0,0,0,22,0],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439":[9,16,1,0],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[11,0,0,0,22,7],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[9,16,1,7],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[11,0,0,0,22,14],
|
||||
|
@ -118,8 +119,8 @@ var NAVTREEINDEX2 =
|
|||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[11,0,0,0,22,3],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[11,0,0,0,22,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,22,5],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,16,1,5],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[11,0,0,0,22,35],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[9,16,1,35],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[11,0,0,0,22,52],
|
||||
|
@ -131,8 +132,8 @@ var NAVTREEINDEX2 =
|
|||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[9,16,1,41],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[11,0,0,0,22,37],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[9,16,1,37],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,16,1,2],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,22,2],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,16,1,2],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[11,0,0,0,22,56],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[9,16,1,39],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[11,0,0,0,22,15],
|
||||
|
@ -150,8 +151,8 @@ var NAVTREEINDEX2 =
|
|||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[11,0,0,0,22,38],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51":[9,16,1,38],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac432e9f891c733ba8f968c1bf57c0ddc":[11,0,0,0,22,45],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[9,16,1,13],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[11,0,0,0,22,13],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae":[9,16,1,13],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac8c0ae966ef1877e0020c0077ff2e4a4":[11,0,0,0,22,41],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[11,0,0,0,22,30],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e":[9,16,1,30],
|
||||
|
@ -161,14 +162,14 @@ var NAVTREEINDEX2 =
|
|||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[9,16,1,27],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad724974204d51d688f569c5d387b967d":[11,0,0,0,22,43],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad87774f1c7784cf632e1e2f5b51036e1":[11,0,0,0,22,48],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[11,0,0,0,22,1],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[9,16,1,1],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[11,0,0,0,22,1],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[11,0,0,0,22,31],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[9,16,1,31],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[11,0,0,0,22,21],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[9,16,1,21],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,16,1,23],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[11,0,0,0,22,21],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[11,0,0,0,22,23],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,16,1,23],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,22,12],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12],
|
||||
"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[11,0,0,0,22,19],
|
||||
|
@ -197,8 +198,8 @@ var NAVTREEINDEX2 =
|
|||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,4,0,2,0],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,4,0,2,2],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[11,0,0,0,32,2],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,32,5],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,4,0,2,5],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,32,5],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,4,0,2,6],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[11,0,0,0,32,6],
|
||||
"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,4,0,2,4],
|
||||
|
@ -212,28 +213,28 @@ var NAVTREEINDEX2 =
|
|||
"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,17,0],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,17,0,2],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,25,3],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[11,0,0,0,25,10],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[9,17,0,9],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[11,0,0,0,25,10],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[11,0,0,0,25,14],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[11,0,0,0,25,1],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,17,0,0],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,17,0,3],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[11,0,0,0,25,4],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[11,0,0,0,25,6],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,17,0,3],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,17,0,5],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[11,0,0,0,25,6],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[11,0,0,0,25,7],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,17,0,6],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[11,0,0,0,25,8],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,17,0,7],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[11,0,0,0,25,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,25,11],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,17,0,10],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[11,0,0,0,25,0],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,17,0,11],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,25,12],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[11,0,0,0,25,9],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,25,13],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12],
|
||||
"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,25,5],
|
||||
|
@ -243,11 +244,10 @@ var NAVTREEINDEX2 =
|
|||
"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[11,0,0,0,115],
|
||||
"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,18,4],
|
||||
"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,116],
|
||||
"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6],
|
||||
"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,133],
|
||||
"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6],
|
||||
"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,100],
|
||||
"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1],
|
||||
"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,18,2],
|
||||
"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,114],
|
||||
"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[11,0,0,0,87]
|
||||
"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,114]
|
||||
};
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
var NAVTREEINDEX3 =
|
||||
{
|
||||
"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,18,0],
|
||||
"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[11,0,0,0,87],
|
||||
"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,18,5],
|
||||
"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,124],
|
||||
"hierarchy.html":[10,2],
|
||||
|
@ -248,6 +249,5 @@ var NAVTREEINDEX3 =
|
|||
"structlws__http__mount.html#a05347d92c3d379809564bd4f3eab259b":[9,4,0,1,17],
|
||||
"structlws__http__mount.html#a11ea62b952710d59733dbcf9794a5773":[9,4,0,1,11],
|
||||
"structlws__http__mount.html#a21d86fd6043ec00e121ababbc29af39a":[9,4,0,1,15],
|
||||
"structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98":[9,4,0,1,2],
|
||||
"structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146":[9,4,0,1,4]
|
||||
"structlws__http__mount.html#a2f6c7dbc2d714b7259c67b7744d4ff98":[9,4,0,1,2]
|
||||
};
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
var NAVTREEINDEX4 =
|
||||
{
|
||||
"structlws__http__mount.html#a4283e30ea89d27ae7d061ad760d1d146":[9,4,0,1,4],
|
||||
"structlws__http__mount.html#a4437423df85ee3dbcae0e15974c89ec7":[9,4,0,1,10],
|
||||
"structlws__http__mount.html#a4a7239d6d4c03986e6e1a72abb6c83aa":[9,4,0,1,7],
|
||||
"structlws__http__mount.html#a614364c770b0bd4db464ad65cddab477":[9,4,0,1,1],
|
||||
|
@ -55,14 +56,14 @@ 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,2,3],
|
||||
"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,0,0,3],
|
||||
"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,0,0,1],
|
||||
"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,2,1],
|
||||
"structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,2,0],
|
||||
"structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,0,0,1],
|
||||
"structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,0,0,0],
|
||||
"structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,2,0],
|
||||
"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,2,2],
|
||||
"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,0,0,2],
|
||||
"structlws__protocols.html":[9,10,1],
|
||||
|
@ -80,12 +81,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,4,0],
|
||||
"structlws__tokens.html":[9,6,6],
|
||||
"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,6,1],
|
||||
"structlws__tokens.html":[9,6,4,0],
|
||||
"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,4,0,1],
|
||||
"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,6,0],
|
||||
"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,6,1],
|
||||
"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,4,0,0],
|
||||
"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,6,0],
|
||||
"structlwsgw__hash.html":[9,10,0,1],
|
||||
"structlwsgw__hash.html#a29435f5cf78747d4257695b0f141d164":[9,10,0,1,0],
|
||||
"structlwsgw__hash__bin.html":[9,10,0,0],
|
||||
|
|
|
@ -2423,6 +2423,7 @@ lws_serve_http_file_fragment(struct lws *wsi);
|
|||
enum http_status {
|
||||
HTTP_STATUS_OK = 200,
|
||||
HTTP_STATUS_NO_CONTENT = 204,
|
||||
HTTP_STATUS_PARTIAL_CONTENT = 206,
|
||||
|
||||
HTTP_STATUS_MOVED_PERMANENTLY = 301,
|
||||
HTTP_STATUS_FOUND = 302,
|
||||
|
|
100
lib/output.c
100
lib/output.c
|
@ -241,7 +241,7 @@ LWS_VISIBLE int lws_write(struct lws *wsi, unsigned char *buf, size_t len,
|
|||
wsi->access_log.sent += len;
|
||||
#endif
|
||||
if (wsi->vhost)
|
||||
wsi->vhost->tx += len;
|
||||
wsi->vhost->conn_stats.tx += len;
|
||||
|
||||
if (wsi->state == LWSS_ESTABLISHED && wsi->u.ws.tx_draining_ext) {
|
||||
/* remove us from the list */
|
||||
|
@ -558,12 +558,16 @@ LWS_VISIBLE int lws_serve_http_file_fragment(struct lws *wsi)
|
|||
struct lws_context_per_thread *pt = &context->pt[(int)wsi->tsi];
|
||||
struct lws_process_html_args args;
|
||||
unsigned long amount, poss;
|
||||
unsigned char *p = pt->serv_buf;
|
||||
unsigned char *p;
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
unsigned char finished = 0;
|
||||
#endif
|
||||
int n, m;
|
||||
|
||||
|
||||
// lwsl_notice("%s (trunc len %d)\n", __func__, wsi->trunc_len);
|
||||
|
||||
while (wsi->http2_substream || !lws_send_pipe_choked(wsi)) {
|
||||
|
||||
if (wsi->trunc_len) {
|
||||
if (lws_issue_raw(wsi, wsi->trunc_alloc +
|
||||
wsi->trunc_offset,
|
||||
|
@ -577,8 +581,50 @@ LWS_VISIBLE int lws_serve_http_file_fragment(struct lws *wsi)
|
|||
if (wsi->u.http.filepos == wsi->u.http.filelen)
|
||||
goto all_sent;
|
||||
|
||||
poss = context->pt_serv_buf_size;
|
||||
n = 0;
|
||||
|
||||
p = pt->serv_buf;
|
||||
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
if (wsi->u.http.range.count_ranges && !wsi->u.http.range.inside) {
|
||||
|
||||
lwsl_notice("%s: doing range start %llu\n", __func__, wsi->u.http.range.start);
|
||||
|
||||
if ((long)lws_plat_file_seek_cur(wsi, wsi->u.http.fd,
|
||||
wsi->u.http.range.start -
|
||||
wsi->u.http.filepos) < 0)
|
||||
return -1;
|
||||
|
||||
wsi->u.http.filepos = wsi->u.http.range.start;
|
||||
|
||||
if (wsi->u.http.range.count_ranges > 1) {
|
||||
n = lws_snprintf((char *)p, context->pt_serv_buf_size,
|
||||
"_lws\x0d\x0a"
|
||||
"Content-Type: %s\x0d\x0a"
|
||||
"Content-Range: bytes %llu-%llu/%llu\x0d\x0a"
|
||||
"\x0d\x0a",
|
||||
wsi->u.http.multipart_content_type,
|
||||
wsi->u.http.range.start,
|
||||
wsi->u.http.range.end,
|
||||
wsi->u.http.range.extent);
|
||||
p += n;
|
||||
}
|
||||
|
||||
wsi->u.http.range.budget = wsi->u.http.range.end -
|
||||
wsi->u.http.range.start + 1;
|
||||
wsi->u.http.range.inside = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
poss = context->pt_serv_buf_size - n;
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
if (wsi->u.http.range.count_ranges) {
|
||||
if (wsi->u.http.range.count_ranges > 1)
|
||||
poss -= 7; /* allow for final boundary */
|
||||
if (poss > wsi->u.http.range.budget)
|
||||
poss = wsi->u.http.range.budget;
|
||||
}
|
||||
#endif
|
||||
if (wsi->sending_chunked) {
|
||||
/* we need to drop the chunk size in here */
|
||||
p += 10;
|
||||
|
@ -591,7 +637,10 @@ LWS_VISIBLE int lws_serve_http_file_fragment(struct lws *wsi)
|
|||
|
||||
//lwsl_notice("amount %ld\n", amount);
|
||||
|
||||
n = (int)amount;
|
||||
if (wsi->sending_chunked)
|
||||
n = (int)amount;
|
||||
else
|
||||
n = (p - pt->serv_buf) + (int)amount;
|
||||
if (n) {
|
||||
lws_set_timeout(wsi, PENDING_TIMEOUT_HTTP_CONTENT,
|
||||
context->timeout_secs);
|
||||
|
@ -609,8 +658,19 @@ LWS_VISIBLE int lws_serve_http_file_fragment(struct lws *wsi)
|
|||
return -1;
|
||||
n = args.len;
|
||||
p = (unsigned char *)args.p;
|
||||
}
|
||||
} else
|
||||
p = pt->serv_buf;
|
||||
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
if (wsi->u.http.range.send_ctr + 1 ==
|
||||
wsi->u.http.range.count_ranges && // last range
|
||||
wsi->u.http.range.count_ranges > 1 && // was 2+ ranges (ie, multipart)
|
||||
wsi->u.http.range.budget - amount == 0) {// final part
|
||||
n += lws_snprintf((char *)pt->serv_buf + n, 6,
|
||||
"_lws\x0d\x0a"); // append trailing boundary
|
||||
lwsl_debug("added trailing boundary\n");
|
||||
}
|
||||
#endif
|
||||
m = lws_write(wsi, p, n,
|
||||
wsi->u.http.filepos == wsi->u.http.filelen ?
|
||||
LWS_WRITE_HTTP_FINAL :
|
||||
|
@ -620,6 +680,23 @@ LWS_VISIBLE int lws_serve_http_file_fragment(struct lws *wsi)
|
|||
return -1;
|
||||
|
||||
wsi->u.http.filepos += amount;
|
||||
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
if (wsi->u.http.range.count_ranges >= 1) {
|
||||
wsi->u.http.range.budget -= amount;
|
||||
if (wsi->u.http.range.budget == 0) {
|
||||
lwsl_notice("range budget exhausted\n");
|
||||
wsi->u.http.range.inside = 0;
|
||||
wsi->u.http.range.send_ctr++;
|
||||
|
||||
if (lws_ranges_next(&wsi->u.http.range) < 1) {
|
||||
finished = 1;
|
||||
goto all_sent;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (m != n) {
|
||||
/* adjust for what was not sent */
|
||||
if (lws_plat_file_seek_cur(wsi, wsi->u.http.fd,
|
||||
|
@ -629,8 +706,13 @@ LWS_VISIBLE int lws_serve_http_file_fragment(struct lws *wsi)
|
|||
}
|
||||
}
|
||||
all_sent:
|
||||
if (!wsi->trunc_len &&
|
||||
wsi->u.http.filepos == wsi->u.http.filelen) {
|
||||
if ((!wsi->trunc_len && wsi->u.http.filepos == wsi->u.http.filelen)
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
|| finished)
|
||||
#else
|
||||
)
|
||||
#endif
|
||||
{
|
||||
wsi->state = LWSS_HTTP;
|
||||
/* we might be in keepalive, so close it off here */
|
||||
lws_plat_file_close(wsi, wsi->u.http.fd);
|
||||
|
@ -664,7 +746,7 @@ lws_ssl_capable_read_no_ssl(struct lws *wsi, unsigned char *buf, int len)
|
|||
n = recv(wsi->sock, (char *)buf, len, 0);
|
||||
if (n >= 0) {
|
||||
if (wsi->vhost)
|
||||
wsi->vhost->rx += n;
|
||||
wsi->vhost->conn_stats.rx += n;
|
||||
lws_restart_ws_ping_pong_timer(wsi);
|
||||
return n;
|
||||
}
|
||||
|
|
|
@ -652,6 +652,7 @@ struct allocated_headers {
|
|||
*/
|
||||
unsigned char frag_index[WSI_TOKEN_COUNT];
|
||||
unsigned char rx[2048];
|
||||
|
||||
unsigned int rxpos;
|
||||
unsigned int rxlen;
|
||||
unsigned int pos;
|
||||
|
@ -1061,6 +1062,33 @@ struct _lws_header_related {
|
|||
char redirects;
|
||||
};
|
||||
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
enum range_states {
|
||||
LWSRS_NO_ACTIVE_RANGE,
|
||||
LWSRS_BYTES_EQ,
|
||||
LWSRS_FIRST,
|
||||
LWSRS_STARTING,
|
||||
LWSRS_ENDING,
|
||||
LWSRS_COMPLETED,
|
||||
LWSRS_SYNTAX,
|
||||
};
|
||||
|
||||
struct lws_range_parsing {
|
||||
unsigned long long start, end, extent, agg, budget;
|
||||
const char buf[128];
|
||||
int pos;
|
||||
enum range_states state;
|
||||
char start_valid, end_valid, ctr, count_ranges, did_try, inside, send_ctr;
|
||||
};
|
||||
|
||||
int
|
||||
lws_ranges_init(struct lws *wsi, struct lws_range_parsing *rp, unsigned long long extent);
|
||||
int
|
||||
lws_ranges_next(struct lws_range_parsing *rp);
|
||||
void
|
||||
lws_ranges_reset(struct lws_range_parsing *rp);
|
||||
#endif
|
||||
|
||||
struct _lws_http_mode_related {
|
||||
/* MUST be first in struct */
|
||||
struct allocated_headers *ah; /* mirroring _lws_header_related */
|
||||
|
@ -1075,6 +1103,11 @@ struct _lws_http_mode_related {
|
|||
unsigned long filelen;
|
||||
lws_filefd_type fd;
|
||||
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
struct lws_range_parsing range;
|
||||
char multipart_content_type[64];
|
||||
#endif
|
||||
|
||||
enum http_version request_version;
|
||||
enum http_connection_type connection_type;
|
||||
unsigned int content_length;
|
||||
|
|
211
lib/ranges.c
Normal file
211
lib/ranges.c
Normal file
|
@ -0,0 +1,211 @@
|
|||
/*
|
||||
* libwebsockets - small server side websockets and web server implementation
|
||||
*
|
||||
* RFC7233 ranges parser
|
||||
*
|
||||
* Copyright (C) 2016 Andy Green <andy@warmcat.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation:
|
||||
* version 2.1 of the License.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "private-libwebsockets.h"
|
||||
|
||||
/*
|
||||
* RFC7233 examples
|
||||
*
|
||||
* o The first 500 bytes (byte offsets 0-499, inclusive):
|
||||
*
|
||||
* bytes=0-499
|
||||
*
|
||||
* o The second 500 bytes (byte offsets 500-999, inclusive):
|
||||
*
|
||||
* bytes=500-999
|
||||
*
|
||||
* o The final 500 bytes (byte offsets 9500-9999, inclusive):
|
||||
*
|
||||
* bytes=-500
|
||||
*
|
||||
* Or:
|
||||
*
|
||||
* bytes=9500-
|
||||
*
|
||||
* o The first and last bytes only (bytes 0 and 9999):
|
||||
*
|
||||
* bytes=0-0,-1
|
||||
*
|
||||
* o Other valid (but not canonical) specifications of the second 500
|
||||
* bytes (byte offsets 500-999, inclusive):
|
||||
*
|
||||
* bytes=500-600,601-999
|
||||
* bytes=500-700,601-999
|
||||
*/
|
||||
|
||||
/*
|
||||
* returns 1 if the range struct represents a usable range
|
||||
* if no ranges header, you get one of these for the whole
|
||||
* file. Otherwise you get one for each valid range in the
|
||||
* header.
|
||||
*
|
||||
* returns 0 if no further valid range forthcoming; rp->state
|
||||
* may be LWSRS_SYNTAX or LWSRS_COMPLETED
|
||||
*/
|
||||
|
||||
int
|
||||
lws_ranges_next(struct lws_range_parsing *rp)
|
||||
{
|
||||
static const char * const beq = "bytes=";
|
||||
char c;
|
||||
|
||||
while (1) {
|
||||
|
||||
c = rp->buf[rp->pos];
|
||||
|
||||
switch (rp->state) {
|
||||
case LWSRS_SYNTAX:
|
||||
case LWSRS_COMPLETED:
|
||||
return 0;
|
||||
|
||||
case LWSRS_NO_ACTIVE_RANGE:
|
||||
rp->state = LWSRS_COMPLETED;
|
||||
return 0;
|
||||
|
||||
case LWSRS_BYTES_EQ: // looking for "bytes="
|
||||
if (c != beq[rp->pos]) {
|
||||
rp->state = LWSRS_SYNTAX;
|
||||
return -1;
|
||||
}
|
||||
if (rp->pos == 5)
|
||||
rp->state = LWSRS_FIRST;
|
||||
break;
|
||||
|
||||
case LWSRS_FIRST:
|
||||
rp->start = 0;
|
||||
rp->end = 0;
|
||||
rp->start_valid = 0;
|
||||
rp->end_valid = 0;
|
||||
|
||||
rp->state = LWSRS_STARTING;
|
||||
|
||||
// fallthru
|
||||
|
||||
case LWSRS_STARTING:
|
||||
if (c == '-') {
|
||||
rp->state = LWSRS_ENDING;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!(c >= '0' && c <= '9')) {
|
||||
rp->state = LWSRS_SYNTAX;
|
||||
return 0;
|
||||
}
|
||||
rp->start = (rp->start * 10) + (c - '0');
|
||||
rp->start_valid = 1;
|
||||
break;
|
||||
|
||||
case LWSRS_ENDING:
|
||||
if (c == ',' || c == '\0') {
|
||||
rp->state = LWSRS_FIRST;
|
||||
if (c == ',')
|
||||
rp->pos++;
|
||||
|
||||
/* by the end of this, start and end are always valid if the range still is */
|
||||
|
||||
if (!rp->start_valid) { /* eg, -500 */
|
||||
if (rp->end > rp->extent)
|
||||
rp->end = rp->extent;
|
||||
|
||||
rp->start = rp->extent - rp->end;
|
||||
rp->end = rp->extent - 1;
|
||||
} else
|
||||
if (!rp->end_valid)
|
||||
rp->end = rp->extent - 1;
|
||||
|
||||
rp->did_try = 1;
|
||||
|
||||
/* end must be >= start or ignore it */
|
||||
if (rp->end < rp->start) {
|
||||
if (c == ',')
|
||||
break;
|
||||
rp->state = LWSRS_COMPLETED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1; /* issue range */
|
||||
}
|
||||
|
||||
if (!(c >= '0' && c <= '9')) {
|
||||
rp->state = LWSRS_SYNTAX;
|
||||
return 0;
|
||||
}
|
||||
rp->end = (rp->end * 10) + (c - '0');
|
||||
rp->end_valid = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
rp->pos++;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
lws_ranges_reset(struct lws_range_parsing *rp)
|
||||
{
|
||||
rp->pos = 0;
|
||||
rp->ctr = 0;
|
||||
rp->start = 0;
|
||||
rp->end = 0;
|
||||
rp->start_valid = 0;
|
||||
rp->end_valid = 0;
|
||||
rp->state = LWSRS_BYTES_EQ;
|
||||
}
|
||||
|
||||
/*
|
||||
* returns count of valid ranges
|
||||
*/
|
||||
int
|
||||
lws_ranges_init(struct lws *wsi, struct lws_range_parsing *rp,
|
||||
unsigned long long extent)
|
||||
{
|
||||
rp->agg = 0;
|
||||
rp->send_ctr = 0;
|
||||
rp->inside = 0;
|
||||
rp->count_ranges = 0;
|
||||
rp->did_try = 0;
|
||||
lws_ranges_reset(rp);
|
||||
rp->state = LWSRS_COMPLETED;
|
||||
|
||||
rp->extent = extent;
|
||||
|
||||
if (lws_hdr_copy(wsi, (char *)rp->buf, sizeof(rp->buf),
|
||||
WSI_TOKEN_HTTP_RANGE) <= 0)
|
||||
return 0;
|
||||
|
||||
rp->state = LWSRS_BYTES_EQ;
|
||||
|
||||
while (lws_ranges_next(rp)) {
|
||||
rp->count_ranges++;
|
||||
rp->agg += rp->end - rp->start + 1;
|
||||
}
|
||||
|
||||
lwsl_debug("%s: count %d\n", __func__, rp->count_ranges);
|
||||
lws_ranges_reset(rp);
|
||||
|
||||
if (rp->did_try && !rp->count_ranges)
|
||||
return -1; /* "not satisfiable */
|
||||
|
||||
lws_ranges_next(rp);
|
||||
|
||||
return rp->count_ranges;
|
||||
}
|
109
lib/server.c
109
lib/server.c
|
@ -403,6 +403,13 @@ lws_http_serve(struct lws *wsi, char *uri, const char *origin,
|
|||
n = sprintf(sym, "%08lX%08lX", (unsigned long)st.st_size,
|
||||
(unsigned long)st.st_mtime);
|
||||
|
||||
/* disable ranges if IF_RANGE token invalid */
|
||||
|
||||
if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_IF_RANGE))
|
||||
if (strcmp(sym, lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_IF_RANGE)))
|
||||
/* differs - defeat Range: */
|
||||
wsi->u.http.ah->frag_index[WSI_TOKEN_HTTP_RANGE] = 0;
|
||||
|
||||
if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_IF_NONE_MATCH)) {
|
||||
/*
|
||||
* he thinks he has some version of it already,
|
||||
|
@ -2116,11 +2123,18 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
|
|||
static const char * const intermediates[] = { "private", "public" };
|
||||
struct lws_context *context = lws_get_context(wsi);
|
||||
struct lws_context_per_thread *pt = &context->pt[(int)wsi->tsi];
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
struct lws_range_parsing *rp = &wsi->u.http.range;
|
||||
#endif
|
||||
char cache_control[50], *cc = "no-store";
|
||||
unsigned char *response = pt->serv_buf + LWS_PRE;
|
||||
unsigned char *p = response;
|
||||
unsigned char *end = p + context->pt_serv_buf_size - LWS_PRE;
|
||||
int ret = 0, cclen = 8;
|
||||
unsigned long computed_total_content_length;
|
||||
int ret = 0, cclen = 8, n = HTTP_STATUS_OK;
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
int ranges;
|
||||
#endif
|
||||
|
||||
wsi->u.http.fd = lws_plat_file_open(wsi, file, &wsi->u.http.filelen,
|
||||
O_RDONLY);
|
||||
|
@ -2130,18 +2144,105 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
|
|||
|
||||
return -1;
|
||||
}
|
||||
computed_total_content_length = wsi->u.http.filelen;
|
||||
|
||||
if (lws_add_http_header_status(wsi, 200, &p, end))
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
ranges = lws_ranges_init(wsi, rp, wsi->u.http.filelen);
|
||||
|
||||
lwsl_debug("Range count %d\n", ranges);
|
||||
/*
|
||||
* no ranges -> 200;
|
||||
* 1 range -> 206 + Content-Type: normal; Content-Range;
|
||||
* more -> 206 + Content-Type: multipart/byteranges
|
||||
* Repeat the true Content-Type in each multipart header
|
||||
* along with Content-Range
|
||||
*/
|
||||
if (ranges < 0) {
|
||||
/* it means he expressed a range in Range:, but it was illegal */
|
||||
lws_return_http_status(wsi, HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE, NULL);
|
||||
if (lws_http_transaction_completed(wsi))
|
||||
return -1; /* <0 means just hang up */
|
||||
|
||||
return 0; /* == 0 means we dealt with the transaction complete */
|
||||
}
|
||||
if (ranges)
|
||||
n = HTTP_STATUS_PARTIAL_CONTENT;
|
||||
#endif
|
||||
|
||||
if (lws_add_http_header_status(wsi, n, &p, end))
|
||||
return -1;
|
||||
if (content_type && content_type[0]) {
|
||||
|
||||
#if defined(LWS_WITH_RANGES)
|
||||
if (ranges < 2 && content_type && content_type[0])
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_TYPE,
|
||||
(unsigned char *)content_type,
|
||||
strlen(content_type), &p, end))
|
||||
return -1;
|
||||
|
||||
if (ranges >= 2) { /* multipart byteranges */
|
||||
strncpy(wsi->u.http.multipart_content_type, content_type,
|
||||
sizeof(wsi->u.http.multipart_content_type) - 1);
|
||||
wsi->u.http.multipart_content_type[
|
||||
sizeof(wsi->u.http.multipart_content_type) - 1] = '\0';
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_TYPE,
|
||||
(unsigned char *)"multipart/byteranges; boundary=_lws",
|
||||
20, &p, end))
|
||||
return -1;
|
||||
|
||||
/*
|
||||
* our overall content length has to include
|
||||
*
|
||||
* - (n + 1) x "_lws\r\n"
|
||||
* - n x Content-Type: xxx/xxx\r\n
|
||||
* - n x Content-Range: bytes xxx-yyy/zzz\r\n
|
||||
* - n x /r/n
|
||||
* - the actual payloads (aggregated in rp->agg)
|
||||
*
|
||||
* Precompute it for the main response header
|
||||
*/
|
||||
|
||||
computed_total_content_length = (unsigned long)rp->agg +
|
||||
6 /* final _lws\r\n */;
|
||||
|
||||
lws_ranges_reset(rp);
|
||||
while (lws_ranges_next(rp)) {
|
||||
n = lws_snprintf(cache_control, sizeof(cache_control),
|
||||
"bytes %llu-%llu/%llu",
|
||||
rp->start, rp->end, rp->extent);
|
||||
|
||||
computed_total_content_length +=
|
||||
6 /* header _lws\r\n */ +
|
||||
14 + strlen(content_type) + 2 + /* Content-Type: xxx/xxx\r\n */
|
||||
15 + n + 2 + /* Content-Range: xxxx\r\n */
|
||||
2; /* /r/n */
|
||||
}
|
||||
|
||||
lws_ranges_reset(rp);
|
||||
lws_ranges_next(rp);
|
||||
}
|
||||
|
||||
if (ranges == 1) {
|
||||
computed_total_content_length = (unsigned long)rp->agg;
|
||||
n = lws_snprintf(cache_control, sizeof(cache_control), "bytes %llu-%llu/%llu",
|
||||
rp->start, rp->end, rp->extent);
|
||||
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_RANGE,
|
||||
(unsigned char *)cache_control,
|
||||
n, &p, end))
|
||||
return -1;
|
||||
}
|
||||
|
||||
wsi->u.http.range.inside = 0;
|
||||
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_ACCEPT_RANGES,
|
||||
(unsigned char *)"bytes", 5, &p, end))
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
if (!wsi->sending_chunked) {
|
||||
if (lws_add_http_header_content_length(wsi, wsi->u.http.filelen, &p, end))
|
||||
if (lws_add_http_header_content_length(wsi,
|
||||
computed_total_content_length,
|
||||
&p, end))
|
||||
return -1;
|
||||
} else {
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_TRANSFER_ENCODING,
|
||||
|
|
|
@ -99,6 +99,9 @@
|
|||
/* HTTP Proxy support */
|
||||
#cmakedefine LWS_WITH_HTTP_PROXY
|
||||
|
||||
/* HTTP Ranges support */
|
||||
#cmakedefine LWS_WITH_RANGES
|
||||
|
||||
/* Http access log support */
|
||||
#cmakedefine LWS_WITH_ACCESS_LOG
|
||||
#cmakedefine LWS_WITH_SERVER_STATUS
|
||||
|
|
Loading…
Add table
Reference in a new issue