diff --git a/doc/html/globals_eval.html b/doc/html/globals_eval.html index 93dbdf5f..e7d9d0f3 100644 --- a/doc/html/globals_eval.html +++ b/doc/html/globals_eval.html @@ -146,6 +146,9 @@ $(document).ready(function(){initNavTree('globals_eval.html','');});
  • LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH : libwebsockets.h
  • +
  • LWS_CALLBACK_CLIENT_HTTP_WRITEABLE +: libwebsockets.h +
  • LWS_CALLBACK_CLIENT_RECEIVE : libwebsockets.h
  • diff --git a/doc/html/globals_l.html b/doc/html/globals_l.html index 1d282d4d..159869d5 100644 --- a/doc/html/globals_l.html +++ b/doc/html/globals_l.html @@ -163,6 +163,9 @@ $(document).ready(function(){initNavTree('globals_l.html','');});
  • LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH : libwebsockets.h
  • +
  • LWS_CALLBACK_CLIENT_HTTP_WRITEABLE +: libwebsockets.h +
  • LWS_CALLBACK_CLIENT_RECEIVE : libwebsockets.h
  • diff --git a/doc/html/group__client.html b/doc/html/group__client.html index a08a24bd..066210f5 100644 --- a/doc/html/group__client.html +++ b/doc/html/group__client.html @@ -96,6 +96,9 @@ Functions LWS_VISIBLE LWS_EXTERN int lws_http_client_read (struct lws *wsi, char **buf, int *len)   + +LWS_VISIBLE LWS_EXTERN void lws_client_http_body_pending (struct lws *wsi, int something_left_to_send) + 

    Detailed Description

    Client releated functions

    @@ -112,7 +115,7 @@ LWS_VISIBLE LWS_EXTERN int #include <lib/libwebsockets.h>

    enum lws_client_connect_ssl_connection_flags - flags that may be used with struct lws_client_connect_info ssl_connection member to control if and how SSL checks apply to the client connection being created

    -
    1955  {
    1956  LCCSCF_USE_SSL = (1 << 0),
    1957  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1958  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1959 };
    +
    1964  {
    1965  LCCSCF_USE_SSL = (1 << 0),
    1966  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1967  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1968 };

    Function Documentation

    diff --git a/doc/html/group__context-and-vhost.html b/doc/html/group__context-and-vhost.html index 38bb0d6c..d10cb2f7 100644 --- a/doc/html/group__context-and-vhost.html +++ b/doc/html/group__context-and-vhost.html @@ -206,23 +206,23 @@ Functions

    (VH) if set, only ipv6 allowed on the vhost

    -
    1482  {
    1484  (1 << 12),
    1491  (1 << 12),
    1495  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1497  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1506  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1507  (1 << 12),
    1509  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1512  (1 << 12),
    1520  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1522  LWS_SERVER_OPTION_STS = (1 << 15),
    1530  /****** add new things just above ---^ ******/
    1531 };
    -
    Definition: libwebsockets.h:1499
    -
    Definition: libwebsockets.h:1511
    -
    Definition: libwebsockets.h:1517
    -
    Definition: libwebsockets.h:1488
    -
    Definition: libwebsockets.h:1506
    -
    Definition: libwebsockets.h:1490
    -
    Definition: libwebsockets.h:1495
    -
    Definition: libwebsockets.h:1515
    -
    Definition: libwebsockets.h:1527
    -
    Definition: libwebsockets.h:1497
    -
    Definition: libwebsockets.h:1509
    -
    Definition: libwebsockets.h:1520
    -
    Definition: libwebsockets.h:1504
    -
    Definition: libwebsockets.h:1502
    -
    Definition: libwebsockets.h:1522
    -
    Definition: libwebsockets.h:1525
    +
    1491  {
    1493  (1 << 12),
    1500  (1 << 12),
    1504  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1506  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1515  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1516  (1 << 12),
    1518  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1521  (1 << 12),
    1529  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1531  LWS_SERVER_OPTION_STS = (1 << 15),
    1539  /****** add new things just above ---^ ******/
    1540 };
    +
    Definition: libwebsockets.h:1508
    +
    Definition: libwebsockets.h:1520
    +
    Definition: libwebsockets.h:1526
    +
    Definition: libwebsockets.h:1497
    +
    Definition: libwebsockets.h:1515
    +
    Definition: libwebsockets.h:1499
    +
    Definition: libwebsockets.h:1504
    +
    Definition: libwebsockets.h:1524
    +
    Definition: libwebsockets.h:1536
    +
    Definition: libwebsockets.h:1506
    +
    Definition: libwebsockets.h:1518
    +
    Definition: libwebsockets.h:1529
    +
    Definition: libwebsockets.h:1513
    +
    Definition: libwebsockets.h:1511
    +
    Definition: libwebsockets.h:1531
    +
    Definition: libwebsockets.h:1534
    diff --git a/doc/html/group__extensions.html b/doc/html/group__extensions.html index 457c598f..c2d4e25d 100644 --- a/doc/html/group__extensions.html +++ b/doc/html/group__extensions.html @@ -242,9 +242,9 @@ Functions

    may have an optional decimal argument

    -
    1084  {
    1085  EXTARG_NONE,
    1086  EXTARG_DEC,
    1089  /* Add new things just above here ---^
    1090  * This is part of the ABI, don't needlessly break compatibility */
    1091 };
    Definition: libwebsockets.h:1087
    -
    Definition: libwebsockets.h:1085
    -
    Definition: libwebsockets.h:1086
    +
    1093  {
    1094  EXTARG_NONE,
    1095  EXTARG_DEC,
    1098  /* Add new things just above here ---^
    1099  * This is part of the ABI, don't needlessly break compatibility */
    1100 };
    Definition: libwebsockets.h:1096
    +
    Definition: libwebsockets.h:1094
    +
    Definition: libwebsockets.h:1095
    diff --git a/doc/html/group__form-parsing.html b/doc/html/group__form-parsing.html index 62f67819..dbc0bfae 100644 --- a/doc/html/group__form-parsing.html +++ b/doc/html/group__form-parsing.html @@ -156,9 +156,9 @@ Functions

    a new file is starting to arrive

    -
    2735  {
    2740  LWS_UFS_OPEN
    2742 };
    Definition: libwebsockets.h:2738
    -
    Definition: libwebsockets.h:2740
    -
    Definition: libwebsockets.h:2736
    +
    2768  {
    2773  LWS_UFS_OPEN
    2775 };
    Definition: libwebsockets.h:2771
    +
    Definition: libwebsockets.h:2773
    +
    Definition: libwebsockets.h:2769
    diff --git a/doc/html/group__generic-sessions.html b/doc/html/group__generic-sessions.html index f344ef33..31e38b9c 100644 --- a/doc/html/group__generic-sessions.html +++ b/doc/html/group__generic-sessions.html @@ -117,8 +117,8 @@ Enumerations

    an existing user was deleted

    -
    1446  {
    1447  LWSGSE_CREATED,
    1449 };
    Definition: libwebsockets.h:1448
    -
    Definition: libwebsockets.h:1447
    +
    1455  {
    1456  LWSGSE_CREATED,
    1458 };
    Definition: libwebsockets.h:1457
    +
    Definition: libwebsockets.h:1456
    @@ -148,10 +148,10 @@ Enumerations

    he just completed "forgot password" flow

    -
    1428  {
    1429  LWSGS_AUTH_LOGGED_IN = 1,
    1430  LWSGS_AUTH_ADMIN = 2,
    1431  LWSGS_AUTH_VERIFIED = 4,
    1433 };
    Definition: libwebsockets.h:1431
    -
    Definition: libwebsockets.h:1432
    -
    Definition: libwebsockets.h:1430
    -
    Definition: libwebsockets.h:1429
    +
    1437  {
    1438  LWSGS_AUTH_LOGGED_IN = 1,
    1439  LWSGS_AUTH_ADMIN = 2,
    1440  LWSGS_AUTH_VERIFIED = 4,
    1442 };
    Definition: libwebsockets.h:1440
    +
    Definition: libwebsockets.h:1441
    +
    Definition: libwebsockets.h:1439
    +
    Definition: libwebsockets.h:1438
    diff --git a/doc/html/group__sending-data.html b/doc/html/group__sending-data.html index 2a43e022..603bca9d 100644 --- a/doc/html/group__sending-data.html +++ b/doc/html/group__sending-data.html @@ -130,13 +130,13 @@ Functions

    client packet payload goes out on wire unmunged only useful for security tests since normal servers cannot decode the content if used

    -
    3078  {
    3079  LWS_WRITE_TEXT = 0,
    3083  LWS_WRITE_BINARY = 1,
    3089  LWS_WRITE_HTTP = 3,
    3092  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3093  LWS_WRITE_PING = 5,
    3094  LWS_WRITE_PONG = 6,
    3095 
    3096  /* Same as write_http but we know this write ends the transaction */
    3097  LWS_WRITE_HTTP_FINAL = 7,
    3098 
    3099  /* HTTP2 */
    3100 
    3108  /****** add new things just above ---^ ******/
    3109 
    3110  /* flags */
    3111 
    3112  LWS_WRITE_NO_FIN = 0x40,
    3119 };
    Definition: libwebsockets.h:3089
    -
    Definition: libwebsockets.h:3112
    -
    Definition: libwebsockets.h:3079
    -
    Definition: libwebsockets.h:3083
    -
    Definition: libwebsockets.h:3115
    -
    Definition: libwebsockets.h:3086
    -
    Definition: libwebsockets.h:3101
    +
    3112  {
    3113  LWS_WRITE_TEXT = 0,
    3117  LWS_WRITE_BINARY = 1,
    3123  LWS_WRITE_HTTP = 3,
    3126  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3127  LWS_WRITE_PING = 5,
    3128  LWS_WRITE_PONG = 6,
    3129 
    3130  /* Same as write_http but we know this write ends the transaction */
    3131  LWS_WRITE_HTTP_FINAL = 7,
    3132 
    3133  /* HTTP2 */
    3134 
    3142  /****** add new things just above ---^ ******/
    3143 
    3144  /* flags */
    3145 
    3146  LWS_WRITE_NO_FIN = 0x40,
    3153 };
    Definition: libwebsockets.h:3123
    +
    Definition: libwebsockets.h:3146
    +
    Definition: libwebsockets.h:3113
    +
    Definition: libwebsockets.h:3117
    +
    Definition: libwebsockets.h:3149
    +
    Definition: libwebsockets.h:3120
    +
    Definition: libwebsockets.h:3135
    diff --git a/doc/html/group__service.html b/doc/html/group__service.html index 5b90a85e..9964a5bd 100644 --- a/doc/html/group__service.html +++ b/doc/html/group__service.html @@ -84,6 +84,16 @@ Functions  

    Detailed Description

    +

    lws_client_http_body_pending() - control if client connection neeeds to send body

    +
    Parameters
    + + + +
    wsiclient connection
    something_left_to_sendnonzero if need to send more body, 0 (default) if nothing more to send
    +
    +
    +

    If you will send payload data with your HTTP client connection, eg, for POST, when you set the related http headers in LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER callback you should also call this API with something_left_to_send nonzero, and call lws_callback_on_writable(wsi);

    +

    After sending the headers, lws will call your callback with LWS_CALLBACK_CLIENT_HTTP_WRITEABLE reason when writable. You can send the next part of the http body payload, calling lws_callback_on_writable(wsi); if there is more to come, or lws_client_http_body_pending(wsi, 0); to let lws know the last part is sent and the connection can move on.

    Built-in service loop entry

    If you're not using libev / libuv, these apis are needed to enter the poll() wait in lws and service any connections with pending events.

    Function Documentation

    diff --git a/doc/html/group__smtp.html b/doc/html/group__smtp.html index 3d8e1851..baa112d9 100644 --- a/doc/html/group__smtp.html +++ b/doc/html/group__smtp.html @@ -157,15 +157,15 @@ Functions

    sent the session quit

    -
    4005  {
    4006  LGSSMTP_IDLE,
    4011  LGSSMTP_SENT_TO,
    4015 };
    Definition: libwebsockets.h:4008
    -
    Definition: libwebsockets.h:4013
    -
    Definition: libwebsockets.h:4006
    -
    Definition: libwebsockets.h:4007
    -
    Definition: libwebsockets.h:4011
    -
    Definition: libwebsockets.h:4010
    -
    Definition: libwebsockets.h:4014
    -
    Definition: libwebsockets.h:4009
    -
    Definition: libwebsockets.h:4012
    +
    4039  {
    4040  LGSSMTP_IDLE,
    4045  LGSSMTP_SENT_TO,
    4049 };
    Definition: libwebsockets.h:4042
    +
    Definition: libwebsockets.h:4047
    +
    Definition: libwebsockets.h:4040
    +
    Definition: libwebsockets.h:4041
    +
    Definition: libwebsockets.h:4045
    +
    Definition: libwebsockets.h:4044
    +
    Definition: libwebsockets.h:4048
    +
    Definition: libwebsockets.h:4043
    +
    Definition: libwebsockets.h:4046
    diff --git a/doc/html/group__timeout.html b/doc/html/group__timeout.html index db6e20dc..fdd0aa1e 100644 --- a/doc/html/group__timeout.html +++ b/doc/html/group__timeout.html @@ -93,7 +93,8 @@ Enumerations PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
      PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16, -PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17 +PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17, +PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18
    }   diff --git a/doc/html/group__usercb.html b/doc/html/group__usercb.html index 23b2affb..958324bf 100644 --- a/doc/html/group__usercb.html +++ b/doc/html/group__usercb.html @@ -148,6 +148,7 @@ Enumerations LWS_CALLBACK_GS_EVENT = 55,
      LWS_CALLBACK_HTTP_PMO = 56, +LWS_CALLBACK_CLIENT_HTTP_WRITEABLE = 57, LWS_CALLBACK_USER = 1000
    } @@ -370,11 +371,15 @@ Enumerations LWS_CALLBACK_HTTP_PMO 

    per-mount options for this connection, called before the normal LWS_CALLBACK_HTTP when the mount has per-mount options

    +LWS_CALLBACK_CLIENT_HTTP_WRITEABLE  +

    when doing an HTTP type client connection, you can call lws_client_http_body_pending(wsi, 1) from LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER to get these callbacks sending the HTTP headers.

    +

    From this callback, when you have sent everything, you should let lws know by calling lws_client_http_body_pending(wsi, 0)

    + LWS_CALLBACK_USER 

    user code can use any including / above without fear of clashes

    -
    661  {
    745  LWS_CALLBACK_HTTP = 12,
    903  /* external poll() management support */
    966  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    969  LWS_CALLBACK_CGI = 40,
    971  LWS_CALLBACK_CGI_TERMINATED = 41,
    973  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    975  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    977  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    979  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    981  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    983  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    985  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    987  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    989  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    991  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    993  LWS_CALLBACK_PROCESS_HTML = 52,
    995  LWS_CALLBACK_ADD_HEADERS = 53,
    997  LWS_CALLBACK_SESSION_INFO = 54,
    1000  LWS_CALLBACK_GS_EVENT = 55,
    1002  LWS_CALLBACK_HTTP_PMO = 56,
    1008  /****** add new things just above ---^ ******/
    1009 
    1010  LWS_CALLBACK_USER = 1000,
    1012 };
    Definition: libwebsockets.h:768
    +
    661  {
    745  LWS_CALLBACK_HTTP = 12,
    903  /* external poll() management support */
    966  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    969  LWS_CALLBACK_CGI = 40,
    971  LWS_CALLBACK_CGI_TERMINATED = 41,
    973  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    975  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    977  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    979  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    981  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    983  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    985  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    987  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    989  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    991  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    993  LWS_CALLBACK_PROCESS_HTML = 52,
    995  LWS_CALLBACK_ADD_HEADERS = 53,
    997  LWS_CALLBACK_SESSION_INFO = 54,
    1000  LWS_CALLBACK_GS_EVENT = 55,
    1002  LWS_CALLBACK_HTTP_PMO = 56,
    1017  /****** add new things just above ---^ ******/
    1018 
    1019  LWS_CALLBACK_USER = 1000,
    1021 };
    Definition: libwebsockets.h:768
    Definition: libwebsockets.h:896
    Definition: libwebsockets.h:894
    @@ -407,10 +412,11 @@ Enumerations
    Definition: libwebsockets.h:842
    Definition: libwebsockets.h:728
    Definition: libwebsockets.h:733
    +
    Definition: libwebsockets.h:1007
    Definition: libwebsockets.h:666
    Definition: libwebsockets.h:743
    -
    Definition: libwebsockets.h:1010
    +
    Definition: libwebsockets.h:1019
    Definition: libwebsockets.h:722
    Definition: libwebsockets.h:724
    Definition: libwebsockets.h:735
    diff --git a/doc/html/group__usercb.js b/doc/html/group__usercb.js index 779e5adc..4fb656a2 100644 --- a/doc/html/group__usercb.js +++ b/doc/html/group__usercb.js @@ -42,6 +42,7 @@ var group__usercb = [ "LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b", null ], [ "LWS_CALLBACK_WS_PEER_INITIATED_CLOSE", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51", null ], [ "LWS_CALLBACK_HTTP_PMO", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a", null ], + [ "LWS_CALLBACK_CLIENT_HTTP_WRITEABLE", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6", null ], [ "LWS_CALLBACK_USER", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a", null ] ] ] ]; \ No newline at end of file diff --git a/doc/html/group__vhost-mounts.html b/doc/html/group__vhost-mounts.html index 85ac8771..b62007e4 100644 --- a/doc/html/group__vhost-mounts.html +++ b/doc/html/group__vhost-mounts.html @@ -129,13 +129,13 @@ Enumerations

    hand by named protocol's callback

    -
    1891  {
    1892  LWSMPRO_HTTP = 0,
    1893  LWSMPRO_HTTPS = 1,
    1894  LWSMPRO_FILE = 2,
    1895  LWSMPRO_CGI = 3,
    1896  LWSMPRO_REDIR_HTTP = 4,
    1897  LWSMPRO_REDIR_HTTPS = 5,
    1898  LWSMPRO_CALLBACK = 6,
    1899 };
    Definition: libwebsockets.h:1895
    -
    Definition: libwebsockets.h:1893
    -
    Definition: libwebsockets.h:1894
    -
    Definition: libwebsockets.h:1896
    -
    Definition: libwebsockets.h:1897
    -
    Definition: libwebsockets.h:1892
    -
    Definition: libwebsockets.h:1898
    +
    1900  {
    1901  LWSMPRO_HTTP = 0,
    1902  LWSMPRO_HTTPS = 1,
    1903  LWSMPRO_FILE = 2,
    1904  LWSMPRO_CGI = 3,
    1905  LWSMPRO_REDIR_HTTP = 4,
    1906  LWSMPRO_REDIR_HTTPS = 5,
    1907  LWSMPRO_CALLBACK = 6,
    1908 };
    Definition: libwebsockets.h:1904
    +
    Definition: libwebsockets.h:1902
    +
    Definition: libwebsockets.h:1903
    +
    Definition: libwebsockets.h:1905
    +
    Definition: libwebsockets.h:1906
    +
    Definition: libwebsockets.h:1901
    +
    Definition: libwebsockets.h:1907
    diff --git a/doc/html/libwebsockets_8h.html b/doc/html/libwebsockets_8h.html index 56d760db..eaaa8696 100644 --- a/doc/html/libwebsockets_8h.html +++ b/doc/html/libwebsockets_8h.html @@ -290,6 +290,7 @@ Enumerations LWS_CALLBACK_GS_EVENT = 55,
      LWS_CALLBACK_HTTP_PMO = 56, +LWS_CALLBACK_CLIENT_HTTP_WRITEABLE = 57, LWS_CALLBACK_USER = 1000
    } @@ -573,7 +574,8 @@ Enumerations PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
      PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16, -PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17 +PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17, +PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18
    }   @@ -725,6 +727,9 @@ void ets_timer_arm_new LWS_VISIBLE LWS_EXTERN int lws_http_client_read (struct lws *wsi, char **buf, int *len)   + +LWS_VISIBLE LWS_EXTERN void lws_client_http_body_pending (struct lws *wsi, int something_left_to_send) +  LWS_VISIBLE LWS_EXTERN int lws_service (struct lws_context *context, int timeout_ms)   LWS_VISIBLE LWS_EXTERN int lws_service_tsi (struct lws_context *context, int timeout_ms, int tsi) diff --git a/doc/html/libwebsockets_8h.js b/doc/html/libwebsockets_8h.js index 738de1db..247bd53f 100644 --- a/doc/html/libwebsockets_8h.js +++ b/doc/html/libwebsockets_8h.js @@ -110,6 +110,7 @@ var libwebsockets_8h = [ "LWS_CALLBACK_SESSION_INFO", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ac11c336f7052abf3618962902a71ebc8", null ], [ "LWS_CALLBACK_GS_EVENT", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026", null ], [ "LWS_CALLBACK_HTTP_PMO", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a", null ], + [ "LWS_CALLBACK_CLIENT_HTTP_WRITEABLE", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6", null ], [ "LWS_CALLBACK_USER", "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a", null ] ] ], [ "lws_cgi_hdr_state", "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedb", [ @@ -373,7 +374,8 @@ var libwebsockets_8h = [ "PENDING_TIMEOUT_CGI", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2", 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 ] + [ "PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a62ae208399be1f872e14843fd15f9e06", null ], + [ "PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD", "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a8587dc22f946c45e2f38c4045479fda5", null ] ] ], [ "_lws_log", "group__log.html#gaf5f07837692b2f231a79da8a058288aa", null ], [ "_lws_logv", "group__log.html#ga74eb146969f0595e12ea835851b4588e", null ], @@ -406,6 +408,7 @@ var libwebsockets_8h = [ "lws_client_connect", "group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3", null ], [ "lws_client_connect_extended", "group__client.html#gac6a8558b4410961a880241c2ac1271e2", null ], [ "lws_client_connect_via_info", "group__client.html#ga0c966136905f467816307cfba6deb5fd", null ], + [ "lws_client_http_body_pending", "group__client.html#ga26588fb345083076c14169dd5859f57a", null ], [ "lws_close_reason", "group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262", null ], [ "lws_context_destroy", "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb", null ], [ "lws_context_user", "group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da", null ], diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html index 2e11ee02..c8f05a6c 100644 --- a/doc/html/libwebsockets_8h_source.html +++ b/doc/html/libwebsockets_8h_source.html @@ -71,230 +71,230 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    libwebsockets.h
    -Go to the documentation of this file.
    1 /*
    2  * libwebsockets - small server side websockets and web server implementation
    3  *
    4  * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com>
    5  *
    6  * This library is free software; you can redistribute it and/or
    7  * modify it under the terms of the GNU Lesser General Public
    8  * License as published by the Free Software Foundation:
    9  * version 2.1 of the License.
    10  *
    11  * This library is distributed in the hope that it will be useful,
    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14  * Lesser General Public License for more details.
    15  *
    16  * You should have received a copy of the GNU Lesser General Public
    17  * License along with this library; if not, write to the Free Software
    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    19  * MA 02110-1301 USA
    20  */
    21 
    24 #ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    25 #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    26 
    27 #ifdef __cplusplus
    28 #include <cstddef>
    29 #include <cstdarg>
    30 #ifdef MBED_OPERATORS
    31 #include "mbed-drivers/mbed.h"
    32 #include "sal-iface-eth/EthernetInterface.h"
    33 #include "sockets/TCPListener.h"
    34 #include "sal-stack-lwip/lwipv4_init.h"
    35 
    36 namespace {
    37 }
    38 using namespace mbed::Sockets::v0;
    39 
    40 
    41 struct sockaddr_in;
    42 struct lws;
    43 
    44 class lws_conn {
    45  public:
    46  lws_conn():
    47  ts(NULL),
    48  wsi(NULL),
    49  writeable(1),
    50  awaiting_on_writeable(0)
    51  {
    52  }
    53 
    54 public:
    55  void set_wsi(struct lws *_wsi) { wsi = _wsi; }
    56  int actual_onRX(Socket *s);
    57  void onRX(Socket *s);
    58  void onError(Socket *s, socket_error_t err);
    59  void onDisconnect(TCPStream *s);
    60  void onSent(Socket *s, uint16_t len);
    61  void serialized_writeable(struct lws *wsi);
    62 
    63 public:
    64  TCPStream *ts;
    65 
    66 public:
    67  struct lws *wsi;
    68  char writeable;
    69  char awaiting_on_writeable;
    70 };
    71 
    73 public:
    75  srv(SOCKET_STACK_LWIP_IPV4)
    76  {
    77  srv.setOnError(TCPStream::ErrorHandler_t(this,
    79  }
    80 
    81  void start(const uint16_t port);
    83 protected:
    84  void onRX(Socket *s);
    85  void onError(Socket *s, socket_error_t err);
    86  void onIncoming(TCPListener *s, void *impl);
    87  void onDisconnect(TCPStream *s);
    89 public:
    90  TCPListener srv;
    91 };
    92 
    93 #endif
    94 
    95 extern "C" {
    96 #else
    97 #include <stdarg.h>
    98 #endif
    99 
    100 #if defined(MBED_OPERATORS) || defined(LWS_WITH_ESP8266)
    101 struct sockaddr_in;
    102 #define LWS_POSIX 0
    103 #else
    104 #define LWS_POSIX 1
    105 #endif
    106 
    107 #include "lws_config.h"
    108 
    109 #if defined(WIN32) || defined(_WIN32)
    110 #ifndef WIN32_LEAN_AND_MEAN
    111 #define WIN32_LEAN_AND_MEAN
    112 #endif
    113 
    114 #include <winsock2.h>
    115 #include <ws2tcpip.h>
    116 #include <stddef.h>
    117 #include <basetsd.h>
    118 #ifndef _WIN32_WCE
    119 #include <stdint.h>
    120 #include <fcntl.h>
    121 #else
    122 #define _O_RDONLY 0x0000
    123 #define O_RDONLY _O_RDONLY
    124 #endif
    125 
    126 // Visual studio older than 2015 and WIN_CE has only _stricmp
    127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    128 #define strcasecmp _stricmp
    129 #else
    130 #define strcasecmp stricmp
    131 #endif
    132 #define getdtablesize() 30000
    133 
    134 #define LWS_INLINE __inline
    135 #define LWS_VISIBLE
    136 #define LWS_WARN_UNUSED_RESULT
    137 #define LWS_WARN_DEPRECATED
    138 
    139 #ifdef LWS_DLL
    140 #ifdef LWS_INTERNAL
    141 #define LWS_EXTERN extern __declspec(dllexport)
    142 #else
    143 #define LWS_EXTERN extern __declspec(dllimport)
    144 #endif
    145 #else
    146 #define LWS_EXTERN
    147 #endif
    148 
    149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    150 #define LWS_O_RDONLY _O_RDONLY
    151 
    152 #if !defined(_MSC_VER) || _MSC_VER < 1900 /* Visual Studio 2015 already defines this in <stdio.h> */
    153 #define snprintf _snprintf
    154 #endif
    155 
    156 #ifndef __func__
    157 #define __func__ __FUNCTION__
    158 #endif
    159 
    160 #else /* NOT WIN32 */
    161 #include <unistd.h>
    162 
    163 #if defined(__NetBSD__) || defined(__FreeBSD__)
    164 #include <netinet/in.h>
    165 #endif
    166 
    167 #define LWS_INLINE inline
    168 #define LWS_O_RDONLY O_RDONLY
    169 
    170 #if !defined(MBED_OPERATORS) && !defined(LWS_WITH_ESP8266)
    171 #include <poll.h>
    172 #include <netdb.h>
    173 #define LWS_INVALID_FILE -1
    174 #else
    175 #define getdtablesize() (20)
    176 #define LWS_INVALID_FILE NULL
    177 #endif
    178 
    179 #if defined(__GNUC__)
    180 
    181 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    184 #else
    185 #define LWS_WARN_UNUSED_RESULT
    186 #endif
    187 
    188 #define LWS_VISIBLE __attribute__((visibility("default")))
    189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    190 #else
    191 #define LWS_VISIBLE
    192 #define LWS_WARN_UNUSED_RESULT
    193 #define LWS_WARN_DEPRECATED
    194 #endif
    195 
    196 #if defined(__ANDROID__)
    197 #include <unistd.h>
    198 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    199 #endif
    200 
    201 #endif
    202 
    203 #ifdef LWS_USE_LIBEV
    204 #include <ev.h>
    205 #endif /* LWS_USE_LIBEV */
    206 #ifdef LWS_USE_LIBUV
    207 #include <uv.h>
    208 #endif /* LWS_USE_LIBUV */
    209 
    210 #ifndef LWS_EXTERN
    211 #define LWS_EXTERN extern
    212 #endif
    213 
    214 #ifdef _WIN32
    215 #define random rand
    216 #else
    217 #include <sys/time.h>
    218 #include <unistd.h>
    219 #endif
    220 
    221 #ifdef LWS_OPENSSL_SUPPORT
    222 
    223 #ifdef USE_WOLFSSL
    224 #ifdef USE_OLD_CYASSL
    225 #include <cyassl/openssl/ssl.h>
    226 #include <cyassl/error-ssl.h>
    227 #else
    228 #include <wolfssl/openssl/ssl.h>
    229 #include <wolfssl/error-ssl.h>
    230 #endif /* not USE_OLD_CYASSL */
    231 #else
    232 #if defined(LWS_USE_POLARSSL)
    233 #include <polarssl/ssl.h>
    235  x509_crt ca;
    236  x509_crt certificate;
    237  rsa_context key;
    238 };
    239 typedef struct lws_polarssl_context SSL_CTX;
    240 typedef ssl_context SSL;
    241 #else
    242 #if defined(LWS_USE_MBEDTLS)
    243 #include <mbedtls/ssl.h>
    244 #else
    245 #include <openssl/ssl.h>
    246 #include <openssl/err.h>
    247 #endif /* not USE_MBEDTLS */
    248 #endif /* not USE_POLARSSL */
    249 #endif /* not USE_WOLFSSL */
    250 #endif
    251 
    252 
    253 #define CONTEXT_PORT_NO_LISTEN -1
    254 
    265 
    267 enum lws_log_levels {
    268  LLL_ERR = 1 << 0,
    269  LLL_WARN = 1 << 1,
    270  LLL_NOTICE = 1 << 2,
    271  LLL_INFO = 1 << 3,
    272  LLL_DEBUG = 1 << 4,
    273  LLL_PARSER = 1 << 5,
    274  LLL_HEADER = 1 << 6,
    275  LLL_EXT = 1 << 7,
    276  LLL_CLIENT = 1 << 8,
    277  LLL_LATENCY = 1 << 9,
    278 
    279  LLL_COUNT = 10 /* set to count of valid flags */
    280 };
    281 
    282 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    283 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    293 LWS_VISIBLE LWS_EXTERN int
    294 lwsl_timestamp(int level, char *p, int len);
    295 
    296 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    297 
    298 #if !defined(LWS_WITH_NO_LOGS)
    299 /* notice, warn and log are always compiled in */
    300 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    301 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    302 #endif
    303 /*
    304  * weaker logging can be deselected at configure time using --disable-debug
    305  * that gets rid of the overhead of checking while keeping _warn and _err
    306  * active
    307  */
    308 
    309 #if defined(LWS_WITH_ESP8266)
    310 #undef _DEBUG
    311 #endif
    312 
    313 #ifdef _DEBUG
    314 #if defined(LWS_WITH_NO_LOGS)
    315 /* notice, warn and log are always compiled in */
    316 //#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    317 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    318 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    319 #endif
    320 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    321 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    322 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    323 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    324 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    325 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    326 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    327 
    333 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    334 
    335 #else /* no debug */
    336 #if defined(LWS_WITH_NO_LOGS)
    337 //#define lwsl_err(...) do {} while(0)
    338 #define lwsl_warn(...) do {} while(0)
    339 #define lwsl_notice(...) do {} while(0)
    340 #endif
    341 #define lwsl_info(...) do {} while(0)
    342 #define lwsl_debug(...) do {} while(0)
    343 #define lwsl_parser(...) do {} while(0)
    344 #define lwsl_header(...) do {} while(0)
    345 #define lwsl_ext(...) do {} while(0)
    346 #define lwsl_client(...) do {} while(0)
    347 #define lwsl_latency(...) do {} while(0)
    348 #define lwsl_hexdump(a, b)
    349 
    350 #endif
    351 
    362 LWS_VISIBLE LWS_EXTERN void
    363 lws_set_log_level(int level,
    364  void (*log_emit_function)(int level, const char *line));
    365 
    375 LWS_VISIBLE LWS_EXTERN void
    376 lwsl_emit_syslog(int level, const char *line);
    377 
    379 
    380 
    381 #include <stddef.h>
    382 
    383 #ifndef lws_container_of
    384 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    385 #endif
    386 
    387 
    388 struct lws;
    389 #ifndef ARRAY_SIZE
    390 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    391 #endif
    392 
    393 /* api change list for user code to test against */
    394 
    395 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    396 
    397 /* the struct lws_protocols has the id field present */
    398 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    399 
    400 /* you can call lws_get_peer_write_allowance */
    401 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    402 
    403 /* extra parameter introduced in 917f43ab821 */
    404 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    405 
    406 /* File operations stuff exists */
    407 #define LWS_FEATURE_FOPS
    408 
    409 
    410 #if defined(_WIN32)
    411 typedef SOCKET lws_sockfd_type;
    412 typedef HANDLE lws_filefd_type;
    413 #define lws_sockfd_valid(sfd) (!!sfd)
    414 struct lws_pollfd {
    415  lws_sockfd_type fd;
    416  SHORT events;
    417  SHORT revents;
    418 };
    419 #define LWS_POLLHUP (FD_CLOSE)
    420 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    421 #define LWS_POLLOUT (FD_WRITE)
    422 #else
    423 
    424 #if defined(MBED_OPERATORS)
    425 /* it's a class lws_conn * */
    426 typedef void * lws_sockfd_type;
    427 typedef void * lws_filefd_type;
    428 #define lws_sockfd_valid(sfd) (!!sfd)
    429 struct pollfd {
    430  lws_sockfd_type fd;
    431  short events;
    432  short revents;
    433 };
    434 #define POLLIN 0x0001
    435 #define POLLPRI 0x0002
    436 #define POLLOUT 0x0004
    437 #define POLLERR 0x0008
    438 #define POLLHUP 0x0010
    439 #define POLLNVAL 0x0020
    440 
    441 struct lws;
    442 
    443 void * mbed3_create_tcp_stream_socket(void);
    444 void mbed3_delete_tcp_stream_socket(void *sockfd);
    445 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    446 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    447 #else
    448 #if defined(LWS_WITH_ESP8266)
    449 
    450 #include <user_interface.h>
    451 #include <espconn.h>
    452 
    453 typedef struct espconn * lws_sockfd_type;
    454 typedef void * lws_filefd_type;
    455 #define lws_sockfd_valid(sfd) (!!sfd)
    456 struct pollfd {
    457  lws_sockfd_type fd;
    458  short events;
    459  short revents;
    460 };
    461 #define POLLIN 0x0001
    462 #define POLLPRI 0x0002
    463 #define POLLOUT 0x0004
    464 #define POLLERR 0x0008
    465 #define POLLHUP 0x0010
    466 #define POLLNVAL 0x0020
    467 
    468 struct lws_vhost;
    469 
    470 lws_sockfd_type esp8266_create_tcp_listen_socket(struct lws_vhost *vh);
    471 void esp8266_tcp_stream_accept(lws_sockfd_type fd, struct lws *wsi);
    472 
    473 #include <os_type.h>
    474 #include <osapi.h>
    475 #include "ets_sys.h"
    476 
    477 int ets_snprintf(char *str, size_t size, const char *format, ...);
    478 #define snprintf ets_snprintf
    479 
    480 typedef os_timer_t uv_timer_t;
    481 typedef void uv_cb_t(uv_timer_t *);
    482 
    483 void os_timer_disarm(void *);
    484 void os_timer_setfn(os_timer_t *, os_timer_func_t *, void *);
    485 
    486 void ets_timer_arm_new(os_timer_t *, int, int, int);
    487 
    488 //void os_timer_arm(os_timer_t *, int, int);
    489 
    490 #define UV_VERSION_MAJOR 1
    491 
    492 #define lws_uv_getloop(a, b) (NULL)
    493 
    494 static inline void uv_timer_init(void *l, uv_timer_t *t)
    495 {
    496  (void)l;
    497  memset(t, 0, sizeof(*t));
    498  os_timer_disarm(t);
    499 }
    500 
    501 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
    502 {
    503  os_timer_setfn(t, (os_timer_func_t *)cb, t);
    504  /* ms, repeat */
    505  os_timer_arm(t, first, !!rep);
    506 }
    507 
    508 static inline void uv_timer_stop(uv_timer_t *t)
    509 {
    510  os_timer_disarm(t);
    511 }
    512 
    513 #else
    514 typedef int lws_sockfd_type;
    515 typedef int lws_filefd_type;
    516 #define lws_sockfd_valid(sfd) (sfd >= 0)
    517 #endif
    518 #endif
    519 
    520 #define lws_pollfd pollfd
    521 #define LWS_POLLHUP (POLLHUP|POLLERR)
    522 #define LWS_POLLIN (POLLIN)
    523 #define LWS_POLLOUT (POLLOUT)
    524 #endif
    525 
    528 struct lws_pollargs {
    529  lws_sockfd_type fd;
    530  int events;
    532 };
    533 
    534 struct lws_tokens;
    535 struct lws_token_limits;
    536 
    544 
    546 /*
    547  * NOTE: These public enums are part of the abi. If you want to add one,
    548  * add it at where specified so existing users are unaffected.
    549  */
    552  LWS_CLOSE_STATUS_NOSTATUS = 0,
    614  /****** add new things just above ---^ ******/
    615 
    616  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    617 };
    618 
    631 LWS_VISIBLE LWS_EXTERN void
    632 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    633  unsigned char *buf, size_t len);
    634 
    636 
    637 struct lws;
    638 struct lws_context;
    639 /* needed even with extensions disabled for create context */
    640 struct lws_extension;
    641 
    653 
    655 
    656 /*
    657  * NOTE: These public enums are part of the abi. If you want to add one,
    658  * add it at where specified so existing users are unaffected.
    659  */
    903  /* external poll() management support */
    966  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    969  LWS_CALLBACK_CGI = 40,
    971  LWS_CALLBACK_CGI_TERMINATED = 41,
    973  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    975  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    977  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    979  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    981  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    983  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    985  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    987  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    989  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    991  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    993  LWS_CALLBACK_PROCESS_HTML = 52,
    995  LWS_CALLBACK_ADD_HEADERS = 53,
    997  LWS_CALLBACK_SESSION_INFO = 54,
    1000  LWS_CALLBACK_GS_EVENT = 55,
    1008  /****** add new things just above ---^ ******/
    1009 
    1012 };
    1013 
    1014 
    1015 
    1031 typedef int
    1032 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    1033  void *user, void *in, size_t len);
    1035 
    1045 
    1047 /*
    1048  * NOTE: These public enums are part of the abi. If you want to add one,
    1049  * add it at where specified so existing users are unaffected.
    1050  */
    1051 enum lws_extension_callback_reasons {
    1052  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    1053  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    1054  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    1055  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    1056  LWS_EXT_CB_CONSTRUCT = 4,
    1057  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    1058  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    1059  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    1060  LWS_EXT_CB_DESTROY = 8,
    1061  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    1062  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    1063  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    1064  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    1065  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    1066  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    1067  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    1068  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    1069  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    1070  LWS_EXT_CB_1HZ = 18,
    1071  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    1072  LWS_EXT_CB_IS_WRITEABLE = 20,
    1073  LWS_EXT_CB_PAYLOAD_TX = 21,
    1074  LWS_EXT_CB_PAYLOAD_RX = 22,
    1075  LWS_EXT_CB_OPTION_DEFAULT = 23,
    1076  LWS_EXT_CB_OPTION_SET = 24,
    1077  LWS_EXT_CB_OPTION_CONFIRM = 25,
    1078  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    1079 
    1080  /****** add new things just above ---^ ******/
    1081 };
    1082 
    1089  /* Add new things just above here ---^
    1090  * This is part of the ABI, don't needlessly break compatibility */
    1091 };
    1092 
    1098  const char *name;
    1101  /* Add new things just above here ---^
    1102  * This is part of the ABI, don't needlessly break compatibility */
    1103 };
    1104 
    1107  const char *option_name;
    1109  const char *start;
    1110  int len;
    1111 };
    1112 
    1173 typedef int
    1174 lws_extension_callback_function(struct lws_context *context,
    1175  const struct lws_extension *ext, struct lws *wsi,
    1176  enum lws_extension_callback_reasons reason,
    1177  void *user, void *in, size_t len);
    1178 
    1181  const char *name;
    1183  const char *client_offer;
    1185  /* Add new things just above here ---^
    1186  * This is part of the ABI, don't needlessly break compatibility */
    1187 };
    1188 
    1197 LWS_VISIBLE LWS_EXTERN int
    1198 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1199  const char *opt_name, const char *opt_val);
    1200 
    1201 #ifndef LWS_NO_EXTENSIONS
    1202 /* lws_get_internal_extensions() - DEPRECATED
    1203  *
    1204  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1205  * by user code along with application-specific settings. See the test
    1206  * client and server for how to do.
    1207  */
    1208 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1209 lws_get_internal_extensions() { return NULL; }
    1210 
    1221 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1222 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1223  void *ext_user, const struct lws_ext_options *opts,
    1224  const char *o, int len);
    1225 #endif
    1226 
    1239 LWS_EXTERN
    1241  struct lws_context *context, const struct lws_extension *ext,
    1242  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1243  void *user, void *in, size_t len);
    1244 
    1245 /*
    1246  * The internal exts are part of the public abi
    1247  * If we add more extensions, publish the callback here ------v
    1248  */
    1250 
    1266 
    1271  const char *name;
    1292  unsigned int id;
    1299  void *user;
    1302  /* Add new things just above here ---^
    1303  * This is part of the ABI, don't needlessly break compatibility */
    1304 };
    1305 
    1306 struct lws_vhost;
    1307 
    1316 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1317 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1318 
    1328 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1329 lws_get_protocol(struct lws *wsi);
    1330 
    1332 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1333 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1334 
    1345 LWS_VISIBLE LWS_EXTERN void *
    1346 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1347  int size);
    1348 
    1358 LWS_VISIBLE LWS_EXTERN void *
    1359 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1360 
    1369 LWS_VISIBLE LWS_EXTERN int
    1370 lws_finalize_startup(struct lws_context *context);
    1371 
    1372 #ifdef LWS_WITH_PLUGINS
    1373 
    1374 /* PLUGINS implies LIBUV */
    1375 
    1376 #define LWS_PLUGIN_API_MAGIC 180
    1377 
    1380  unsigned int api_magic;
    1381  const struct lws_protocols *protocols;
    1383  const struct lws_extension *extensions;
    1385 };
    1386 
    1387 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1388  struct lws_plugin_capability *);
    1389 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1390 
    1392 struct lws_plugin {
    1393  struct lws_plugin *list;
    1394 #if (UV_VERSION_MAJOR > 0)
    1395  uv_lib_t lib;
    1396 #else
    1397  void *l;
    1398 #endif
    1399  char name[64];
    1401 };
    1402 
    1403 #endif
    1404 
    1406 
    1407 
    1416 
    1418 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1419 
    1421 /* SHA-1 binary and hexified versions */
    1423 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1425 typedef struct { char id[41]; } lwsgw_hash;
    1426 
    1433 };
    1434 
    1437  char username[32];
    1438  char email[100];
    1439  char ip[72];
    1440  unsigned int mask;
    1442  char session[42];
    1443 };
    1444 
    1449 };
    1450 
    1453  enum lws_gs_event event;
    1454  const char *username;
    1455  const char *email;
    1456 };
    1457 
    1459 
    1460 
    1474 
    1476 /*
    1477  * NOTE: These public enums are part of the abi. If you want to add one,
    1478  * add it at where specified so existing users are unaffected.
    1479  */
    1480 
    1484  (1 << 12),
    1491  (1 << 12),
    1507  (1 << 12),
    1512  (1 << 12),
    1530  /****** add new things just above ---^ ******/
    1531 };
    1532 
    1533 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1534 
    1545  int port;
    1550  const char *iface;
    1557  const struct lws_protocols *protocols;
    1561  const struct lws_extension *extensions;
    1569  const char *ssl_cert_filepath;
    1579  const char *ssl_ca_filepath;
    1581  const char *ssl_cipher_list;
    1585  const char *http_proxy_address;
    1588  unsigned int http_proxy_port;
    1590  int gid;
    1592  int uid;
    1594  unsigned int options;
    1596  void *user;
    1599  int ka_time;
    1609 #ifdef LWS_OPENSSL_SUPPORT
    1615 #else /* maintain structure layout either way */
    1617 #endif
    1618 
    1629  unsigned int count_threads;
    1631  unsigned int fd_limit_per_thread;
    1635  unsigned int timeout_secs;
    1640  const char *ecdh_curve;
    1642  const char *vhost_name;
    1646  const char * const *plugin_dirs;
    1655  const char *log_filepath;
    1658  const struct lws_http_mount *mounts;
    1660  const char *server_string;
    1663  unsigned int pt_serv_buf_size;
    1678  unsigned short ws_ping_pong_interval;
    1691  /* Add new things just above here ---^
    1692  * This is part of the ABI, don't needlessly break compatibility
    1693  *
    1694  * The below is to ensure later library versions with new
    1695  * members added above will see 0 (default) even if the app
    1696  * was not built against the newer headers.
    1697  */
    1698 
    1699  void *_unused[8];
    1700 };
    1701 
    1736 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1738 
    1747 LWS_VISIBLE LWS_EXTERN void
    1748 lws_context_destroy(struct lws_context *context);
    1749 
    1767 LWS_VISIBLE LWS_EXTERN int
    1768 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1769 
    1770 
    1771 struct lws_vhost;
    1772 
    1782 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1783 lws_create_vhost(struct lws_context *context,
    1784  struct lws_context_creation_info *info);
    1785 
    1800 LWS_VISIBLE LWS_EXTERN int
    1801 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1802  char **config_strings, int *len);
    1803 
    1819 LWS_VISIBLE LWS_EXTERN int
    1820 lwsws_get_config_vhosts(struct lws_context *context,
    1821  struct lws_context_creation_info *info, const char *d,
    1822  char **config_strings, int *len);
    1823 
    1825 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1826 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1827 
    1833 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1834 lws_get_vhost(struct lws *wsi);
    1835 
    1843 LWS_VISIBLE LWS_EXTERN int
    1844 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1845 
    1853 LWS_VISIBLE LWS_EXTERN int
    1854 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1855 
    1865 LWS_VISIBLE LWS_EXTERN void *
    1866 lws_context_user(struct lws_context *context);
    1867 
    1873 
    1883  const char *name;
    1884  const char *value;
    1885 };
    1886 
    1899 };
    1900 
    1908  const char *mountpoint;
    1910  const char *origin;
    1912  const char *def;
    1914  const char *protocol;
    1930  unsigned int auth_mask;
    1933  unsigned int cache_reusable:1;
    1934  unsigned int cache_revalidate:1;
    1935  unsigned int cache_intermediaries:1;
    1937  unsigned char origin_protocol;
    1938  unsigned char mountpoint_len;
    1939 };
    1942 
    1948 
    1956  LCCSCF_USE_SSL = (1 << 0),
    1957  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1958  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1959 };
    1960 
    1965  struct lws_context *context;
    1967  const char *address;
    1969  int port;
    1973  const char *path;
    1975  const char *host;
    1977  const char *origin;
    1979  const char *protocol;
    1983  void *userdata;
    1987  const char *method;
    1990  struct lws *parent_wsi;
    1994  const char *uri_replace_from;
    1997  const char *uri_replace_to;
    1999  struct lws_vhost *vhost;
    2001  struct lws **pwsi;
    2013  /* Add new things just above here ---^
    2014  * This is part of the ABI, don't needlessly break compatibility
    2015  *
    2016  * The below is to ensure later library versions with new
    2017  * members added above will see 0 (default) even if the app
    2018  * was not built against the newer headers.
    2019  */
    2020 
    2021  void *_unused[4];
    2022 };
    2023 
    2031 LWS_VISIBLE LWS_EXTERN struct lws *
    2033 
    2054 /* deprecated, use lws_client_connect_via_info() */
    2055 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2056 lws_client_connect(struct lws_context *clients, const char *address,
    2057  int port, int ssl_connection, const char *path,
    2058  const char *host, const char *origin, const char *protocol,
    2059  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    2060 /* deprecated, use lws_client_connect_via_info() */
    2081 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2082 lws_client_connect_extended(struct lws_context *clients, const char *address,
    2083  int port, int ssl_connection, const char *path,
    2084  const char *host, const char *origin,
    2085  const char *protocol, int ietf_version_or_minus_one,
    2086  void *userdata) LWS_WARN_DEPRECATED;
    2087 
    2113 LWS_VISIBLE LWS_EXTERN int
    2115  struct lws_vhost *vhost);
    2116 
    2117 LWS_VISIBLE LWS_EXTERN int
    2118 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2120 
    2128 
    2161 LWS_VISIBLE LWS_EXTERN int
    2162 lws_service(struct lws_context *context, int timeout_ms);
    2163 
    2175 LWS_VISIBLE LWS_EXTERN int
    2176 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2177 
    2193 LWS_VISIBLE LWS_EXTERN void
    2194 lws_cancel_service_pt(struct lws *wsi);
    2195 
    2207 LWS_VISIBLE LWS_EXTERN void
    2208 lws_cancel_service(struct lws_context *context);
    2209 
    2232 LWS_VISIBLE LWS_EXTERN int
    2233 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2234 
    2244 LWS_VISIBLE LWS_EXTERN int
    2245 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2246  int tsi);
    2247 
    2249 
    2255 
    2262 
    2274 LWS_VISIBLE LWS_EXTERN const char *
    2275 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2276 
    2295 LWS_VISIBLE LWS_EXTERN int
    2296 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2297  const char *other_headers, int other_headers_len);
    2298 LWS_VISIBLE LWS_EXTERN int
    2299 lws_serve_http_file_fragment(struct lws *wsi);
    2301 
    2312 
    2313 enum http_status {
    2314  HTTP_STATUS_OK = 200,
    2315  HTTP_STATUS_NO_CONTENT = 204,
    2316 
    2317  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2318  HTTP_STATUS_FOUND = 302,
    2319  HTTP_STATUS_SEE_OTHER = 303,
    2320 
    2321  HTTP_STATUS_BAD_REQUEST = 400,
    2322  HTTP_STATUS_UNAUTHORIZED,
    2323  HTTP_STATUS_PAYMENT_REQUIRED,
    2324  HTTP_STATUS_FORBIDDEN,
    2325  HTTP_STATUS_NOT_FOUND,
    2326  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2327  HTTP_STATUS_NOT_ACCEPTABLE,
    2328  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2329  HTTP_STATUS_REQUEST_TIMEOUT,
    2330  HTTP_STATUS_CONFLICT,
    2331  HTTP_STATUS_GONE,
    2332  HTTP_STATUS_LENGTH_REQUIRED,
    2333  HTTP_STATUS_PRECONDITION_FAILED,
    2334  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2335  HTTP_STATUS_REQ_URI_TOO_LONG,
    2336  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2337  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2338  HTTP_STATUS_EXPECTATION_FAILED,
    2339 
    2340  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2341  HTTP_STATUS_NOT_IMPLEMENTED,
    2342  HTTP_STATUS_BAD_GATEWAY,
    2343  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2344  HTTP_STATUS_GATEWAY_TIMEOUT,
    2345  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2346 };
    2347 
    2349  char *p;
    2350  int len;
    2351  int max_len;
    2352  int final;
    2353 };
    2354 
    2355 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2356 
    2358  char *start;
    2359  char swallow[16];
    2360  int pos;
    2361  void *data;
    2362  const char * const *vars;
    2365  lws_process_html_state_cb replace;
    2366 };
    2367 
    2372 LWS_VISIBLE LWS_EXTERN int
    2374  struct lws_process_html_state *s);
    2376 
    2409 
    2417 struct lws_tokens {
    2418  char *token;
    2420 };
    2421 
    2422 /* enum lws_token_indexes
    2423  * these have to be kept in sync with lextable.h / minilex.c
    2424  *
    2425  * NOTE: These public enums are part of the abi. If you want to add one,
    2426  * add it at where specified so existing users are unaffected.
    2427  */
    2428 enum lws_token_indexes {
    2429  WSI_TOKEN_GET_URI = 0,
    2430  WSI_TOKEN_POST_URI = 1,
    2431  WSI_TOKEN_OPTIONS_URI = 2,
    2432  WSI_TOKEN_HOST = 3,
    2433  WSI_TOKEN_CONNECTION = 4,
    2434  WSI_TOKEN_UPGRADE = 5,
    2435  WSI_TOKEN_ORIGIN = 6,
    2436  WSI_TOKEN_DRAFT = 7,
    2437  WSI_TOKEN_CHALLENGE = 8,
    2438  WSI_TOKEN_EXTENSIONS = 9,
    2439  WSI_TOKEN_KEY1 = 10,
    2440  WSI_TOKEN_KEY2 = 11,
    2441  WSI_TOKEN_PROTOCOL = 12,
    2442  WSI_TOKEN_ACCEPT = 13,
    2443  WSI_TOKEN_NONCE = 14,
    2444  WSI_TOKEN_HTTP = 15,
    2445  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2446  WSI_TOKEN_HTTP_ACCEPT = 17,
    2447  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2448  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2449  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2450  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2451  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2452  WSI_TOKEN_HTTP_PRAGMA = 23,
    2453  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2454  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2455  WSI_TOKEN_HTTP_COOKIE = 26,
    2456  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2457  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2458  WSI_TOKEN_HTTP_DATE = 29,
    2459  WSI_TOKEN_HTTP_RANGE = 30,
    2460  WSI_TOKEN_HTTP_REFERER = 31,
    2461  WSI_TOKEN_KEY = 32,
    2462  WSI_TOKEN_VERSION = 33,
    2463  WSI_TOKEN_SWORIGIN = 34,
    2464 
    2465  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2466  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2467  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2468  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2469  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2470 
    2471  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2472  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2473  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2474  WSI_TOKEN_HTTP_AGE = 43,
    2475  WSI_TOKEN_HTTP_ALLOW = 44,
    2476  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2477  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2478  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2479  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2480  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2481  WSI_TOKEN_HTTP_ETAG = 50,
    2482  WSI_TOKEN_HTTP_EXPECT = 51,
    2483  WSI_TOKEN_HTTP_EXPIRES = 52,
    2484  WSI_TOKEN_HTTP_FROM = 53,
    2485  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2486  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2487  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2488  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2489  WSI_TOKEN_HTTP_LINK = 58,
    2490  WSI_TOKEN_HTTP_LOCATION = 59,
    2491  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2492  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2493  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2494  WSI_TOKEN_HTTP_REFRESH = 63,
    2495  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2496  WSI_TOKEN_HTTP_SERVER = 65,
    2497  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2498  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2499  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2500  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2501  WSI_TOKEN_HTTP_VARY = 70,
    2502  WSI_TOKEN_HTTP_VIA = 71,
    2503  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2504 
    2505  WSI_TOKEN_PATCH_URI = 73,
    2506  WSI_TOKEN_PUT_URI = 74,
    2507  WSI_TOKEN_DELETE_URI = 75,
    2508 
    2509  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2510  WSI_TOKEN_PROXY = 77,
    2511  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2512  WSI_TOKEN_HTTP1_0 = 79,
    2513 
    2514  /****** add new things just above ---^ ******/
    2515 
    2516  /* use token storage to stash these internally, not for
    2517  * user use */
    2518 
    2519  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2520  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2521  _WSI_TOKEN_CLIENT_URI,
    2522  _WSI_TOKEN_CLIENT_HOST,
    2523  _WSI_TOKEN_CLIENT_ORIGIN,
    2524  _WSI_TOKEN_CLIENT_METHOD,
    2525 
    2526  /* always last real token index*/
    2527  WSI_TOKEN_COUNT,
    2528 
    2529  /* parser state additions, no storage associated */
    2530  WSI_TOKEN_NAME_PART,
    2531  WSI_TOKEN_SKIPPING,
    2532  WSI_TOKEN_SKIPPING_SAW_CR,
    2533  WSI_PARSING_COMPLETE,
    2534  WSI_INIT_TOKEN_MUXURL,
    2535 };
    2536 
    2538  unsigned short token_limit[WSI_TOKEN_COUNT];
    2539 };
    2540 
    2546 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2547 lws_token_to_string(enum lws_token_indexes token);
    2548 
    2549 
    2558 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2559 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2560 
    2570 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2571 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2572 
    2586 LWS_VISIBLE LWS_EXTERN int
    2587 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2588 
    2606 LWS_VISIBLE LWS_EXTERN int
    2607 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2608  enum lws_token_indexes h, int frag_idx);
    2609 
    2620 LWS_VISIBLE LWS_EXTERN const char *
    2621 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2623 
    2638 
    2649 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2650 lws_add_http_header_status(struct lws *wsi,
    2651  unsigned int code, unsigned char **p,
    2652  unsigned char *end);
    2665 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2666 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2667  const unsigned char *value, int length,
    2668  unsigned char **p, unsigned char *end);
    2682 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2683 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2684  const unsigned char *value, int length,
    2685  unsigned char **p, unsigned char *end);
    2696 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2697 lws_add_http_header_content_length(struct lws *wsi,
    2698  unsigned long content_length,
    2699  unsigned char **p, unsigned char *end);
    2709 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2710 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2711  unsigned char *end);
    2713 
    2732 
    2742 };
    2743 
    2757 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2758  const char *filename, char *buf, int len,
    2759  enum lws_spa_fileupload_states state);
    2760 
    2763 struct lws_spa;
    2764 
    2783 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2784 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2785  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2786  void *opt_data);
    2787 
    2795 LWS_VISIBLE LWS_EXTERN int
    2796 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2797 
    2803 LWS_VISIBLE LWS_EXTERN int
    2804 lws_spa_finalize(struct lws_spa *spa);
    2805 
    2812 LWS_VISIBLE LWS_EXTERN int
    2813 lws_spa_get_length(struct lws_spa *spa, int n);
    2814 
    2820 LWS_VISIBLE LWS_EXTERN const char *
    2821 lws_spa_get_string(struct lws_spa *spa, int n);
    2822 
    2828 LWS_VISIBLE LWS_EXTERN int
    2829 lws_spa_destroy(struct lws_spa *spa);
    2831 
    2842 
    2853 LWS_VISIBLE LWS_EXTERN const char *
    2854 lws_urlencode(char *escaped, const char *string, int len);
    2855 
    2856 /*
    2857  * URLDECODE 1 / 2
    2858  *
    2859  * This simple urldecode only operates until the first '\0' and requires the
    2860  * data to exist all at once
    2861  */
    2874 LWS_VISIBLE LWS_EXTERN int
    2875 lws_urldecode(char *string, const char *escaped, int len);
    2877 
    2886 LWS_VISIBLE LWS_EXTERN int
    2887 lws_return_http_status(struct lws *wsi, unsigned int code,
    2888  const char *html_body);
    2889 
    2900 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2901 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    2902  unsigned char **p, unsigned char *end);
    2903 
    2912 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2913 lws_http_transaction_completed(struct lws *wsi);
    2915 
    2923 
    2934 LWS_VISIBLE LWS_EXTERN const char *
    2935 lws_sql_purify(char *escaped, const char *string, int len);
    2936 
    2947 LWS_VISIBLE LWS_EXTERN const char *
    2948 lws_json_purify(char *escaped, const char *string, int len);
    2950 
    2957 
    2959 #ifdef LWS_USE_LIBEV
    2960 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    2961 
    2962 LWS_VISIBLE LWS_EXTERN int
    2963 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    2964  lws_ev_signal_cb_t *cb);
    2965 
    2966 LWS_VISIBLE LWS_EXTERN int
    2967 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    2968 
    2969 LWS_VISIBLE LWS_EXTERN void
    2970 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    2971 #endif /* LWS_USE_LIBEV */
    2972 
    2974 
    2981 #ifdef LWS_USE_LIBUV
    2983 LWS_VISIBLE LWS_EXTERN int
    2984 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    2985  uv_signal_cb cb);
    2986 
    2987 LWS_VISIBLE LWS_EXTERN void
    2988 lws_libuv_run(const struct lws_context *context, int tsi);
    2989 
    2990 LWS_VISIBLE LWS_EXTERN void
    2991 lws_libuv_stop(struct lws_context *context);
    2992 
    2993 LWS_VISIBLE LWS_EXTERN int
    2994 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    2995 
    2996 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    2997 lws_uv_getloop(struct lws_context *context, int tsi);
    2998 
    2999 LWS_VISIBLE LWS_EXTERN void
    3000 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    3001 #endif /* LWS_USE_LIBUV */
    3002 
    3009 
    3010 /*
    3011  * NOTE: These public enums are part of the abi. If you want to add one,
    3012  * add it at where specified so existing users are unaffected.
    3013  */
    3014 enum pending_timeout {
    3015  NO_PENDING_TIMEOUT = 0,
    3016  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    3017  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    3018  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    3019  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    3020  PENDING_TIMEOUT_AWAITING_PING = 5,
    3021  PENDING_TIMEOUT_CLOSE_ACK = 6,
    3022  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    3023  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    3024  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    3025  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    3026  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    3027  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    3028  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    3029  PENDING_TIMEOUT_CGI = 14,
    3030  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    3031  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
    3032  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
    3033 
    3034  /****** add new things just above ---^ ******/
    3035 };
    3036 
    3046 LWS_VISIBLE LWS_EXTERN void
    3047 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    3049 
    3055 #if !defined(LWS_SIZEOFPTR)
    3056 #define LWS_SIZEOFPTR (sizeof (void *))
    3057 #endif
    3058 #if !defined(u_int64_t)
    3059 #define u_int64_t unsigned long long
    3060 #endif
    3061 
    3062 #if defined(__x86_64__)
    3063 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    3064 #else
    3065 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    3066 #endif
    3067 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    3068  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    3069 #define LWS_PRE _LWS_PAD(4 + 10)
    3070 /* used prior to 1.7 and retained for backward compatibility */
    3071 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    3072 #define LWS_SEND_BUFFER_POST_PADDING 0
    3073 
    3074 /*
    3075  * NOTE: These public enums are part of the abi. If you want to add one,
    3076  * add it at where specified so existing users are unaffected.
    3077  */
    3092  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3093  LWS_WRITE_PING = 5,
    3094  LWS_WRITE_PONG = 6,
    3095 
    3096  /* Same as write_http but we know this write ends the transaction */
    3097  LWS_WRITE_HTTP_FINAL = 7,
    3098 
    3099  /* HTTP2 */
    3100 
    3108  /****** add new things just above ---^ ******/
    3109 
    3110  /* flags */
    3111 
    3119 };
    3120 
    3121 
    3193 LWS_VISIBLE LWS_EXTERN int
    3194 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3195  enum lws_write_protocol protocol);
    3196 
    3197 /* helper for case where buffer may be const */
    3198 #define lws_write_http(wsi, buf, len) \
    3199  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3200 
    3202 
    3221 
    3234 LWS_VISIBLE LWS_EXTERN int
    3235 lws_callback_on_writable(struct lws *wsi);
    3236 
    3250 LWS_VISIBLE LWS_EXTERN int
    3251 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3252  const struct lws_protocols *protocol);
    3253 
    3267 LWS_VISIBLE LWS_EXTERN int
    3268 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3269  const struct lws_protocols *protocol);
    3270 
    3283 LWS_VISIBLE LWS_EXTERN int
    3284 lws_callback_all_protocol(struct lws_context *context,
    3285  const struct lws_protocols *protocol, int reason);
    3286 
    3299 LWS_VISIBLE LWS_EXTERN int
    3300 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3301  const struct lws_protocols *protocol, int reason);
    3302 
    3316 LWS_VISIBLE LWS_EXTERN int
    3317 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3318 
    3319 LWS_VISIBLE LWS_EXTERN int
    3320 lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,
    3321  void *user, void *in, size_t len);
    3322 
    3330 LWS_VISIBLE LWS_EXTERN int
    3331 lws_get_socket_fd(struct lws *wsi);
    3332 
    3354 LWS_VISIBLE LWS_EXTERN size_t
    3355 lws_get_peer_write_allowance(struct lws *wsi);
    3357 
    3368 LWS_VISIBLE LWS_EXTERN int
    3369 lws_rx_flow_control(struct lws *wsi, int enable);
    3370 
    3380 LWS_VISIBLE LWS_EXTERN void
    3381 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3382  const struct lws_protocols *protocol);
    3383 
    3400 LWS_VISIBLE LWS_EXTERN size_t
    3401 lws_remaining_packet_payload(struct lws *wsi);
    3402 
    3403 
    3412 
    3425 LWS_VISIBLE LWS_EXTERN struct lws *
    3426 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3449 LWS_VISIBLE LWS_EXTERN struct lws *
    3450 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3451  const char *readbuf, size_t len);
    3453 
    3459 
    3470 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3471 lws_canonical_hostname(struct lws_context *context);
    3472 
    3487 LWS_VISIBLE LWS_EXTERN void
    3488 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3489  int name_len, char *rip, int rip_len);
    3490 
    3501 LWS_VISIBLE LWS_EXTERN const char *
    3502 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3503 #ifndef LWS_WITH_ESP8266
    3504 
    3515 LWS_VISIBLE LWS_EXTERN int
    3516 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3517  size_t addrlen);
    3519 #endif
    3520 
    3526 
    3539 LWS_VISIBLE LWS_EXTERN int
    3540 lws_get_random(struct lws_context *context, void *buf, int len);
    3548 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3549 lws_daemonize(const char *_lock_path);
    3555 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3557 
    3564 LWS_VISIBLE LWS_EXTERN void *
    3565 lws_wsi_user(struct lws *wsi);
    3566 
    3578 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3579 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3580  const char **path);
    3581 
    3585 LWS_VISIBLE LWS_EXTERN unsigned long
    3586 lws_now_secs(void);
    3587 
    3597 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3598 lws_get_context(const struct lws *wsi);
    3599 
    3609 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3610 lws_get_count_threads(struct lws_context *context);
    3611 
    3619 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3620 lws_get_parent(const struct lws *wsi);
    3621 
    3628 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3629 lws_get_child(const struct lws *wsi);
    3630 
    3631 
    3632 /*
    3633  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3634  * It's provided in case it is
    3635  * useful when integrating with other app poll loop service code.
    3636  */
    3637 LWS_VISIBLE LWS_EXTERN int
    3638 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3639 
    3647 LWS_VISIBLE LWS_EXTERN void
    3648 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3650 
    3656 
    3663 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3664 lws_send_pipe_choked(struct lws *wsi);
    3665 
    3670 LWS_VISIBLE LWS_EXTERN int
    3671 lws_is_final_fragment(struct lws *wsi);
    3672 
    3677 LWS_VISIBLE LWS_EXTERN unsigned char
    3678 lws_get_reserved_bits(struct lws *wsi);
    3679 
    3696 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3697 lws_partial_buffered(struct lws *wsi);
    3698 
    3708 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3709 lws_frame_is_binary(struct lws *wsi);
    3710 
    3719 LWS_VISIBLE LWS_EXTERN int
    3720 lws_is_ssl(struct lws *wsi);
    3725 LWS_VISIBLE LWS_EXTERN int
    3726 lws_is_cgi(struct lws *wsi);
    3728 
    3729 
    3735 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3737 #define lws_SHA1 SHA1
    3738 #else
    3739 
    3748 LWS_VISIBLE LWS_EXTERN unsigned char *
    3749 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3750 #endif
    3751 
    3761 LWS_VISIBLE LWS_EXTERN int
    3762 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3772 LWS_VISIBLE LWS_EXTERN int
    3773 lws_b64_decode_string(const char *in, char *out, int out_size);
    3775 
    3776 
    3786 #ifdef LWS_WITH_CGI
    3787 enum lws_enum_stdinouterr {
    3788  LWS_STDIN = 0,
    3789  LWS_STDOUT = 1,
    3790  LWS_STDERR = 2,
    3791 };
    3792 
    3793 enum lws_cgi_hdr_state {
    3794  LCHS_HEADER,
    3795  LCHS_CR1,
    3796  LCHS_LF1,
    3797  LCHS_CR2,
    3798  LCHS_LF2,
    3799  LHCS_PAYLOAD,
    3800  LCHS_SINGLE_0A,
    3801 };
    3802 
    3804  struct lws **stdwsi;
    3805  enum lws_enum_stdinouterr ch;
    3806  unsigned char *data;
    3807  enum lws_cgi_hdr_state hdr_state;
    3808  int len;
    3809 };
    3810 
    3811 
    3821 LWS_VISIBLE LWS_EXTERN int
    3822 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3823  int script_uri_path_len, int timeout_secs,
    3824  const struct lws_protocol_vhost_options *mp_cgienv);
    3825 
    3831 LWS_VISIBLE LWS_EXTERN int
    3832 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3833 
    3839 LWS_VISIBLE LWS_EXTERN int
    3840 lws_cgi_kill(struct lws *wsi);
    3841 #endif
    3842 
    3844 
    3861 
    3868  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    3869  unsigned long *filelen, int flags);
    3873  int (*close)(struct lws *wsi, lws_filefd_type fd);
    3875  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    3876  long offset_from_cur_pos);
    3878  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3879  unsigned char *buf, unsigned long len);
    3881  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3882  unsigned char *buf, unsigned long len);
    3885  /* Add new things just above here ---^
    3886  * This is part of the ABI, don't needlessly break compatibility */
    3887 };
    3888 
    3894 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    3895 lws_get_fops(struct lws_context *context);
    3896 
    3905 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    3906 lws_plat_file_open(struct lws *wsi, const char *filename,
    3907  unsigned long *filelen, int flags)
    3908 {
    3909  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    3910  filelen, flags);
    3911 }
    3912 
    3919 static LWS_INLINE int
    3920 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    3921 {
    3922  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    3923 }
    3924 
    3932 static LWS_INLINE unsigned long
    3933 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    3934 {
    3935  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    3936 }
    3946 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3947 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3948  unsigned char *buf, unsigned long len)
    3949 {
    3950  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    3951  len);
    3952 }
    3962 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3963 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3964  unsigned char *buf, unsigned long len)
    3965 {
    3966  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    3967  len);
    3968 }
    3970 
    4002 #ifdef LWS_WITH_SMTP
    4003 
    4015 };
    4016 
    4018 struct lws_email {
    4019  void *data;
    4021  uv_loop_t *loop;
    4024  char email_smtp_ip[32];
    4025  char email_helo[32];
    4026  char email_from[100];
    4027  char email_to[100];
    4029  unsigned int max_content_size;
    4032  /* Fill all the callbacks before init */
    4033 
    4034  int (*on_next)(struct lws_email *email);
    4039  int (*on_sent)(struct lws_email *email);
    4044  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    4050  /* private things */
    4051  uv_timer_t timeout_email;
    4053  uv_connect_t email_connect_req;
    4054  uv_tcp_t email_client;
    4056  char email_buf[256];
    4057  char *content;
    4058 };
    4059 
    4069 LWS_VISIBLE LWS_EXTERN int
    4070 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    4071 
    4080 LWS_VISIBLE LWS_EXTERN void
    4081 lws_email_check(struct lws_email *email);
    4089 LWS_VISIBLE LWS_EXTERN void
    4090 lws_email_destroy(struct lws_email *email);
    4091 
    4092 #endif
    4093 
    4094 
    4095 #ifdef __cplusplus
    4096 }
    4097 #endif
    4098 
    4099 #endif
    LWS_VISIBLE LWS_EXTERN int lws_spa_destroy(struct lws_spa *spa)
    +Go to the documentation of this file.
    1 /*
    2  * libwebsockets - small server side websockets and web server implementation
    3  *
    4  * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com>
    5  *
    6  * This library is free software; you can redistribute it and/or
    7  * modify it under the terms of the GNU Lesser General Public
    8  * License as published by the Free Software Foundation:
    9  * version 2.1 of the License.
    10  *
    11  * This library is distributed in the hope that it will be useful,
    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14  * Lesser General Public License for more details.
    15  *
    16  * You should have received a copy of the GNU Lesser General Public
    17  * License along with this library; if not, write to the Free Software
    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    19  * MA 02110-1301 USA
    20  */
    21 
    24 #ifndef LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    25 #define LIBWEBSOCKET_H_3060898B846849FF9F88F5DB59B5950C
    26 
    27 #ifdef __cplusplus
    28 #include <cstddef>
    29 #include <cstdarg>
    30 #ifdef MBED_OPERATORS
    31 #include "mbed-drivers/mbed.h"
    32 #include "sal-iface-eth/EthernetInterface.h"
    33 #include "sockets/TCPListener.h"
    34 #include "sal-stack-lwip/lwipv4_init.h"
    35 
    36 namespace {
    37 }
    38 using namespace mbed::Sockets::v0;
    39 
    40 
    41 struct sockaddr_in;
    42 struct lws;
    43 
    44 class lws_conn {
    45  public:
    46  lws_conn():
    47  ts(NULL),
    48  wsi(NULL),
    49  writeable(1),
    50  awaiting_on_writeable(0)
    51  {
    52  }
    53 
    54 public:
    55  void set_wsi(struct lws *_wsi) { wsi = _wsi; }
    56  int actual_onRX(Socket *s);
    57  void onRX(Socket *s);
    58  void onError(Socket *s, socket_error_t err);
    59  void onDisconnect(TCPStream *s);
    60  void onSent(Socket *s, uint16_t len);
    61  void serialized_writeable(struct lws *wsi);
    62 
    63 public:
    64  TCPStream *ts;
    65 
    66 public:
    67  struct lws *wsi;
    68  char writeable;
    69  char awaiting_on_writeable;
    70 };
    71 
    73 public:
    75  srv(SOCKET_STACK_LWIP_IPV4)
    76  {
    77  srv.setOnError(TCPStream::ErrorHandler_t(this,
    79  }
    80 
    81  void start(const uint16_t port);
    83 protected:
    84  void onRX(Socket *s);
    85  void onError(Socket *s, socket_error_t err);
    86  void onIncoming(TCPListener *s, void *impl);
    87  void onDisconnect(TCPStream *s);
    89 public:
    90  TCPListener srv;
    91 };
    92 
    93 #endif
    94 
    95 extern "C" {
    96 #else
    97 #include <stdarg.h>
    98 #endif
    99 
    100 #if defined(MBED_OPERATORS) || defined(LWS_WITH_ESP8266)
    101 struct sockaddr_in;
    102 #define LWS_POSIX 0
    103 #else
    104 #define LWS_POSIX 1
    105 #endif
    106 
    107 #include "lws_config.h"
    108 
    109 #if defined(WIN32) || defined(_WIN32)
    110 #ifndef WIN32_LEAN_AND_MEAN
    111 #define WIN32_LEAN_AND_MEAN
    112 #endif
    113 
    114 #include <winsock2.h>
    115 #include <ws2tcpip.h>
    116 #include <stddef.h>
    117 #include <basetsd.h>
    118 #ifndef _WIN32_WCE
    119 #include <stdint.h>
    120 #include <fcntl.h>
    121 #else
    122 #define _O_RDONLY 0x0000
    123 #define O_RDONLY _O_RDONLY
    124 #endif
    125 
    126 // Visual studio older than 2015 and WIN_CE has only _stricmp
    127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    128 #define strcasecmp _stricmp
    129 #else
    130 #define strcasecmp stricmp
    131 #endif
    132 #define getdtablesize() 30000
    133 
    134 #define LWS_INLINE __inline
    135 #define LWS_VISIBLE
    136 #define LWS_WARN_UNUSED_RESULT
    137 #define LWS_WARN_DEPRECATED
    138 
    139 #ifdef LWS_DLL
    140 #ifdef LWS_INTERNAL
    141 #define LWS_EXTERN extern __declspec(dllexport)
    142 #else
    143 #define LWS_EXTERN extern __declspec(dllimport)
    144 #endif
    145 #else
    146 #define LWS_EXTERN
    147 #endif
    148 
    149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    150 #define LWS_O_RDONLY _O_RDONLY
    151 
    152 #if !defined(_MSC_VER) || _MSC_VER < 1900 /* Visual Studio 2015 already defines this in <stdio.h> */
    153 #define snprintf _snprintf
    154 #endif
    155 
    156 #ifndef __func__
    157 #define __func__ __FUNCTION__
    158 #endif
    159 
    160 #else /* NOT WIN32 */
    161 #include <unistd.h>
    162 
    163 #if defined(__NetBSD__) || defined(__FreeBSD__)
    164 #include <netinet/in.h>
    165 #endif
    166 
    167 #define LWS_INLINE inline
    168 #define LWS_O_RDONLY O_RDONLY
    169 
    170 #if !defined(MBED_OPERATORS) && !defined(LWS_WITH_ESP8266)
    171 #include <poll.h>
    172 #include <netdb.h>
    173 #define LWS_INVALID_FILE -1
    174 #else
    175 #define getdtablesize() (20)
    176 #define LWS_INVALID_FILE NULL
    177 #endif
    178 
    179 #if defined(__GNUC__)
    180 
    181 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    184 #else
    185 #define LWS_WARN_UNUSED_RESULT
    186 #endif
    187 
    188 #define LWS_VISIBLE __attribute__((visibility("default")))
    189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    190 #else
    191 #define LWS_VISIBLE
    192 #define LWS_WARN_UNUSED_RESULT
    193 #define LWS_WARN_DEPRECATED
    194 #endif
    195 
    196 #if defined(__ANDROID__)
    197 #include <unistd.h>
    198 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    199 #endif
    200 
    201 #endif
    202 
    203 #ifdef LWS_USE_LIBEV
    204 #include <ev.h>
    205 #endif /* LWS_USE_LIBEV */
    206 #ifdef LWS_USE_LIBUV
    207 #include <uv.h>
    208 #endif /* LWS_USE_LIBUV */
    209 
    210 #ifndef LWS_EXTERN
    211 #define LWS_EXTERN extern
    212 #endif
    213 
    214 #ifdef _WIN32
    215 #define random rand
    216 #else
    217 #include <sys/time.h>
    218 #include <unistd.h>
    219 #endif
    220 
    221 #ifdef LWS_OPENSSL_SUPPORT
    222 
    223 #ifdef USE_WOLFSSL
    224 #ifdef USE_OLD_CYASSL
    225 #include <cyassl/openssl/ssl.h>
    226 #include <cyassl/error-ssl.h>
    227 #else
    228 #include <wolfssl/openssl/ssl.h>
    229 #include <wolfssl/error-ssl.h>
    230 #endif /* not USE_OLD_CYASSL */
    231 #else
    232 #if defined(LWS_USE_POLARSSL)
    233 #include <polarssl/ssl.h>
    235  x509_crt ca;
    236  x509_crt certificate;
    237  rsa_context key;
    238 };
    239 typedef struct lws_polarssl_context SSL_CTX;
    240 typedef ssl_context SSL;
    241 #else
    242 #if defined(LWS_USE_MBEDTLS)
    243 #include <mbedtls/ssl.h>
    244 #else
    245 #include <openssl/ssl.h>
    246 #include <openssl/err.h>
    247 #endif /* not USE_MBEDTLS */
    248 #endif /* not USE_POLARSSL */
    249 #endif /* not USE_WOLFSSL */
    250 #endif
    251 
    252 
    253 #define CONTEXT_PORT_NO_LISTEN -1
    254 
    265 
    267 enum lws_log_levels {
    268  LLL_ERR = 1 << 0,
    269  LLL_WARN = 1 << 1,
    270  LLL_NOTICE = 1 << 2,
    271  LLL_INFO = 1 << 3,
    272  LLL_DEBUG = 1 << 4,
    273  LLL_PARSER = 1 << 5,
    274  LLL_HEADER = 1 << 6,
    275  LLL_EXT = 1 << 7,
    276  LLL_CLIENT = 1 << 8,
    277  LLL_LATENCY = 1 << 9,
    278 
    279  LLL_COUNT = 10 /* set to count of valid flags */
    280 };
    281 
    282 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    283 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    293 LWS_VISIBLE LWS_EXTERN int
    294 lwsl_timestamp(int level, char *p, int len);
    295 
    296 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    297 
    298 #if !defined(LWS_WITH_NO_LOGS)
    299 /* notice, warn and log are always compiled in */
    300 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    301 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    302 #endif
    303 /*
    304  * weaker logging can be deselected at configure time using --disable-debug
    305  * that gets rid of the overhead of checking while keeping _warn and _err
    306  * active
    307  */
    308 
    309 #if defined(LWS_WITH_ESP8266)
    310 #undef _DEBUG
    311 #endif
    312 
    313 #ifdef _DEBUG
    314 #if defined(LWS_WITH_NO_LOGS)
    315 /* notice, warn and log are always compiled in */
    316 //#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    317 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    318 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    319 #endif
    320 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    321 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    322 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    323 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    324 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    325 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    326 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    327 
    333 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    334 
    335 #else /* no debug */
    336 #if defined(LWS_WITH_NO_LOGS)
    337 //#define lwsl_err(...) do {} while(0)
    338 #define lwsl_warn(...) do {} while(0)
    339 #define lwsl_notice(...) do {} while(0)
    340 #endif
    341 #define lwsl_info(...) do {} while(0)
    342 #define lwsl_debug(...) do {} while(0)
    343 #define lwsl_parser(...) do {} while(0)
    344 #define lwsl_header(...) do {} while(0)
    345 #define lwsl_ext(...) do {} while(0)
    346 #define lwsl_client(...) do {} while(0)
    347 #define lwsl_latency(...) do {} while(0)
    348 #define lwsl_hexdump(a, b)
    349 
    350 #endif
    351 
    362 LWS_VISIBLE LWS_EXTERN void
    363 lws_set_log_level(int level,
    364  void (*log_emit_function)(int level, const char *line));
    365 
    375 LWS_VISIBLE LWS_EXTERN void
    376 lwsl_emit_syslog(int level, const char *line);
    377 
    379 
    380 
    381 #include <stddef.h>
    382 
    383 #ifndef lws_container_of
    384 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    385 #endif
    386 
    387 
    388 struct lws;
    389 #ifndef ARRAY_SIZE
    390 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    391 #endif
    392 
    393 /* api change list for user code to test against */
    394 
    395 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    396 
    397 /* the struct lws_protocols has the id field present */
    398 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    399 
    400 /* you can call lws_get_peer_write_allowance */
    401 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    402 
    403 /* extra parameter introduced in 917f43ab821 */
    404 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    405 
    406 /* File operations stuff exists */
    407 #define LWS_FEATURE_FOPS
    408 
    409 
    410 #if defined(_WIN32)
    411 typedef SOCKET lws_sockfd_type;
    412 typedef HANDLE lws_filefd_type;
    413 #define lws_sockfd_valid(sfd) (!!sfd)
    414 struct lws_pollfd {
    415  lws_sockfd_type fd;
    416  SHORT events;
    417  SHORT revents;
    418 };
    419 #define LWS_POLLHUP (FD_CLOSE)
    420 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    421 #define LWS_POLLOUT (FD_WRITE)
    422 #else
    423 
    424 #if defined(MBED_OPERATORS)
    425 /* it's a class lws_conn * */
    426 typedef void * lws_sockfd_type;
    427 typedef void * lws_filefd_type;
    428 #define lws_sockfd_valid(sfd) (!!sfd)
    429 struct pollfd {
    430  lws_sockfd_type fd;
    431  short events;
    432  short revents;
    433 };
    434 #define POLLIN 0x0001
    435 #define POLLPRI 0x0002
    436 #define POLLOUT 0x0004
    437 #define POLLERR 0x0008
    438 #define POLLHUP 0x0010
    439 #define POLLNVAL 0x0020
    440 
    441 struct lws;
    442 
    443 void * mbed3_create_tcp_stream_socket(void);
    444 void mbed3_delete_tcp_stream_socket(void *sockfd);
    445 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    446 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    447 #else
    448 #if defined(LWS_WITH_ESP8266)
    449 
    450 #include <user_interface.h>
    451 #include <espconn.h>
    452 
    453 typedef struct espconn * lws_sockfd_type;
    454 typedef void * lws_filefd_type;
    455 #define lws_sockfd_valid(sfd) (!!sfd)
    456 struct pollfd {
    457  lws_sockfd_type fd;
    458  short events;
    459  short revents;
    460 };
    461 #define POLLIN 0x0001
    462 #define POLLPRI 0x0002
    463 #define POLLOUT 0x0004
    464 #define POLLERR 0x0008
    465 #define POLLHUP 0x0010
    466 #define POLLNVAL 0x0020
    467 
    468 struct lws_vhost;
    469 
    470 lws_sockfd_type esp8266_create_tcp_listen_socket(struct lws_vhost *vh);
    471 void esp8266_tcp_stream_accept(lws_sockfd_type fd, struct lws *wsi);
    472 
    473 #include <os_type.h>
    474 #include <osapi.h>
    475 #include "ets_sys.h"
    476 
    477 int ets_snprintf(char *str, size_t size, const char *format, ...);
    478 #define snprintf ets_snprintf
    479 
    480 typedef os_timer_t uv_timer_t;
    481 typedef void uv_cb_t(uv_timer_t *);
    482 
    483 void os_timer_disarm(void *);
    484 void os_timer_setfn(os_timer_t *, os_timer_func_t *, void *);
    485 
    486 void ets_timer_arm_new(os_timer_t *, int, int, int);
    487 
    488 //void os_timer_arm(os_timer_t *, int, int);
    489 
    490 #define UV_VERSION_MAJOR 1
    491 
    492 #define lws_uv_getloop(a, b) (NULL)
    493 
    494 static inline void uv_timer_init(void *l, uv_timer_t *t)
    495 {
    496  (void)l;
    497  memset(t, 0, sizeof(*t));
    498  os_timer_disarm(t);
    499 }
    500 
    501 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
    502 {
    503  os_timer_setfn(t, (os_timer_func_t *)cb, t);
    504  /* ms, repeat */
    505  os_timer_arm(t, first, !!rep);
    506 }
    507 
    508 static inline void uv_timer_stop(uv_timer_t *t)
    509 {
    510  os_timer_disarm(t);
    511 }
    512 
    513 #else
    514 typedef int lws_sockfd_type;
    515 typedef int lws_filefd_type;
    516 #define lws_sockfd_valid(sfd) (sfd >= 0)
    517 #endif
    518 #endif
    519 
    520 #define lws_pollfd pollfd
    521 #define LWS_POLLHUP (POLLHUP|POLLERR)
    522 #define LWS_POLLIN (POLLIN)
    523 #define LWS_POLLOUT (POLLOUT)
    524 #endif
    525 
    528 struct lws_pollargs {
    529  lws_sockfd_type fd;
    530  int events;
    532 };
    533 
    534 struct lws_tokens;
    535 struct lws_token_limits;
    536 
    544 
    546 /*
    547  * NOTE: These public enums are part of the abi. If you want to add one,
    548  * add it at where specified so existing users are unaffected.
    549  */
    552  LWS_CLOSE_STATUS_NOSTATUS = 0,
    614  /****** add new things just above ---^ ******/
    615 
    616  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    617 };
    618 
    631 LWS_VISIBLE LWS_EXTERN void
    632 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    633  unsigned char *buf, size_t len);
    634 
    636 
    637 struct lws;
    638 struct lws_context;
    639 /* needed even with extensions disabled for create context */
    640 struct lws_extension;
    641 
    653 
    655 
    656 /*
    657  * NOTE: These public enums are part of the abi. If you want to add one,
    658  * add it at where specified so existing users are unaffected.
    659  */
    903  /* external poll() management support */
    966  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    969  LWS_CALLBACK_CGI = 40,
    971  LWS_CALLBACK_CGI_TERMINATED = 41,
    973  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    975  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    977  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    979  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    981  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    983  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    985  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    987  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    989  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    991  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    993  LWS_CALLBACK_PROCESS_HTML = 52,
    995  LWS_CALLBACK_ADD_HEADERS = 53,
    997  LWS_CALLBACK_SESSION_INFO = 54,
    1000  LWS_CALLBACK_GS_EVENT = 55,
    1017  /****** add new things just above ---^ ******/
    1018 
    1021 };
    1022 
    1023 
    1024 
    1040 typedef int
    1041 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    1042  void *user, void *in, size_t len);
    1044 
    1054 
    1056 /*
    1057  * NOTE: These public enums are part of the abi. If you want to add one,
    1058  * add it at where specified so existing users are unaffected.
    1059  */
    1060 enum lws_extension_callback_reasons {
    1061  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    1062  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    1063  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    1064  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    1065  LWS_EXT_CB_CONSTRUCT = 4,
    1066  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    1067  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    1068  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    1069  LWS_EXT_CB_DESTROY = 8,
    1070  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    1071  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    1072  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    1073  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    1074  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    1075  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    1076  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    1077  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    1078  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    1079  LWS_EXT_CB_1HZ = 18,
    1080  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    1081  LWS_EXT_CB_IS_WRITEABLE = 20,
    1082  LWS_EXT_CB_PAYLOAD_TX = 21,
    1083  LWS_EXT_CB_PAYLOAD_RX = 22,
    1084  LWS_EXT_CB_OPTION_DEFAULT = 23,
    1085  LWS_EXT_CB_OPTION_SET = 24,
    1086  LWS_EXT_CB_OPTION_CONFIRM = 25,
    1087  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    1088 
    1089  /****** add new things just above ---^ ******/
    1090 };
    1091 
    1098  /* Add new things just above here ---^
    1099  * This is part of the ABI, don't needlessly break compatibility */
    1100 };
    1101 
    1107  const char *name;
    1110  /* Add new things just above here ---^
    1111  * This is part of the ABI, don't needlessly break compatibility */
    1112 };
    1113 
    1116  const char *option_name;
    1118  const char *start;
    1119  int len;
    1120 };
    1121 
    1182 typedef int
    1183 lws_extension_callback_function(struct lws_context *context,
    1184  const struct lws_extension *ext, struct lws *wsi,
    1185  enum lws_extension_callback_reasons reason,
    1186  void *user, void *in, size_t len);
    1187 
    1190  const char *name;
    1192  const char *client_offer;
    1194  /* Add new things just above here ---^
    1195  * This is part of the ABI, don't needlessly break compatibility */
    1196 };
    1197 
    1206 LWS_VISIBLE LWS_EXTERN int
    1207 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1208  const char *opt_name, const char *opt_val);
    1209 
    1210 #ifndef LWS_NO_EXTENSIONS
    1211 /* lws_get_internal_extensions() - DEPRECATED
    1212  *
    1213  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1214  * by user code along with application-specific settings. See the test
    1215  * client and server for how to do.
    1216  */
    1217 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1218 lws_get_internal_extensions() { return NULL; }
    1219 
    1230 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1231 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1232  void *ext_user, const struct lws_ext_options *opts,
    1233  const char *o, int len);
    1234 #endif
    1235 
    1248 LWS_EXTERN
    1250  struct lws_context *context, const struct lws_extension *ext,
    1251  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1252  void *user, void *in, size_t len);
    1253 
    1254 /*
    1255  * The internal exts are part of the public abi
    1256  * If we add more extensions, publish the callback here ------v
    1257  */
    1259 
    1275 
    1280  const char *name;
    1301  unsigned int id;
    1308  void *user;
    1311  /* Add new things just above here ---^
    1312  * This is part of the ABI, don't needlessly break compatibility */
    1313 };
    1314 
    1315 struct lws_vhost;
    1316 
    1325 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1326 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1327 
    1337 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1338 lws_get_protocol(struct lws *wsi);
    1339 
    1341 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1342 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1343 
    1354 LWS_VISIBLE LWS_EXTERN void *
    1355 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1356  int size);
    1357 
    1367 LWS_VISIBLE LWS_EXTERN void *
    1368 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1369 
    1378 LWS_VISIBLE LWS_EXTERN int
    1379 lws_finalize_startup(struct lws_context *context);
    1380 
    1381 #ifdef LWS_WITH_PLUGINS
    1382 
    1383 /* PLUGINS implies LIBUV */
    1384 
    1385 #define LWS_PLUGIN_API_MAGIC 180
    1386 
    1389  unsigned int api_magic;
    1390  const struct lws_protocols *protocols;
    1392  const struct lws_extension *extensions;
    1394 };
    1395 
    1396 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1397  struct lws_plugin_capability *);
    1398 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1399 
    1401 struct lws_plugin {
    1402  struct lws_plugin *list;
    1403 #if (UV_VERSION_MAJOR > 0)
    1404  uv_lib_t lib;
    1405 #else
    1406  void *l;
    1407 #endif
    1408  char name[64];
    1410 };
    1411 
    1412 #endif
    1413 
    1415 
    1416 
    1425 
    1427 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1428 
    1430 /* SHA-1 binary and hexified versions */
    1432 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1434 typedef struct { char id[41]; } lwsgw_hash;
    1435 
    1442 };
    1443 
    1446  char username[32];
    1447  char email[100];
    1448  char ip[72];
    1449  unsigned int mask;
    1451  char session[42];
    1452 };
    1453 
    1458 };
    1459 
    1462  enum lws_gs_event event;
    1463  const char *username;
    1464  const char *email;
    1465 };
    1466 
    1468 
    1469 
    1483 
    1485 /*
    1486  * NOTE: These public enums are part of the abi. If you want to add one,
    1487  * add it at where specified so existing users are unaffected.
    1488  */
    1489 
    1493  (1 << 12),
    1500  (1 << 12),
    1516  (1 << 12),
    1521  (1 << 12),
    1539  /****** add new things just above ---^ ******/
    1540 };
    1541 
    1542 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1543 
    1554  int port;
    1559  const char *iface;
    1566  const struct lws_protocols *protocols;
    1570  const struct lws_extension *extensions;
    1578  const char *ssl_cert_filepath;
    1588  const char *ssl_ca_filepath;
    1590  const char *ssl_cipher_list;
    1594  const char *http_proxy_address;
    1597  unsigned int http_proxy_port;
    1599  int gid;
    1601  int uid;
    1603  unsigned int options;
    1605  void *user;
    1608  int ka_time;
    1618 #ifdef LWS_OPENSSL_SUPPORT
    1624 #else /* maintain structure layout either way */
    1626 #endif
    1627 
    1638  unsigned int count_threads;
    1640  unsigned int fd_limit_per_thread;
    1644  unsigned int timeout_secs;
    1649  const char *ecdh_curve;
    1651  const char *vhost_name;
    1655  const char * const *plugin_dirs;
    1664  const char *log_filepath;
    1667  const struct lws_http_mount *mounts;
    1669  const char *server_string;
    1672  unsigned int pt_serv_buf_size;
    1687  unsigned short ws_ping_pong_interval;
    1700  /* Add new things just above here ---^
    1701  * This is part of the ABI, don't needlessly break compatibility
    1702  *
    1703  * The below is to ensure later library versions with new
    1704  * members added above will see 0 (default) even if the app
    1705  * was not built against the newer headers.
    1706  */
    1707 
    1708  void *_unused[8];
    1709 };
    1710 
    1745 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1747 
    1756 LWS_VISIBLE LWS_EXTERN void
    1757 lws_context_destroy(struct lws_context *context);
    1758 
    1776 LWS_VISIBLE LWS_EXTERN int
    1777 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1778 
    1779 
    1780 struct lws_vhost;
    1781 
    1791 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1792 lws_create_vhost(struct lws_context *context,
    1793  struct lws_context_creation_info *info);
    1794 
    1809 LWS_VISIBLE LWS_EXTERN int
    1810 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1811  char **config_strings, int *len);
    1812 
    1828 LWS_VISIBLE LWS_EXTERN int
    1829 lwsws_get_config_vhosts(struct lws_context *context,
    1830  struct lws_context_creation_info *info, const char *d,
    1831  char **config_strings, int *len);
    1832 
    1834 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1835 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1836 
    1842 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1843 lws_get_vhost(struct lws *wsi);
    1844 
    1852 LWS_VISIBLE LWS_EXTERN int
    1853 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1854 
    1862 LWS_VISIBLE LWS_EXTERN int
    1863 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1864 
    1874 LWS_VISIBLE LWS_EXTERN void *
    1875 lws_context_user(struct lws_context *context);
    1876 
    1882 
    1892  const char *name;
    1893  const char *value;
    1894 };
    1895 
    1908 };
    1909 
    1917  const char *mountpoint;
    1919  const char *origin;
    1921  const char *def;
    1923  const char *protocol;
    1939  unsigned int auth_mask;
    1942  unsigned int cache_reusable:1;
    1943  unsigned int cache_revalidate:1;
    1944  unsigned int cache_intermediaries:1;
    1946  unsigned char origin_protocol;
    1947  unsigned char mountpoint_len;
    1948 };
    1951 
    1957 
    1965  LCCSCF_USE_SSL = (1 << 0),
    1966  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    1967  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2)
    1968 };
    1969 
    1974  struct lws_context *context;
    1976  const char *address;
    1978  int port;
    1982  const char *path;
    1984  const char *host;
    1986  const char *origin;
    1988  const char *protocol;
    1992  void *userdata;
    1996  const char *method;
    1999  struct lws *parent_wsi;
    2003  const char *uri_replace_from;
    2006  const char *uri_replace_to;
    2008  struct lws_vhost *vhost;
    2010  struct lws **pwsi;
    2022  /* Add new things just above here ---^
    2023  * This is part of the ABI, don't needlessly break compatibility
    2024  *
    2025  * The below is to ensure later library versions with new
    2026  * members added above will see 0 (default) even if the app
    2027  * was not built against the newer headers.
    2028  */
    2029 
    2030  void *_unused[4];
    2031 };
    2032 
    2040 LWS_VISIBLE LWS_EXTERN struct lws *
    2042 
    2063 /* deprecated, use lws_client_connect_via_info() */
    2064 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2065 lws_client_connect(struct lws_context *clients, const char *address,
    2066  int port, int ssl_connection, const char *path,
    2067  const char *host, const char *origin, const char *protocol,
    2068  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    2069 /* deprecated, use lws_client_connect_via_info() */
    2090 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2091 lws_client_connect_extended(struct lws_context *clients, const char *address,
    2092  int port, int ssl_connection, const char *path,
    2093  const char *host, const char *origin,
    2094  const char *protocol, int ietf_version_or_minus_one,
    2095  void *userdata) LWS_WARN_DEPRECATED;
    2096 
    2122 LWS_VISIBLE LWS_EXTERN int
    2124  struct lws_vhost *vhost);
    2125 
    2126 LWS_VISIBLE LWS_EXTERN int
    2127 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2128 
    2129 LWS_VISIBLE LWS_EXTERN void
    2130 lws_client_http_body_pending(struct lws *wsi, int something_left_to_send);
    2131 
    2152 
    2161 
    2194 LWS_VISIBLE LWS_EXTERN int
    2195 lws_service(struct lws_context *context, int timeout_ms);
    2196 
    2208 LWS_VISIBLE LWS_EXTERN int
    2209 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2210 
    2226 LWS_VISIBLE LWS_EXTERN void
    2227 lws_cancel_service_pt(struct lws *wsi);
    2228 
    2240 LWS_VISIBLE LWS_EXTERN void
    2241 lws_cancel_service(struct lws_context *context);
    2242 
    2265 LWS_VISIBLE LWS_EXTERN int
    2266 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2267 
    2277 LWS_VISIBLE LWS_EXTERN int
    2278 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2279  int tsi);
    2280 
    2282 
    2288 
    2295 
    2307 LWS_VISIBLE LWS_EXTERN const char *
    2308 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2309 
    2328 LWS_VISIBLE LWS_EXTERN int
    2329 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2330  const char *other_headers, int other_headers_len);
    2331 LWS_VISIBLE LWS_EXTERN int
    2332 lws_serve_http_file_fragment(struct lws *wsi);
    2334 
    2345 
    2346 enum http_status {
    2347  HTTP_STATUS_OK = 200,
    2348  HTTP_STATUS_NO_CONTENT = 204,
    2349 
    2350  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2351  HTTP_STATUS_FOUND = 302,
    2352  HTTP_STATUS_SEE_OTHER = 303,
    2353 
    2354  HTTP_STATUS_BAD_REQUEST = 400,
    2355  HTTP_STATUS_UNAUTHORIZED,
    2356  HTTP_STATUS_PAYMENT_REQUIRED,
    2357  HTTP_STATUS_FORBIDDEN,
    2358  HTTP_STATUS_NOT_FOUND,
    2359  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2360  HTTP_STATUS_NOT_ACCEPTABLE,
    2361  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2362  HTTP_STATUS_REQUEST_TIMEOUT,
    2363  HTTP_STATUS_CONFLICT,
    2364  HTTP_STATUS_GONE,
    2365  HTTP_STATUS_LENGTH_REQUIRED,
    2366  HTTP_STATUS_PRECONDITION_FAILED,
    2367  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2368  HTTP_STATUS_REQ_URI_TOO_LONG,
    2369  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2370  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2371  HTTP_STATUS_EXPECTATION_FAILED,
    2372 
    2373  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2374  HTTP_STATUS_NOT_IMPLEMENTED,
    2375  HTTP_STATUS_BAD_GATEWAY,
    2376  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2377  HTTP_STATUS_GATEWAY_TIMEOUT,
    2378  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2379 };
    2380 
    2382  char *p;
    2383  int len;
    2384  int max_len;
    2385  int final;
    2386 };
    2387 
    2388 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2389 
    2391  char *start;
    2392  char swallow[16];
    2393  int pos;
    2394  void *data;
    2395  const char * const *vars;
    2398  lws_process_html_state_cb replace;
    2399 };
    2400 
    2405 LWS_VISIBLE LWS_EXTERN int
    2407  struct lws_process_html_state *s);
    2409 
    2442 
    2450 struct lws_tokens {
    2451  char *token;
    2453 };
    2454 
    2455 /* enum lws_token_indexes
    2456  * these have to be kept in sync with lextable.h / minilex.c
    2457  *
    2458  * NOTE: These public enums are part of the abi. If you want to add one,
    2459  * add it at where specified so existing users are unaffected.
    2460  */
    2461 enum lws_token_indexes {
    2462  WSI_TOKEN_GET_URI = 0,
    2463  WSI_TOKEN_POST_URI = 1,
    2464  WSI_TOKEN_OPTIONS_URI = 2,
    2465  WSI_TOKEN_HOST = 3,
    2466  WSI_TOKEN_CONNECTION = 4,
    2467  WSI_TOKEN_UPGRADE = 5,
    2468  WSI_TOKEN_ORIGIN = 6,
    2469  WSI_TOKEN_DRAFT = 7,
    2470  WSI_TOKEN_CHALLENGE = 8,
    2471  WSI_TOKEN_EXTENSIONS = 9,
    2472  WSI_TOKEN_KEY1 = 10,
    2473  WSI_TOKEN_KEY2 = 11,
    2474  WSI_TOKEN_PROTOCOL = 12,
    2475  WSI_TOKEN_ACCEPT = 13,
    2476  WSI_TOKEN_NONCE = 14,
    2477  WSI_TOKEN_HTTP = 15,
    2478  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2479  WSI_TOKEN_HTTP_ACCEPT = 17,
    2480  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2481  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2482  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2483  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2484  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2485  WSI_TOKEN_HTTP_PRAGMA = 23,
    2486  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2487  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2488  WSI_TOKEN_HTTP_COOKIE = 26,
    2489  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2490  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2491  WSI_TOKEN_HTTP_DATE = 29,
    2492  WSI_TOKEN_HTTP_RANGE = 30,
    2493  WSI_TOKEN_HTTP_REFERER = 31,
    2494  WSI_TOKEN_KEY = 32,
    2495  WSI_TOKEN_VERSION = 33,
    2496  WSI_TOKEN_SWORIGIN = 34,
    2497 
    2498  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2499  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2500  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2501  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2502  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2503 
    2504  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2505  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2506  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2507  WSI_TOKEN_HTTP_AGE = 43,
    2508  WSI_TOKEN_HTTP_ALLOW = 44,
    2509  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2510  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2511  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2512  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2513  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2514  WSI_TOKEN_HTTP_ETAG = 50,
    2515  WSI_TOKEN_HTTP_EXPECT = 51,
    2516  WSI_TOKEN_HTTP_EXPIRES = 52,
    2517  WSI_TOKEN_HTTP_FROM = 53,
    2518  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2519  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2520  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2521  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2522  WSI_TOKEN_HTTP_LINK = 58,
    2523  WSI_TOKEN_HTTP_LOCATION = 59,
    2524  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2525  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2526  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2527  WSI_TOKEN_HTTP_REFRESH = 63,
    2528  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2529  WSI_TOKEN_HTTP_SERVER = 65,
    2530  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2531  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2532  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2533  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2534  WSI_TOKEN_HTTP_VARY = 70,
    2535  WSI_TOKEN_HTTP_VIA = 71,
    2536  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2537 
    2538  WSI_TOKEN_PATCH_URI = 73,
    2539  WSI_TOKEN_PUT_URI = 74,
    2540  WSI_TOKEN_DELETE_URI = 75,
    2541 
    2542  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2543  WSI_TOKEN_PROXY = 77,
    2544  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2545  WSI_TOKEN_HTTP1_0 = 79,
    2546 
    2547  /****** add new things just above ---^ ******/
    2548 
    2549  /* use token storage to stash these internally, not for
    2550  * user use */
    2551 
    2552  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2553  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2554  _WSI_TOKEN_CLIENT_URI,
    2555  _WSI_TOKEN_CLIENT_HOST,
    2556  _WSI_TOKEN_CLIENT_ORIGIN,
    2557  _WSI_TOKEN_CLIENT_METHOD,
    2558 
    2559  /* always last real token index*/
    2560  WSI_TOKEN_COUNT,
    2561 
    2562  /* parser state additions, no storage associated */
    2563  WSI_TOKEN_NAME_PART,
    2564  WSI_TOKEN_SKIPPING,
    2565  WSI_TOKEN_SKIPPING_SAW_CR,
    2566  WSI_PARSING_COMPLETE,
    2567  WSI_INIT_TOKEN_MUXURL,
    2568 };
    2569 
    2571  unsigned short token_limit[WSI_TOKEN_COUNT];
    2572 };
    2573 
    2579 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2580 lws_token_to_string(enum lws_token_indexes token);
    2581 
    2582 
    2591 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2592 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2593 
    2603 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2604 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2605 
    2619 LWS_VISIBLE LWS_EXTERN int
    2620 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2621 
    2639 LWS_VISIBLE LWS_EXTERN int
    2640 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2641  enum lws_token_indexes h, int frag_idx);
    2642 
    2653 LWS_VISIBLE LWS_EXTERN const char *
    2654 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2656 
    2671 
    2682 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2683 lws_add_http_header_status(struct lws *wsi,
    2684  unsigned int code, unsigned char **p,
    2685  unsigned char *end);
    2698 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2699 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2700  const unsigned char *value, int length,
    2701  unsigned char **p, unsigned char *end);
    2715 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2716 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2717  const unsigned char *value, int length,
    2718  unsigned char **p, unsigned char *end);
    2729 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2730 lws_add_http_header_content_length(struct lws *wsi,
    2731  unsigned long content_length,
    2732  unsigned char **p, unsigned char *end);
    2742 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2743 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2744  unsigned char *end);
    2746 
    2765 
    2775 };
    2776 
    2790 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2791  const char *filename, char *buf, int len,
    2792  enum lws_spa_fileupload_states state);
    2793 
    2796 struct lws_spa;
    2797 
    2816 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2817 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2818  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2819  void *opt_data);
    2820 
    2828 LWS_VISIBLE LWS_EXTERN int
    2829 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2830 
    2836 LWS_VISIBLE LWS_EXTERN int
    2837 lws_spa_finalize(struct lws_spa *spa);
    2838 
    2845 LWS_VISIBLE LWS_EXTERN int
    2846 lws_spa_get_length(struct lws_spa *spa, int n);
    2847 
    2853 LWS_VISIBLE LWS_EXTERN const char *
    2854 lws_spa_get_string(struct lws_spa *spa, int n);
    2855 
    2861 LWS_VISIBLE LWS_EXTERN int
    2862 lws_spa_destroy(struct lws_spa *spa);
    2864 
    2875 
    2886 LWS_VISIBLE LWS_EXTERN const char *
    2887 lws_urlencode(char *escaped, const char *string, int len);
    2888 
    2889 /*
    2890  * URLDECODE 1 / 2
    2891  *
    2892  * This simple urldecode only operates until the first '\0' and requires the
    2893  * data to exist all at once
    2894  */
    2907 LWS_VISIBLE LWS_EXTERN int
    2908 lws_urldecode(char *string, const char *escaped, int len);
    2910 
    2919 LWS_VISIBLE LWS_EXTERN int
    2920 lws_return_http_status(struct lws *wsi, unsigned int code,
    2921  const char *html_body);
    2922 
    2933 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2934 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    2935  unsigned char **p, unsigned char *end);
    2936 
    2945 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2946 lws_http_transaction_completed(struct lws *wsi);
    2948 
    2956 
    2967 LWS_VISIBLE LWS_EXTERN const char *
    2968 lws_sql_purify(char *escaped, const char *string, int len);
    2969 
    2980 LWS_VISIBLE LWS_EXTERN const char *
    2981 lws_json_purify(char *escaped, const char *string, int len);
    2983 
    2990 
    2992 #ifdef LWS_USE_LIBEV
    2993 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    2994 
    2995 LWS_VISIBLE LWS_EXTERN int
    2996 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    2997  lws_ev_signal_cb_t *cb);
    2998 
    2999 LWS_VISIBLE LWS_EXTERN int
    3000 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    3001 
    3002 LWS_VISIBLE LWS_EXTERN void
    3003 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    3004 #endif /* LWS_USE_LIBEV */
    3005 
    3007 
    3014 #ifdef LWS_USE_LIBUV
    3016 LWS_VISIBLE LWS_EXTERN int
    3017 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    3018  uv_signal_cb cb);
    3019 
    3020 LWS_VISIBLE LWS_EXTERN void
    3021 lws_libuv_run(const struct lws_context *context, int tsi);
    3022 
    3023 LWS_VISIBLE LWS_EXTERN void
    3024 lws_libuv_stop(struct lws_context *context);
    3025 
    3026 LWS_VISIBLE LWS_EXTERN int
    3027 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    3028 
    3029 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    3030 lws_uv_getloop(struct lws_context *context, int tsi);
    3031 
    3032 LWS_VISIBLE LWS_EXTERN void
    3033 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    3034 #endif /* LWS_USE_LIBUV */
    3035 
    3042 
    3043 /*
    3044  * NOTE: These public enums are part of the abi. If you want to add one,
    3045  * add it at where specified so existing users are unaffected.
    3046  */
    3047 enum pending_timeout {
    3048  NO_PENDING_TIMEOUT = 0,
    3049  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    3050  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    3051  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    3052  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    3053  PENDING_TIMEOUT_AWAITING_PING = 5,
    3054  PENDING_TIMEOUT_CLOSE_ACK = 6,
    3055  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    3056  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    3057  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    3058  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    3059  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    3060  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    3061  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    3062  PENDING_TIMEOUT_CGI = 14,
    3063  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    3064  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
    3065  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
    3066  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,
    3067 
    3068  /****** add new things just above ---^ ******/
    3069 };
    3070 
    3080 LWS_VISIBLE LWS_EXTERN void
    3081 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    3083 
    3089 #if !defined(LWS_SIZEOFPTR)
    3090 #define LWS_SIZEOFPTR (sizeof (void *))
    3091 #endif
    3092 #if !defined(u_int64_t)
    3093 #define u_int64_t unsigned long long
    3094 #endif
    3095 
    3096 #if defined(__x86_64__)
    3097 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    3098 #else
    3099 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    3100 #endif
    3101 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    3102  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    3103 #define LWS_PRE _LWS_PAD(4 + 10)
    3104 /* used prior to 1.7 and retained for backward compatibility */
    3105 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    3106 #define LWS_SEND_BUFFER_POST_PADDING 0
    3107 
    3108 /*
    3109  * NOTE: These public enums are part of the abi. If you want to add one,
    3110  * add it at where specified so existing users are unaffected.
    3111  */
    3126  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3127  LWS_WRITE_PING = 5,
    3128  LWS_WRITE_PONG = 6,
    3129 
    3130  /* Same as write_http but we know this write ends the transaction */
    3131  LWS_WRITE_HTTP_FINAL = 7,
    3132 
    3133  /* HTTP2 */
    3134 
    3142  /****** add new things just above ---^ ******/
    3143 
    3144  /* flags */
    3145 
    3153 };
    3154 
    3155 
    3227 LWS_VISIBLE LWS_EXTERN int
    3228 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3229  enum lws_write_protocol protocol);
    3230 
    3231 /* helper for case where buffer may be const */
    3232 #define lws_write_http(wsi, buf, len) \
    3233  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3234 
    3236 
    3255 
    3268 LWS_VISIBLE LWS_EXTERN int
    3269 lws_callback_on_writable(struct lws *wsi);
    3270 
    3284 LWS_VISIBLE LWS_EXTERN int
    3285 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3286  const struct lws_protocols *protocol);
    3287 
    3301 LWS_VISIBLE LWS_EXTERN int
    3302 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3303  const struct lws_protocols *protocol);
    3304 
    3317 LWS_VISIBLE LWS_EXTERN int
    3318 lws_callback_all_protocol(struct lws_context *context,
    3319  const struct lws_protocols *protocol, int reason);
    3320 
    3333 LWS_VISIBLE LWS_EXTERN int
    3334 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3335  const struct lws_protocols *protocol, int reason);
    3336 
    3350 LWS_VISIBLE LWS_EXTERN int
    3351 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3352 
    3353 LWS_VISIBLE LWS_EXTERN int
    3354 lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,
    3355  void *user, void *in, size_t len);
    3356 
    3364 LWS_VISIBLE LWS_EXTERN int
    3365 lws_get_socket_fd(struct lws *wsi);
    3366 
    3388 LWS_VISIBLE LWS_EXTERN size_t
    3389 lws_get_peer_write_allowance(struct lws *wsi);
    3391 
    3402 LWS_VISIBLE LWS_EXTERN int
    3403 lws_rx_flow_control(struct lws *wsi, int enable);
    3404 
    3414 LWS_VISIBLE LWS_EXTERN void
    3415 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3416  const struct lws_protocols *protocol);
    3417 
    3434 LWS_VISIBLE LWS_EXTERN size_t
    3435 lws_remaining_packet_payload(struct lws *wsi);
    3436 
    3437 
    3446 
    3459 LWS_VISIBLE LWS_EXTERN struct lws *
    3460 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3483 LWS_VISIBLE LWS_EXTERN struct lws *
    3484 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3485  const char *readbuf, size_t len);
    3487 
    3493 
    3504 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3505 lws_canonical_hostname(struct lws_context *context);
    3506 
    3521 LWS_VISIBLE LWS_EXTERN void
    3522 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3523  int name_len, char *rip, int rip_len);
    3524 
    3535 LWS_VISIBLE LWS_EXTERN const char *
    3536 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3537 #ifndef LWS_WITH_ESP8266
    3538 
    3549 LWS_VISIBLE LWS_EXTERN int
    3550 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3551  size_t addrlen);
    3553 #endif
    3554 
    3560 
    3573 LWS_VISIBLE LWS_EXTERN int
    3574 lws_get_random(struct lws_context *context, void *buf, int len);
    3582 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3583 lws_daemonize(const char *_lock_path);
    3589 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3591 
    3598 LWS_VISIBLE LWS_EXTERN void *
    3599 lws_wsi_user(struct lws *wsi);
    3600 
    3612 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3613 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3614  const char **path);
    3615 
    3619 LWS_VISIBLE LWS_EXTERN unsigned long
    3620 lws_now_secs(void);
    3621 
    3631 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3632 lws_get_context(const struct lws *wsi);
    3633 
    3643 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3644 lws_get_count_threads(struct lws_context *context);
    3645 
    3653 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3654 lws_get_parent(const struct lws *wsi);
    3655 
    3662 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3663 lws_get_child(const struct lws *wsi);
    3664 
    3665 
    3666 /*
    3667  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3668  * It's provided in case it is
    3669  * useful when integrating with other app poll loop service code.
    3670  */
    3671 LWS_VISIBLE LWS_EXTERN int
    3672 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3673 
    3681 LWS_VISIBLE LWS_EXTERN void
    3682 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3684 
    3690 
    3697 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3698 lws_send_pipe_choked(struct lws *wsi);
    3699 
    3704 LWS_VISIBLE LWS_EXTERN int
    3705 lws_is_final_fragment(struct lws *wsi);
    3706 
    3711 LWS_VISIBLE LWS_EXTERN unsigned char
    3712 lws_get_reserved_bits(struct lws *wsi);
    3713 
    3730 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3731 lws_partial_buffered(struct lws *wsi);
    3732 
    3742 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3743 lws_frame_is_binary(struct lws *wsi);
    3744 
    3753 LWS_VISIBLE LWS_EXTERN int
    3754 lws_is_ssl(struct lws *wsi);
    3759 LWS_VISIBLE LWS_EXTERN int
    3760 lws_is_cgi(struct lws *wsi);
    3762 
    3763 
    3769 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3771 #define lws_SHA1 SHA1
    3772 #else
    3773 
    3782 LWS_VISIBLE LWS_EXTERN unsigned char *
    3783 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3784 #endif
    3785 
    3795 LWS_VISIBLE LWS_EXTERN int
    3796 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3806 LWS_VISIBLE LWS_EXTERN int
    3807 lws_b64_decode_string(const char *in, char *out, int out_size);
    3809 
    3810 
    3820 #ifdef LWS_WITH_CGI
    3821 enum lws_enum_stdinouterr {
    3822  LWS_STDIN = 0,
    3823  LWS_STDOUT = 1,
    3824  LWS_STDERR = 2,
    3825 };
    3826 
    3827 enum lws_cgi_hdr_state {
    3828  LCHS_HEADER,
    3829  LCHS_CR1,
    3830  LCHS_LF1,
    3831  LCHS_CR2,
    3832  LCHS_LF2,
    3833  LHCS_PAYLOAD,
    3834  LCHS_SINGLE_0A,
    3835 };
    3836 
    3838  struct lws **stdwsi;
    3839  enum lws_enum_stdinouterr ch;
    3840  unsigned char *data;
    3841  enum lws_cgi_hdr_state hdr_state;
    3842  int len;
    3843 };
    3844 
    3845 
    3855 LWS_VISIBLE LWS_EXTERN int
    3856 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3857  int script_uri_path_len, int timeout_secs,
    3858  const struct lws_protocol_vhost_options *mp_cgienv);
    3859 
    3865 LWS_VISIBLE LWS_EXTERN int
    3866 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3867 
    3873 LWS_VISIBLE LWS_EXTERN int
    3874 lws_cgi_kill(struct lws *wsi);
    3875 #endif
    3876 
    3878 
    3895 
    3902  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    3903  unsigned long *filelen, int flags);
    3907  int (*close)(struct lws *wsi, lws_filefd_type fd);
    3909  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    3910  long offset_from_cur_pos);
    3912  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3913  unsigned char *buf, unsigned long len);
    3915  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3916  unsigned char *buf, unsigned long len);
    3919  /* Add new things just above here ---^
    3920  * This is part of the ABI, don't needlessly break compatibility */
    3921 };
    3922 
    3928 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    3929 lws_get_fops(struct lws_context *context);
    3930 
    3939 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    3940 lws_plat_file_open(struct lws *wsi, const char *filename,
    3941  unsigned long *filelen, int flags)
    3942 {
    3943  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    3944  filelen, flags);
    3945 }
    3946 
    3953 static LWS_INLINE int
    3954 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    3955 {
    3956  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    3957 }
    3958 
    3966 static LWS_INLINE unsigned long
    3967 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    3968 {
    3969  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    3970 }
    3980 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3981 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3982  unsigned char *buf, unsigned long len)
    3983 {
    3984  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    3985  len);
    3986 }
    3996 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3997 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3998  unsigned char *buf, unsigned long len)
    3999 {
    4000  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    4001  len);
    4002 }
    4004 
    4036 #ifdef LWS_WITH_SMTP
    4037 
    4049 };
    4050 
    4052 struct lws_email {
    4053  void *data;
    4055  uv_loop_t *loop;
    4058  char email_smtp_ip[32];
    4059  char email_helo[32];
    4060  char email_from[100];
    4061  char email_to[100];
    4063  unsigned int max_content_size;
    4066  /* Fill all the callbacks before init */
    4067 
    4068  int (*on_next)(struct lws_email *email);
    4073  int (*on_sent)(struct lws_email *email);
    4078  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    4084  /* private things */
    4085  uv_timer_t timeout_email;
    4087  uv_connect_t email_connect_req;
    4088  uv_tcp_t email_client;
    4090  char email_buf[256];
    4091  char *content;
    4092 };
    4093 
    4103 LWS_VISIBLE LWS_EXTERN int
    4104 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    4105 
    4114 LWS_VISIBLE LWS_EXTERN void
    4115 lws_email_check(struct lws_email *email);
    4123 LWS_VISIBLE LWS_EXTERN void
    4124 lws_email_destroy(struct lws_email *email);
    4125 
    4126 #endif
    4127 
    4128 
    4129 #ifdef __cplusplus
    4130 }
    4131 #endif
    4132 
    4133 #endif
    LWS_VISIBLE LWS_EXTERN int lws_spa_destroy(struct lws_spa *spa)
    LWS_VISIBLE LWS_EXTERN const char * lws_json_purify(char *escaped, const char *string, int len)
    -
    Definition: libwebsockets.h:3803
    -
    size_t rx_buffer_size
    Definition: libwebsockets.h:1283
    +
    Definition: libwebsockets.h:3837
    +
    size_t rx_buffer_size
    Definition: libwebsockets.h:1292
    LWS_VISIBLE LWS_EXTERN struct lws_spa * lws_spa_create(struct lws *wsi, const char *const *param_names, int count_params, int max_storage, lws_spa_fileupload_cb opt_cb, void *opt_data)
    LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED
    Definition: libwebsockets.h:768
    Definition: libwebsockets.h:896
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
    -
    Definition: libwebsockets.h:1895
    -
    Definition: libwebsockets.h:3089
    -
    Definition: libwebsockets.h:4008
    +
    Definition: libwebsockets.h:1904
    +
    Definition: libwebsockets.h:3123
    +
    Definition: libwebsockets.h:4042
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
    Definition: libwebsockets.h:234
    -
    unsigned int auth_mask
    Definition: libwebsockets.h:1930
    -
    Definition: libwebsockets.h:3112
    -
    void * data
    Definition: libwebsockets.h:4019
    -
    const char * uri_replace_from
    Definition: libwebsockets.h:1994
    -
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3881
    +
    unsigned int auth_mask
    Definition: libwebsockets.h:1939
    +
    Definition: libwebsockets.h:3146
    +
    void * data
    Definition: libwebsockets.h:4053
    +
    const char * uri_replace_from
    Definition: libwebsockets.h:2003
    +
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3915
    lws_callback_reasons
    Definition: libwebsockets.h:661
    LWS_VISIBLE LWS_EXTERN int lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len, enum lws_token_indexes h, int frag_idx)
    -
    lwsgs_auth_bits
    Definition: libwebsockets.h:1428
    +
    lwsgs_auth_bits
    Definition: libwebsockets.h:1437
    LWS_VISIBLE LWS_EXTERN void lws_close_reason(struct lws *wsi, enum lws_close_status status, unsigned char *buf, size_t len)
    LWS_VISIBLE LWS_EXTERN void lws_email_destroy(struct lws_email *email)
    LWS_VISIBLE LWS_EXTERN int lws_urldecode(char *string, const char *escaped, int len)
    Definition: libwebsockets.h:894
    -
    Definition: libwebsockets.h:1087
    -
    unsigned int id
    Definition: libwebsockets.h:1292
    +
    Definition: libwebsockets.h:1096
    +
    unsigned int id
    Definition: libwebsockets.h:1301
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h)
    -
    Definition: libwebsockets.h:1085
    +
    Definition: libwebsockets.h:1094
    Definition: libwebsockets.h:799
    LWS_VISIBLE LWS_EXTERN int lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd, int tsi)
    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_get_parent(const struct lws *wsi)
    LWS_VISIBLE LWS_EXTERN size_t lws_get_peer_write_allowance(struct lws *wsi)
    Definition: libwebsockets.h:745
    LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_get_library_version(void)
    -
    int(* on_sent)(struct lws_email *email)
    Definition: libwebsockets.h:4039
    -
    Definition: libwebsockets.h:1423
    -
    struct lws ** pwsi
    Definition: libwebsockets.h:2001
    +
    int(* on_sent)(struct lws_email *email)
    Definition: libwebsockets.h:4073
    +
    Definition: libwebsockets.h:1432
    +
    struct lws ** pwsi
    Definition: libwebsockets.h:2010
    Definition: libwebsockets.h:779
    -
    const char * path
    Definition: libwebsockets.h:1973
    +
    const char * path
    Definition: libwebsockets.h:1982
    LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)
    Definition: libwebsockets.h:580
    -
    Definition: libwebsockets.h:1379
    +
    Definition: libwebsockets.h:1388
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi, void *ext_user, const struct lws_ext_options *opts, const char *o, int len)
    -
    time_t email_connect_started
    Definition: libwebsockets.h:4055
    +
    time_t email_connect_started
    Definition: libwebsockets.h:4089
    lws_close_status
    Definition: libwebsockets.h:551
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
    Definition: libwebsockets.h:591
    - -
    int token_len
    Definition: libwebsockets.h:2419
    -
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1658
    + +
    int token_len
    Definition: libwebsockets.h:2452
    +
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1667
    Definition: libwebsockets.h:920
    LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
    -
    const char * value
    Definition: libwebsockets.h:1884
    -
    Definition: libwebsockets.h:2738
    -
    Definition: libwebsockets.h:4013
    -
    const char * username
    Definition: libwebsockets.h:1454
    +
    const char * value
    Definition: libwebsockets.h:1893
    +
    Definition: libwebsockets.h:2771
    +
    Definition: libwebsockets.h:4047
    +
    const char * username
    Definition: libwebsockets.h:1463
    LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
    -
    const char * protocol
    Definition: libwebsockets.h:1914
    -
    struct lws ** stdwsi
    Definition: libwebsockets.h:3804
    +
    const char * protocol
    Definition: libwebsockets.h:1923
    +
    struct lws ** stdwsi
    Definition: libwebsockets.h:3838
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
    Definition: libwebsockets.h:866
    LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)
    -
    Definition: libwebsockets.h:1425
    -
    int cache_max_age
    Definition: libwebsockets.h:1928
    -
    long ssl_options_clear
    Definition: libwebsockets.h:1676
    +
    Definition: libwebsockets.h:1434
    +
    int cache_max_age
    Definition: libwebsockets.h:1937
    +
    long ssl_options_clear
    Definition: libwebsockets.h:1685
    Definition: libwebsockets.h:759
    -
    Definition: libwebsockets.h:1544
    +
    Definition: libwebsockets.h:1553
    LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
    Definition: libwebsockets.h:607
    -
    char * start
    Definition: libwebsockets.h:2358
    +
    char * start
    Definition: libwebsockets.h:2391
    LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))
    -
    lws_callback_function * callback
    Definition: libwebsockets.h:1274
    -
    Definition: libwebsockets.h:3079
    +
    lws_callback_function * callback
    Definition: libwebsockets.h:1283
    +
    Definition: libwebsockets.h:3113
    LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
    Definition: libwebsockets.h:957
    -
    const char * protocol
    Definition: libwebsockets.h:1979
    +
    const char * protocol
    Definition: libwebsockets.h:1988
    Definition: libwebsockets.h:946
    -
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1663
    +
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1672
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
    -
    int len
    Definition: libwebsockets.h:2350
    -
    int ka_time
    Definition: libwebsockets.h:1599
    -
    Definition: libwebsockets.h:1499
    +
    int len
    Definition: libwebsockets.h:2383
    +
    int ka_time
    Definition: libwebsockets.h:1608
    +
    Definition: libwebsockets.h:1508
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
    LWS_VISIBLE LWS_EXTERN void lws_set_log_level(int level, void(*log_emit_function)(int level, const char *line))
    -
    unsigned short ws_ping_pong_interval
    Definition: libwebsockets.h:1678
    -
    int count_extensions
    Definition: libwebsockets.h:1384
    -
    Definition: libwebsockets.h:3083
    -
    int port
    Definition: libwebsockets.h:1969
    -
    struct lws_context * context
    Definition: libwebsockets.h:1965
    -
    Definition: libwebsockets.h:1431
    -
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:1981
    +
    unsigned short ws_ping_pong_interval
    Definition: libwebsockets.h:1687
    +
    int count_extensions
    Definition: libwebsockets.h:1393
    +
    Definition: libwebsockets.h:3117
    +
    int port
    Definition: libwebsockets.h:1978
    +
    struct lws_context * context
    Definition: libwebsockets.h:1974
    +
    Definition: libwebsockets.h:1440
    +
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:1990
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
    -
    Definition: libwebsockets.h:4006
    -
    Definition: libwebsockets.h:1880
    +
    Definition: libwebsockets.h:4040
    +
    Definition: libwebsockets.h:1889
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
    -
    const char *const * vars
    Definition: libwebsockets.h:2362
    +
    const char *const * vars
    Definition: libwebsockets.h:2395
    Definition: libwebsockets.h:559
    -
    Definition: libwebsockets.h:1964
    -
    int lws_extension_callback_function(struct lws_context *context, const struct lws_extension *ext, struct lws *wsi, enum lws_extension_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:1174
    +
    Definition: libwebsockets.h:1973
    +
    int lws_extension_callback_function(struct lws_context *context, const struct lws_extension *ext, struct lws *wsi, enum lws_extension_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:1183
    -
    int len
    Definition: libwebsockets.h:1110
    -
    Definition: libwebsockets.h:1905
    -
    const char * def
    Definition: libwebsockets.h:1912
    +
    int len
    Definition: libwebsockets.h:1119
    +
    Definition: libwebsockets.h:1914
    +
    const char * def
    Definition: libwebsockets.h:1921
    Definition: libwebsockets.h:720
    -
    Definition: libwebsockets.h:1511
    -
    lws_context_options
    Definition: libwebsockets.h:1482
    +
    Definition: libwebsockets.h:1520
    +
    lws_context_options
    Definition: libwebsockets.h:1491
    Definition: libwebsockets.h:898
    -
    Definition: libwebsockets.h:1448
    -
    Definition: libwebsockets.h:1517
    +
    Definition: libwebsockets.h:1457
    +
    Definition: libwebsockets.h:1526
    Definition: libwebsockets.h:886
    -
    const char * option_name
    Definition: libwebsockets.h:1107
    -
    Definition: libwebsockets.h:1893
    +
    const char * option_name
    Definition: libwebsockets.h:1116
    +
    Definition: libwebsockets.h:1902
    lws_sockfd_type fd
    Definition: libwebsockets.h:529
    -
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1567
    +
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1576
    short events
    Definition: libwebsockets.h:431
    -
    Definition: libwebsockets.h:1392
    -
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1383
    -
    const struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1906
    +
    Definition: libwebsockets.h:1401
    +
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1392
    +
    const struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1915
    LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
    -
    void * userdata
    Definition: libwebsockets.h:1983
    +
    void * userdata
    Definition: libwebsockets.h:1992
    Definition: libwebsockets.h:717
    Definition: libwebsockets.h:904
    LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
    -
    unsigned char * data
    Definition: libwebsockets.h:3806
    -
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1921
    +
    unsigned char * data
    Definition: libwebsockets.h:3840
    +
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1930
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_finalize_http_header(struct lws *wsi, unsigned char **p, unsigned char *end)
    Definition: libwebsockets.h:710
    LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)
    Definition: libwebsockets.h:791
    -
    uv_loop_t * loop
    Definition: libwebsockets.h:4021
    +
    uv_loop_t * loop
    Definition: libwebsockets.h:4055
    Definition: libwebsockets.h:889
    Definition: libwebsockets.h:72
    -
    Definition: libwebsockets.h:3115
    -
    int pos
    Definition: libwebsockets.h:2360
    -
    struct lws_plugin * list
    Definition: libwebsockets.h:1393
    +
    Definition: libwebsockets.h:3149
    +
    int pos
    Definition: libwebsockets.h:2393
    +
    struct lws_plugin * list
    Definition: libwebsockets.h:1402
    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_client_connect_extended(struct lws_context *clients, const char *address, int port, int ssl_connection, const char *path, const char *host, const char *origin, const char *protocol, int ietf_version_or_minus_one, void *userdata) LWS_WARN_DEPRECATED
    -
    short max_http_header_data
    Definition: libwebsockets.h:1619
    +
    short max_http_header_data
    Definition: libwebsockets.h:1628
    LWS_VISIBLE LWS_EXTERN int lws_spa_process(struct lws_spa *spa, const char *in, int len)
    -
    void * provided_client_ssl_ctx
    Definition: libwebsockets.h:1616
    +
    void * provided_client_ssl_ctx
    Definition: libwebsockets.h:1625
    LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_get_vhost(struct lws *wsi)
    Definition: libwebsockets.h:44
    LWS_VISIBLE LWS_EXTERN void lwsl_emit_syslog(int level, const char *line)
    -
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1381
    -
    Definition: libwebsockets.h:1086
    -
    int ka_probes
    Definition: libwebsockets.h:1602
    +
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1390
    +
    Definition: libwebsockets.h:1095
    +
    int ka_probes
    Definition: libwebsockets.h:1611
    void onError(Socket *s, socket_error_t err)
    -
    const char * origin
    Definition: libwebsockets.h:1977
    +
    const char * origin
    Definition: libwebsockets.h:1986
    SHORT revents
    Definition: libwebsockets.h:417
    -
    const char * method
    Definition: libwebsockets.h:1987
    +
    const char * method
    Definition: libwebsockets.h:1996
    LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)
    -
    Definition: libwebsockets.h:1180
    +
    Definition: libwebsockets.h:1189
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost, const struct lws_protocols *protocol)
    Definition: libwebsockets.h:926
    -
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:1985
    -
    unsigned char origin_protocol
    Definition: libwebsockets.h:1937
    -
    const char * log_filepath
    Definition: libwebsockets.h:1655
    +
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:1994
    +
    unsigned char origin_protocol
    Definition: libwebsockets.h:1946
    +
    const char * log_filepath
    Definition: libwebsockets.h:1664
    Definition: libwebsockets.h:766
    -
    unsigned int max_content_size
    Definition: libwebsockets.h:4029
    -
    int option_index
    Definition: libwebsockets.h:1108
    +
    unsigned int max_content_size
    Definition: libwebsockets.h:4063
    +
    int option_index
    Definition: libwebsockets.h:1117
    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_get_child(const struct lws *wsi)
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token, const unsigned char *value, int length, unsigned char **p, unsigned char *end)
    Definition: libwebsockets.h:762
    -
    const char * uri_replace_to
    Definition: libwebsockets.h:1997
    -
    struct lws * parent_wsi
    Definition: libwebsockets.h:1990
    +
    const char * uri_replace_to
    Definition: libwebsockets.h:2006
    +
    struct lws * parent_wsi
    Definition: libwebsockets.h:1999
    LWS_VISIBLE LWS_EXTERN int lws_b64_decode_string(const char *in, char *out, int out_size)
    -
    enum lwsgs_smtp_states estate
    Definition: libwebsockets.h:4052
    +
    enum lwsgs_smtp_states estate
    Definition: libwebsockets.h:4086
    LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)
    Definition: libwebsockets.h:662
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_get_count_threads(struct lws_context *context)
    -
    const char *const * plugin_dirs
    Definition: libwebsockets.h:1646
    -
    char name[64]
    Definition: libwebsockets.h:1399
    +
    const char *const * plugin_dirs
    Definition: libwebsockets.h:1655
    +
    char name[64]
    Definition: libwebsockets.h:1408
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx)
    LWS_VISIBLE LWS_EXTERN int lws_cgi_kill(struct lws *wsi)
    -
    char email_buf[256]
    Definition: libwebsockets.h:4056
    +
    char email_buf[256]
    Definition: libwebsockets.h:4090
    LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)
    -
    Definition: libwebsockets.h:1488
    -
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:3873
    -
    uv_lib_t lib
    Definition: libwebsockets.h:1395
    +
    Definition: libwebsockets.h:1497
    +
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:3907
    +
    uv_lib_t lib
    Definition: libwebsockets.h:1404
    x509_crt certificate
    Definition: libwebsockets.h:236
    LWS_VISIBLE LWS_EXTERN void lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name, int name_len, char *rip, int rip_len)
    -
    Definition: libwebsockets.h:4007
    +
    Definition: libwebsockets.h:4041
    LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
    -
    int ssl_connection
    Definition: libwebsockets.h:1971
    -
    Definition: libwebsockets.h:1447
    -
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1610
    +
    int ssl_connection
    Definition: libwebsockets.h:1980
    +
    Definition: libwebsockets.h:1456
    +
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1619
    LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
    -
    Definition: libwebsockets.h:2348
    +
    Definition: libwebsockets.h:2381
    LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)
    Definition: libwebsockets.h:528
    -
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1917
    -
    const char * name
    Definition: libwebsockets.h:1883
    -
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1938
    -
    Definition: libwebsockets.h:3086
    -
    Definition: libwebsockets.h:1506
    +
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1926
    +
    const char * name
    Definition: libwebsockets.h:1892
    +
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1947
    +
    Definition: libwebsockets.h:3120
    +
    Definition: libwebsockets.h:1515
    lws_sockfd_type fd
    Definition: libwebsockets.h:415
    -
    Definition: libwebsockets.h:1894
    +
    Definition: libwebsockets.h:1903
    LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)
    -
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1561
    -
    Definition: libwebsockets.h:1490
    +
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1570
    +
    Definition: libwebsockets.h:1499
    LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot, int size)
    -
    Definition: libwebsockets.h:1495
    -
    lws_ext_options_types
    Definition: libwebsockets.h:1084
    -
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1557
    +
    Definition: libwebsockets.h:1504
    +
    lws_ext_options_types
    Definition: libwebsockets.h:1093
    +
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1566
    LWS_VISIBLE LWS_EXTERN int lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
    LWS_VISIBLE LWS_EXTERN void * lws_wsi_user(struct lws *wsi)
    LWS_VISIBLE LWS_EXTERN unsigned long lws_now_secs(void)
    LWS_VISIBLE LWS_EXTERN const char * lws_get_peer_simple(struct lws *wsi, char *name, int namelen)
    -
    const char * start
    Definition: libwebsockets.h:1109
    -
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1581
    +
    const char * start
    Definition: libwebsockets.h:1118
    +
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1590
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name, const unsigned char *value, int length, unsigned char **p, unsigned char *end)
    -
    const char * mountpoint
    Definition: libwebsockets.h:1908
    -
    const char * http_proxy_address
    Definition: libwebsockets.h:1585
    +
    const char * mountpoint
    Definition: libwebsockets.h:1917
    +
    const char * http_proxy_address
    Definition: libwebsockets.h:1594
    rsa_context key
    Definition: libwebsockets.h:237
    -
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1569
    -
    const char * ecdh_curve
    Definition: libwebsockets.h:1640
    -
    int cgi_timeout
    Definition: libwebsockets.h:1926
    -
    Definition: libwebsockets.h:1896
    -
    Definition: libwebsockets.h:1432
    +
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1578
    +
    const char * ecdh_curve
    Definition: libwebsockets.h:1649
    +
    int cgi_timeout
    Definition: libwebsockets.h:1935
    +
    Definition: libwebsockets.h:1905
    +
    Definition: libwebsockets.h:1441
    Definition: libwebsockets.h:429
    Definition: libwebsockets.h:585
    LWS_VISIBLE LWS_EXTERN unsigned char lws_get_reserved_bits(struct lws *wsi)
    @@ -306,171 +306,172 @@ $(document).ready(function(){initNavTree('libwebsockets_8h_source.html','');});
    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_client_connect(struct lws_context *clients, const char *address, int port, int ssl_connection, const char *path, const char *host, const char *origin, const char *protocol, int ietf_version_or_minus_one) LWS_WARN_DEPRECATED
    Definition: libwebsockets.h:764
    LWS_VISIBLE LWS_EXTERN int lwsws_get_config_vhosts(struct lws_context *context, struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
    -
    Definition: libwebsockets.h:1515
    +
    Definition: libwebsockets.h:1524
    LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)
    Definition: libwebsockets.h:1002
    -
    Definition: libwebsockets.h:1527
    -
    uv_timer_t timeout_email
    Definition: libwebsockets.h:4051
    -
    Definition: libwebsockets.h:1497
    -
    short max_http_header_pool
    Definition: libwebsockets.h:1622
    +
    Definition: libwebsockets.h:1536
    +
    uv_timer_t timeout_email
    Definition: libwebsockets.h:4085
    +
    Definition: libwebsockets.h:1506
    +
    short max_http_header_pool
    Definition: libwebsockets.h:1631
    LWS_VISIBLE LWS_EXTERN int lws_chunked_html_process(struct lws_process_html_args *args, struct lws_process_html_state *s)
    -
    char * p
    Definition: libwebsockets.h:2349
    +
    char * p
    Definition: libwebsockets.h:2382
    x509_crt ca
    Definition: libwebsockets.h:235
    -
    size_t per_session_data_size
    Definition: libwebsockets.h:1278
    +
    size_t per_session_data_size
    Definition: libwebsockets.h:1287
    Definition: libwebsockets.h:569
    -
    lwsgs_smtp_states
    Definition: libwebsockets.h:4005
    -
    Definition: libwebsockets.h:1509
    +
    lwsgs_smtp_states
    Definition: libwebsockets.h:4039
    +
    Definition: libwebsockets.h:1518
    Definition: libwebsockets.h:842
    Definition: libwebsockets.h:728
    -
    Definition: libwebsockets.h:1270
    +
    Definition: libwebsockets.h:1279
    Definition: libwebsockets.h:574
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len, unsigned char **p, unsigned char *end)
    -
    unsigned int count_threads
    Definition: libwebsockets.h:1629
    -
    const char * email
    Definition: libwebsockets.h:1455
    +
    unsigned int count_threads
    Definition: libwebsockets.h:1638
    +
    const char * email
    Definition: libwebsockets.h:1464
    LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)
    Definition: libwebsockets.h:556
    -
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:4053
    -
    const char * server_string
    Definition: libwebsockets.h:1660
    -
    Definition: libwebsockets.h:1520
    +
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:4087
    +
    const char * server_string
    Definition: libwebsockets.h:1669
    +
    Definition: libwebsockets.h:1529
    SHORT events
    Definition: libwebsockets.h:416
    Definition: libwebsockets.h:733
    -
    Definition: libwebsockets.h:1504
    -
    const char * vhost_name
    Definition: libwebsockets.h:1642
    -
    Definition: libwebsockets.h:1897
    +
    Definition: libwebsockets.h:1513
    +
    const char * vhost_name
    Definition: libwebsockets.h:1651
    +
    Definition: libwebsockets.h:1906
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_get_protocol(struct lws *wsi)
    -
    Definition: libwebsockets.h:1430
    -
    Definition: libwebsockets.h:1452
    -
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1631
    +
    Definition: libwebsockets.h:1439
    +
    Definition: libwebsockets.h:1461
    +
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1640
    LWS_VISIBLE LWS_EXTERN int lws_cgi_write_split_stdout_headers(struct lws *wsi)
    -
    lws_gs_event
    Definition: libwebsockets.h:1446
    +
    lws_gs_event
    Definition: libwebsockets.h:1455
    LWS_VISIBLE LWS_EXTERN int lws_finalize_startup(struct lws_context *context)
    -
    int ka_interval
    Definition: libwebsockets.h:1606
    -
    Definition: libwebsockets.h:1429
    -
    int uid
    Definition: libwebsockets.h:1592
    -
    Definition: libwebsockets.h:2740
    +
    int ka_interval
    Definition: libwebsockets.h:1615
    +
    Definition: libwebsockets.h:1438
    +
    int uid
    Definition: libwebsockets.h:1601
    +
    Definition: libwebsockets.h:2773
    LWS_VISIBLE LWS_EXTERN int lws_b64_encode_string(const char *in, int in_len, char *out, int out_size)
    LWS_VISIBLE LWS_EXTERN void * lws_context_user(struct lws_context *context)
    -
    const char * name
    Definition: libwebsockets.h:1271
    +
    const char * name
    Definition: libwebsockets.h:1280
    LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
    -
    Definition: libwebsockets.h:4011
    -
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1588
    +
    Definition: libwebsockets.h:4045
    +
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1597
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
    -
    unsigned int timeout_secs
    Definition: libwebsockets.h:1635
    -
    int port
    Definition: libwebsockets.h:1545
    +
    unsigned int timeout_secs
    Definition: libwebsockets.h:1644
    +
    int port
    Definition: libwebsockets.h:1554
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_parse_uri(char *p, const char **prot, const char **ads, int *port, const char **path)
    -
    unsigned int options
    Definition: libwebsockets.h:1594
    +
    unsigned int options
    Definition: libwebsockets.h:1603
    LWS_VISIBLE LWS_EXTERN int lws_spa_get_length(struct lws_spa *spa, int n)
    -
    const struct lws_protocol_vhost_options * options
    Definition: libwebsockets.h:1882
    +
    const struct lws_protocol_vhost_options * options
    Definition: libwebsockets.h:1891
    int prev_events
    Definition: libwebsockets.h:531
    -
    int keepalive_timeout
    Definition: libwebsockets.h:1652
    -
    Definition: libwebsockets.h:1436
    -
    Definition: libwebsockets.h:1097
    -
    Definition: libwebsockets.h:2537
    +
    int keepalive_timeout
    Definition: libwebsockets.h:1661
    +
    Definition: libwebsockets.h:1445
    +
    Definition: libwebsockets.h:1106
    +
    Definition: libwebsockets.h:2570
    LWS_VISIBLE LWS_EXTERN int lws_write(struct lws *wsi, unsigned char *buf, size_t len, enum lws_write_protocol protocol)
    -
    const struct lws_protocol_vhost_options * pvo
    Definition: libwebsockets.h:1649
    -
    const char * host
    Definition: libwebsockets.h:1975
    -
    Definition: libwebsockets.h:1106
    +
    const struct lws_protocol_vhost_options * pvo
    Definition: libwebsockets.h:1658
    +
    const char * host
    Definition: libwebsockets.h:1984
    +
    Definition: libwebsockets.h:1115
    Definition: libwebsockets.h:595
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name)
    -
    int len
    Definition: libwebsockets.h:3808
    +
    int len
    Definition: libwebsockets.h:3842
    LWS_VISIBLE LWS_EXTERN const char * lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len)
    -
    const char * iface
    Definition: libwebsockets.h:1550
    -
    Definition: libwebsockets.h:3867
    +
    const char * iface
    Definition: libwebsockets.h:1559
    +
    Definition: libwebsockets.h:3901
    LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
    -
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2735
    +
    Definition: libwebsockets.h:1007
    +
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2768
    LWS_VISIBLE LWS_EXTERN int lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd)
    LWS_VISIBLE LWS_EXTERN int lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len)
    Definition: libwebsockets.h:553
    Definition: libwebsockets.h:562
    LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
    -
    uv_tcp_t email_client
    Definition: libwebsockets.h:4054
    +
    uv_tcp_t email_client
    Definition: libwebsockets.h:4088
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len)
    Definition: libwebsockets.h:414
    Definition: libwebsockets.h:666
    -
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:3868
    -
    lws_write_protocol
    Definition: libwebsockets.h:3078
    -
    const char * client_offer
    Definition: libwebsockets.h:1183
    -
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3878
    +
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:3902
    +
    lws_write_protocol
    Definition: libwebsockets.h:3112
    +
    const char * client_offer
    Definition: libwebsockets.h:1192
    +
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3912
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
    -
    Definition: libwebsockets.h:2736
    +
    Definition: libwebsockets.h:2769
    Definition: libwebsockets.h:567
    -
    const char * origin
    Definition: libwebsockets.h:1910
    -
    const char * name
    Definition: libwebsockets.h:1098
    +
    const char * origin
    Definition: libwebsockets.h:1919
    +
    const char * name
    Definition: libwebsockets.h:1107
    LWS_VISIBLE LWS_EXTERN int lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type, const char *other_headers, int other_headers_len)
    LWS_VISIBLE LWS_EXTERN void lws_email_check(struct lws_email *email)
    LWS_VISIBLE LWS_EXTERN int lws_set_proxy(struct lws_vhost *vhost, const char *proxy)
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_frame_is_binary(struct lws *wsi)
    LWS_VISIBLE LWS_EXTERN int lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h)
    Definition: libwebsockets.h:743
    -
    const char * name
    Definition: libwebsockets.h:1181
    -
    Definition: libwebsockets.h:4010
    +
    const char * name
    Definition: libwebsockets.h:1190
    +
    Definition: libwebsockets.h:4044
    short revents
    Definition: libwebsockets.h:432
    -
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1182
    -
    long ssl_options_set
    Definition: libwebsockets.h:1674
    -
    Definition: libwebsockets.h:1010
    +
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1191
    +
    long ssl_options_set
    Definition: libwebsockets.h:1683
    +
    Definition: libwebsockets.h:1019
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED
    -
    unsigned int mask
    Definition: libwebsockets.h:1440
    +
    unsigned int mask
    Definition: libwebsockets.h:1449
    LWS_VISIBLE LWS_EXTERN int lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content)
    -
    lws_mount_protocols
    Definition: libwebsockets.h:1891
    +
    lws_mount_protocols
    Definition: libwebsockets.h:1900
    LWS_EXTERN int lws_extension_callback_pm_deflate(struct lws_context *context, const struct lws_extension *ext, struct lws *wsi, enum lws_extension_callback_reasons reason, void *user, void *in, size_t len)
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_content_length(struct lws *wsi, unsigned long content_length, unsigned char **p, unsigned char *end)
    lws_sockfd_type fd
    Definition: libwebsockets.h:430
    -
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1669
    -
    Definition: libwebsockets.h:1892
    +
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1678
    +
    Definition: libwebsockets.h:1901
    LWS_VISIBLE LWS_EXTERN int lws_return_http_status(struct lws *wsi, unsigned int code, const char *html_body)
    LWS_EXTERN LWS_VISIBLE struct lws_vhost * lws_create_vhost(struct lws_context *context, struct lws_context_creation_info *info)
    -
    const struct lws_protocol_vhost_options * interpret
    Definition: libwebsockets.h:1923
    +
    const struct lws_protocol_vhost_options * interpret
    Definition: libwebsockets.h:1932
    LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
    -
    Definition: libwebsockets.h:1502
    +
    Definition: libwebsockets.h:1511
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
    -
    int count_vars
    Definition: libwebsockets.h:2363
    +
    int count_vars
    Definition: libwebsockets.h:2396
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_add_http_header_status(struct lws *wsi, unsigned int code, unsigned char **p, unsigned char *end)
    -
    Definition: libwebsockets.h:2417
    +
    Definition: libwebsockets.h:2450
    LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)
    Definition: libwebsockets.h:722
    -
    void * data
    Definition: libwebsockets.h:2361
    -
    char * content
    Definition: libwebsockets.h:4057
    +
    void * data
    Definition: libwebsockets.h:2394
    +
    char * content
    Definition: libwebsockets.h:4091
    LWS_VISIBLE LWS_EXTERN int lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr, size_t addrlen)
    -
    const struct lws_token_limits * token_limits
    Definition: libwebsockets.h:1564
    -
    lws_process_html_state_cb replace
    Definition: libwebsockets.h:2365
    -
    Definition: libwebsockets.h:4018
    -
    const char * address
    Definition: libwebsockets.h:1967
    -
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:3875
    -
    void * user
    Definition: libwebsockets.h:1299
    +
    const struct lws_token_limits * token_limits
    Definition: libwebsockets.h:1573
    +
    lws_process_html_state_cb replace
    Definition: libwebsockets.h:2398
    +
    Definition: libwebsockets.h:4052
    +
    const char * address
    Definition: libwebsockets.h:1976
    +
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:3909
    +
    void * user
    Definition: libwebsockets.h:1308
    int events
    Definition: libwebsockets.h:530
    -
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:4044
    -
    Definition: libwebsockets.h:1898
    -
    void * user
    Definition: libwebsockets.h:1596
    -
    Definition: libwebsockets.h:4014
    -
    Definition: libwebsockets.h:3101
    -
    char * token
    Definition: libwebsockets.h:2418
    +
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:4078
    +
    Definition: libwebsockets.h:1907
    +
    void * user
    Definition: libwebsockets.h:1605
    +
    Definition: libwebsockets.h:4048
    +
    Definition: libwebsockets.h:3135
    +
    char * token
    Definition: libwebsockets.h:2451
    LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot)
    -
    int count_protocols
    Definition: libwebsockets.h:1382
    -
    void * l
    Definition: libwebsockets.h:1397
    -
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1573
    -
    int max_len
    Definition: libwebsockets.h:2351
    +
    int count_protocols
    Definition: libwebsockets.h:1391
    +
    void * l
    Definition: libwebsockets.h:1406
    +
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1582
    +
    int max_len
    Definition: libwebsockets.h:2384
    Definition: libwebsockets.h:724
    -
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1881
    +
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1890
    Definition: libwebsockets.h:735
    LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
    -
    Definition: libwebsockets.h:2357
    +
    Definition: libwebsockets.h:2390
    LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
    Definition: libwebsockets.h:934
    -
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1579
    -
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:1955
    -
    int gid
    Definition: libwebsockets.h:1590
    -
    struct lws_vhost * vhost
    Definition: libwebsockets.h:1999
    -
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:1032
    +
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1588
    +
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:1964
    +
    int gid
    Definition: libwebsockets.h:1599
    +
    struct lws_vhost * vhost
    Definition: libwebsockets.h:2008
    +
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:1041
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
    -
    Definition: libwebsockets.h:1522
    +
    Definition: libwebsockets.h:1531
    Definition: libwebsockets.h:603
    -
    Definition: libwebsockets.h:4009
    -
    unsigned int api_magic
    Definition: libwebsockets.h:1380
    -
    Definition: libwebsockets.h:1525
    +
    Definition: libwebsockets.h:4043
    +
    unsigned int api_magic
    Definition: libwebsockets.h:1389
    +
    Definition: libwebsockets.h:1534
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
    -
    Definition: libwebsockets.h:4012
    -
    int(* lws_spa_fileupload_cb)(void *data, const char *name, const char *filename, char *buf, int len, enum lws_spa_fileupload_states state)
    Definition: libwebsockets.h:2757
    +
    Definition: libwebsockets.h:4046
    +
    int(* lws_spa_fileupload_cb)(void *data, const char *name, const char *filename, char *buf, int len, enum lws_spa_fileupload_states state)
    Definition: libwebsockets.h:2790
    diff --git a/doc/html/navtreedata.js b/doc/html/navtreedata.js index e41a7462..52a4d3f3 100644 --- a/doc/html/navtreedata.js +++ b/doc/html/navtreedata.js @@ -133,9 +133,9 @@ var NAVTREEINDEX = [ "annotated.html", "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc", -"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5", -"libwebsockets_8h.html#a27551d6899b1e4de4b2b5854e805c6eb", -"structlws__plugin.html#a65dffd68fd267ce17b988790d1d35f22" +"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d", +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f", +"structlws__plat__file__ops.html#abfcda19b003dcc13c61ff9e2bb4ff869" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js index 6ffbf7ad..b070e0c1 100644 --- a/doc/html/navtreeindex0.js +++ b/doc/html/navtreeindex0.js @@ -42,25 +42,25 @@ var NAVTREEINDEX0 = "group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8":[9,6,3,0], "group__HTTP-headers-create.html#ga2b36bf44405755ff51c1939303b995a8":[11,0,0,0,45], "group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[9,6,3,4], -"group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[11,0,0,0,84], +"group__HTTP-headers-create.html#ga4887605ff2242a54db3a7fa01f6f864b":[11,0,0,0,85], "group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[9,6,3,2], "group__HTTP-headers-create.html#gacc76a5babcb4dce1b01b1955aa7a2faf":[11,0,0,0,47], "group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[9,6,3,1], "group__HTTP-headers-create.html#gaf74adb761b22566ad70004882712dce1":[11,0,0,0,46], "group__HTTP-headers-read.html":[9,6,4], -"group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[11,0,0,0,151], +"group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[11,0,0,0,152], "group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[9,6,4,7], "group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[9,6,4,5], -"group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[11,0,0,0,105], +"group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[11,0,0,0,106], "group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[9,6,4,3], -"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[11,0,0,0,103], +"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[11,0,0,0,104], "group__HTTP-headers-read.html#ga6e747906f9d76532ec118d6ef418b82e":[11,0,0,0,34], "group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[9,6,4,2], -"group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[11,0,0,0,101], +"group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[11,0,0,0,102], "group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[9,6,4,6], -"group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[11,0,0,0,106], +"group__HTTP-headers-read.html#ga8ade0e1ffb0da7e62b989d8d867bf6c8":[11,0,0,0,107], "group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[9,6,4,4], -"group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[11,0,0,0,104], +"group__HTTP-headers-read.html#gaa427cad61a9a5e3004afd65c4527b5e9":[11,0,0,0,105], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea03293996964a8bb617215508908048d4":[11,0,0,0,34,42], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea05c73ad09f25570a50068de13333e41a":[11,0,0,0,34,57], "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82ea0784fa0e5bdbacd1e14c2d6ba0c42992":[11,0,0,0,34,27], @@ -155,19 +155,19 @@ var NAVTREEINDEX0 = "group__HTTP-headers-read.html#gga6e747906f9d76532ec118d6ef418b82eafc1e8568187b2de76e2ddd5cc692908e":[11,0,0,0,34,79], "group__Protocols-and-Plugins.html":[9,10], "group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[9,10,4], -"group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[11,0,0,0,85], -"group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[11,0,0,0,159], +"group__Protocols-and-Plugins.html#ga106b37ae9c247e84d191ab09441adc43":[11,0,0,0,86], +"group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[11,0,0,0,160], "group__Protocols-and-Plugins.html#ga25754726d97c5f519d313e691a9fe29d":[9,10,9], "group__Protocols-and-Plugins.html#ga40994491e1567f91f579d2b444775266":[11,0,0,0,13], "group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[9,10,5], -"group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[11,0,0,0,97], +"group__Protocols-and-Plugins.html#ga72ad550786ca7976463589d347e62112":[11,0,0,0,98], "group__Protocols-and-Plugins.html#ga83f7a924ba790fa273476075a59f08b0":[11,0,0,0,12], "group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[9,10,6], -"group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[11,0,0,0,123], +"group__Protocols-and-Plugins.html#ga8bbe5e65faca068845704bab911a5030":[11,0,0,0,124], +"group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[11,0,0,0,126], "group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[9,10,8], -"group__Protocols-and-Plugins.html#gaec0c0477288ff3f83aff38d357b883d1":[11,0,0,0,125], "group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[9,10,7], -"group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[11,0,0,0,124], +"group__Protocols-and-Plugins.html#gaf3be4243443baac0f8be1fcfb4d25129":[11,0,0,0,125], "group__callback-when-writeable.html":[9,1], "group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[9,1,1], "group__callback-when-writeable.html#ga13c984d8c5a44a745fd02bc2fba36053":[11,0,0,0,54], @@ -178,23 +178,24 @@ var NAVTREEINDEX0 = "group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[9,1,2], "group__callback-when-writeable.html#ga941caaa468bc507b1cae52275f58800d":[11,0,0,0,56], "group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[9,1,7], -"group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[11,0,0,0,100], +"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,96], +"group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[11,0,0,0,97], "group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,1,0], "group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[11,0,0,0,53], "group__cgi.html":[9,19], "group__client.html":[9,2], "group__client.html#ga0c966136905f467816307cfba6deb5fd":[9,2,4], "group__client.html#ga0c966136905f467816307cfba6deb5fd":[11,0,0,0,69], -"group__client.html#ga4450c34200bf9dab3beb90ef23221870":[11,0,0,0,107], +"group__client.html#ga26588fb345083076c14169dd5859f57a":[11,0,0,0,70], +"group__client.html#ga4450c34200bf9dab3beb90ef23221870":[11,0,0,0,108], "group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[9,2,2], "group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[11,0,0,0,67], "group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[9,2,5], -"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[11,0,0,0,110], +"group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[11,0,0,0,111], "group__client.html#ga96f3dbad54b2853969cfa933d66871ce":[9,2,1], "group__client.html#ga96f3dbad54b2853969cfa933d66871ce":[11,0,0,0,24], "group__client.html#gac6a8558b4410961a880241c2ac1271e2":[9,2,3], @@ -204,29 +205,29 @@ var NAVTREEINDEX0 = "group__client.html#gga96f3dbad54b2853969cfa933d66871ceafc72c0ffbc7462bdddd4ce7bd99ac092":[11,0,0,0,24,1], "group__context-and-vhost.html":[9,4], "group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,4,8], -"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[11,0,0,0,102], +"group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[11,0,0,0,103], "group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[9,4,7], -"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,74], -"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[11,0,0,0,166], +"group__context-and-vhost.html#ga0c54c667ccd9b8b3dddcd123ca72f87c":[11,0,0,0,75], +"group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[11,0,0,0,167], "group__context-and-vhost.html#ga341064721add2618ae1b29717493a212":[9,4,14], "group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[11,0,0,0,26], "group__context-and-vhost.html#ga41c2d763f78cc248df3b9f8645dbd2a5":[9,4,3], -"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[11,0,0,0,141], +"group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[11,0,0,0,142], "group__context-and-vhost.html#ga7e9d5405547a457d86e0b4f0ae2bb1c4":[9,4,11], -"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[11,0,0,0,158], +"group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[11,0,0,0,159], "group__context-and-vhost.html#ga8db03e19a372e34ac25cf21af894a02c":[9,4,12], -"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[11,0,0,0,71], +"group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[11,0,0,0,72], "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb":[9,4,4], "group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[9,4,10], -"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[11,0,0,0,116], -"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[11,0,0,0,165], +"group__context-and-vhost.html#ga94e6cc2223c4eec316b13bcebc3628b6":[11,0,0,0,117], +"group__context-and-vhost.html#ga98d88c9080fd89c37114363a6474ea73":[11,0,0,0,166], "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,115], -"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[11,0,0,0,72], +"group__context-and-vhost.html#gae2134657cdd2ea7a59e13ad314e4c50d":[11,0,0,0,116], "group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[9,4,5], +"group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da":[11,0,0,0,73], "group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[9,4,6], -"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[11,0,0,0,73], +"group__context-and-vhost.html#gaf2fff58562caab7510c41eeac85a8648":[11,0,0,0,74], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[11,0,0,0,26,8], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c":[9,4,3,8], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d":[11,0,0,0,26,2], @@ -248,6 +249,5 @@ var NAVTREEINDEX0 = "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[11,0,0,0,26,13], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941":[9,4,3,13], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[11,0,0,0,26,7], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[9,4,3,7], -"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[11,0,0,0,26,6] +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f":[9,4,3,7] }; diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js index 7f94fe6e..eb423659 100644 --- a/doc/html/navtreeindex1.js +++ b/doc/html/navtreeindex1.js @@ -1,5 +1,6 @@ var NAVTREEINDEX1 = { +"group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[11,0,0,0,26,6], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc":[9,4,3,6], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[11,0,0,0,26,14], "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016":[9,4,3,14], @@ -13,19 +14,19 @@ var NAVTREEINDEX1 = "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e":[9,4,3,9], "group__ev.html":[9,21], "group__ev.html#ga3b0ffd4d2b4fa791c0fd75353a330208":[11,0,0,0,9], -"group__ev.html#ga3fdd23ded693b21853356dc9eaef5ccc":[11,0,0,0,79], -"group__ev.html#ga5caf14a420a2a0bd687a1fc952f8d64e":[11,0,0,0,81], -"group__ev.html#gaabfc0880d6a98133550c61aa01ef3563":[11,0,0,0,80], +"group__ev.html#ga3fdd23ded693b21853356dc9eaef5ccc":[11,0,0,0,80], +"group__ev.html#ga5caf14a420a2a0bd687a1fc952f8d64e":[11,0,0,0,82], +"group__ev.html#gaabfc0880d6a98133550c61aa01ef3563":[11,0,0,0,81], "group__extensions.html":[9,5], "group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e":[9,5,6], -"group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e":[11,0,0,0,83], +"group__extensions.html#ga4cdbe42d872e21a448a947714d6c607e":[11,0,0,0,84], "group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b":[9,5,5], -"group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b":[11,0,0,0,82], +"group__extensions.html#ga6fb3e2c3dfb9d64dc87026a4e99c128b":[11,0,0,0,83], "group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0":[9,5,3], "group__extensions.html#gaae7169b2cd346b34fa33d0250db2afd0":[11,0,0,0,10], "group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[9,5,4], "group__extensions.html#gacc9f55936dc165257a2e1f7d47bce89e":[11,0,0,0,28], -"group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[11,0,0,0,139], +"group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[11,0,0,0,140], "group__extensions.html#gae0e24e1768f83a7fb07896ce975704b9":[9,5,7], "group__extensions.html#gae9993815eee72c6070300a0ae2f022d7":[11,0,0,0,29], "group__extensions.html#ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e":[9,5,4,1], @@ -63,23 +64,23 @@ var NAVTREEINDEX1 = "group__extensions.html#ggae9993815eee72c6070300a0ae2f022d7afa4a8739f6424c4dac3eead479628002":[11,0,0,0,29,1], "group__fops.html":[9,20], "group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[9,20,1], -"group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[11,0,0,0,90], +"group__fops.html#gac08aef64c4c34647ed699b24759b6b0e":[11,0,0,0,91], "group__form-parsing.html":[9,6,0], -"group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[11,0,0,0,144], +"group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[11,0,0,0,145], "group__form-parsing.html#ga162f86762173a2bc8c28497941d74815":[9,6,0,2], -"group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[11,0,0,0,148], +"group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[11,0,0,0,149], "group__form-parsing.html#ga2da476217166da02704b90d3a8d4f3cd":[9,6,0,6], -"group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[11,0,0,0,147], +"group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[11,0,0,0,148], "group__form-parsing.html#ga3fbe378632f85ec9a14cc2c1687bf05f":[9,6,0,5], "group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[9,6,0,1], "group__form-parsing.html#ga41a74a822771d3dce89751aa3bce28ae":[11,0,0,0,33], "group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e":[9,6,0,0], "group__form-parsing.html#ga5a70527c0861c2ffa3d29333a6aa7f8e":[11,0,0,0,16], -"group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[11,0,0,0,146], +"group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[11,0,0,0,147], "group__form-parsing.html#ga83835bf250ee3d4a60f36a182f2b8d24":[9,6,0,4], -"group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[11,0,0,0,149], +"group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[11,0,0,0,150], "group__form-parsing.html#ga9ad9ebf5ea1a7108415ed7e04cb231d2":[9,6,0,7], -"group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[11,0,0,0,145], +"group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[11,0,0,0,146], "group__form-parsing.html#gaaa482f07dad3f04b391cccf0a814e13b":[9,6,0,3], "group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[9,6,0,1,2], "group__form-parsing.html#gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83":[11,0,0,0,33,2], @@ -140,27 +141,27 @@ var NAVTREEINDEX1 = "group__html-chunked-substitution.html#ggabc3b93f68c8bdd857ad32913628dfa8dafac24097912a70f224166528ce44b83b":[11,0,0,0,21,7], "group__http.html":[9,6], "group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[9,6,7], -"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[11,0,0,0,108], +"group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[11,0,0,0,109], +"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[11,0,0,0,129], "group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[9,6,9], -"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[11,0,0,0,128], "group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[9,6,8], -"group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[11,0,0,0,109], +"group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[11,0,0,0,110], "group__httpft.html":[9,6,2], -"group__httpft.html#ga29e1123f6d56cd777b3e5bf9ca40f9e5":[11,0,0,0,133], -"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[11,0,0,0,132], +"group__httpft.html#ga29e1123f6d56cd777b3e5bf9ca40f9e5":[11,0,0,0,134], +"group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[11,0,0,0,133], "group__httpft.html#gab393a06d3d2722af4c3f8b06842c80d7":[9,6,2,1], "group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[9,6,2,0], -"group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[11,0,0,0,92], +"group__httpft.html#gab4da87a4800413f15e7aba649fb1d77c":[11,0,0,0,93], "group__log.html":[9,7], "group__log.html#ga14542b84d2c76efa7814124bb10f9c5f":[11,0,0,0,31], -"group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[11,0,0,0,140], +"group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[11,0,0,0,141], "group__log.html#ga244647f9e1bf0097ccdde66d74f41e26":[9,7,0], -"group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[11,0,0,0,164], +"group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[11,0,0,0,165], "group__log.html#ga42e39775c6b69b7251bdbf5a2cdd5dcd":[9,7,3], "group__log.html#ga74eb146969f0595e12ea835851b4588e":[11,0,0,0,40], -"group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[11,0,0,0,163], +"group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[11,0,0,0,164], "group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[9,7,2], -"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[11,0,0,0,162], +"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[11,0,0,0,163], "group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[9,7,1], "group__log.html#gaf5f07837692b2f231a79da8a058288aa":[11,0,0,0,39], "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa083a44e71966a0e768426e477e1bc358":[11,0,0,0,31,8], @@ -176,46 +177,46 @@ var NAVTREEINDEX1 = "group__log.html#gga14542b84d2c76efa7814124bb10f9c5faff4895280366d59ef0c5e9f4578241af":[11,0,0,0,31,0], "group__misc.html":[9,8], "group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[9,8,2], -"group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[11,0,0,0,88], -"group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[11,0,0,0,126], +"group__misc.html#ga0af4f7d2dd375aeedcfa7eb0e1101c4b":[11,0,0,0,89], +"group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[11,0,0,0,127], "group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[9,8,8], -"group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[11,0,0,0,121], +"group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[11,0,0,0,122], "group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[9,8,7], -"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[11,0,0,0,120], +"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[11,0,0,0,121], "group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[9,8,6], -"group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[11,0,0,0,98], +"group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[11,0,0,0,99], "group__misc.html#ga629f48268fd1856b54b11172991b97d9":[9,8,3], -"group__misc.html#ga629f48268fd1856b54b11172991b97d9":[11,0,0,0,89], +"group__misc.html#ga629f48268fd1856b54b11172991b97d9":[11,0,0,0,90], "group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[9,8,5], -"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[11,0,0,0,93], -"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[11,0,0,0,161], +"group__misc.html#ga8930fe36a3f3eefe4a6a4fd499d8e899":[11,0,0,0,94], +"group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[11,0,0,0,162], "group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,8,10], -"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,138], "group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9], +"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,139], "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,8,4], -"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[11,0,0,0,91], +"group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[11,0,0,0,92], "group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[9,8,1], -"group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[11,0,0,0,87], +"group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[11,0,0,0,88], "group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[9,8,0], -"group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[11,0,0,0,75], +"group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[11,0,0,0,76], "group__net.html":[9,9], "group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,9,1], -"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[11,0,0,0,94], +"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[11,0,0,0,95], "group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,9,3], -"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[11,0,0,0,111], +"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[11,0,0,0,112], "group__net.html#gad01014fed09759741b6d23afccfdaacc":[9,9,2], -"group__net.html#gad01014fed09759741b6d23afccfdaacc":[11,0,0,0,95], +"group__net.html#gad01014fed09759741b6d23afccfdaacc":[11,0,0,0,96], "group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[9,9,0], "group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[11,0,0,0,62], "group__pur.html":[9,12], -"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[11,0,0,0,150], +"group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[11,0,0,0,151], "group__pur.html#ga9cc82f06e5ae7e71458626d7a39a5865":[9,12,1], "group__pur.html#gab15187efcfa256b7c928562c182b92a3":[9,12,0], -"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[11,0,0,0,117], +"group__pur.html#gab15187efcfa256b7c928562c182b92a3":[11,0,0,0,118], "group__sending-data.html":[9,13], "group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[9,13,0], "group__sending-data.html#ga98b099cf8c1c7e38ad78501f270e193d":[11,0,0,0,35], -"group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[11,0,0,0,160], +"group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[11,0,0,0,161], "group__sending-data.html#gafd5fdd285a0e25ba7e3e1051deec1001":[9,13,1], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[9,13,0,2], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826":[11,0,0,0,35,2], @@ -235,19 +236,18 @@ var NAVTREEINDEX1 = "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,13,0,4], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[11,0,0,0,35,7], "group__service.html":[9,0], -"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,61], "group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[9,0,1], +"group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[11,0,0,0,61], "group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[9,0,0], "group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,60], +"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,138], "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,5], -"group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,137], -"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,135], +"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,136], "group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,3], -"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,136], +"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,137], "group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,4], +"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,135], "group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,2], -"group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,134], "group__sha.html":[9,11], -"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[9,11,0], -"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[11,0,0,0,51] +"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[9,11,0] }; diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js index 4d559490..9461a24a 100644 --- a/doc/html/navtreeindex2.js +++ b/doc/html/navtreeindex2.js @@ -1,45 +1,46 @@ var NAVTREEINDEX2 = { -"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[11,0,0,0,143], +"group__sha.html#ga66316e6a5a0644a09d5a10e919dfdd8d":[11,0,0,0,51], +"group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[11,0,0,0,144], "group__sha.html#ga7b09ab74646266f0b555103b3bb8dfe5":[9,11,2], "group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[9,11,1], "group__sha.html#gaf39765e4a3b413efb65e4698b2ec3575":[11,0,0,0,52], "group__smtp.html":[9,14], "group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[9,14,1], "group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[11,0,0,0,37], -"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,77], +"group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,78], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,14,3], -"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[11,0,0,0,76], +"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[11,0,0,0,77], "group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,14,2], +"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[11,0,0,0,79], "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,14,4], -"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[11,0,0,0,78], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[9,14,1,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[11,0,0,0,37,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[9,14,1,0], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,37,0], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,37,8], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,37,7], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,14,1,7], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,37,6], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,37,7], "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":[9,14,1,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[11,0,0,0,37,5], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,14,1,2], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[11,0,0,0,37,2], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,14,1,2], "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#gabe71b7462afb21c767bdc67334f305af":[11,0,0,0,49], "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0], +"group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[11,0,0,0,49], "group__timeout.html":[9,3], "group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[11,0,0,0,38], -"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[11,0,0,0,142], "group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,3,0], +"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[11,0,0,0,143], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e":[11,0,0,0,38,12], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0eef059426f37d00b75142d4dc3e25e3":[11,0,0,0,38,3], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a1104c39d0177378713a9332ab7a9d7fe":[11,0,0,0,38,4], @@ -53,15 +54,16 @@ var NAVTREEINDEX2 = "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a65785467c0b560bead865231fdd405d7":[11,0,0,0,38,0], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a73f61afae387e16f7ab8a4f299aca8d2":[11,0,0,0,38,14], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a7d5b3bcc88ccbddfa57674e174a78c2d":[11,0,0,0,38,9], +"group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a8587dc22f946c45e2f38c4045479fda5":[11,0,0,0,38,18], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaac32d9ca2f7c31f5649ad4059d7b985":[11,0,0,0,38,16], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87aaf69f440c2e000787efae5ad6f39e74c":[11,0,0,0,38,11], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ab20463ee983bcd68cd8a501319da56d3":[11,0,0,0,38,6], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ad7ebebb506afd30c48e1e5e3a578cd30":[11,0,0,0,38,1], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87ae8b3de955cec5da5ea52fe040f914501":[11,0,0,0,38,10], "group__urlendec.html":[9,6,5], -"group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[11,0,0,0,152], +"group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[11,0,0,0,153], "group__urlendec.html#gaa373a9c16acdd96c395af61ab915ece3":[9,6,5,0], -"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[11,0,0,0,153], +"group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[11,0,0,0,154], "group__urlendec.html#gabc2888476e50e001c875c1a8abf455b7":[9,6,5,1], "group__usercb.html":[9,16], "group__usercb.html#gad4fcb82e68d60ffacca61a3f783a0a2f":[11,0,0,0,8], @@ -85,15 +87,15 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a23b90b5e5146e760bc3123ae1fd2a6e5":[11,0,0,0,22,40], "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#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[11,0,0,0,22,7], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[11,0,0,0,22,14], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[9,16,1,14], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e":[11,0,0,0,22,25], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e":[9,16,1,25], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a45d538082dec32dbecfe9d9a05ddfecd":[11,0,0,0,22,50], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[11,0,0,0,22,4], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[9,16,1,4], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[11,0,0,0,22,4], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[11,0,0,0,22,6], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[9,16,1,6], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa":[11,0,0,0,22,28], @@ -102,25 +104,25 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a6a09ee9c01c4a233aedbe6697e29cc01":[11,0,0,0,22,44], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c":[11,0,0,0,22,18], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c":[9,16,1,18], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[11,0,0,0,22,3], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[9,16,1,3], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[11,0,0,0,22,3], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[11,0,0,0,22,11], "group__usercb.html#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], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[11,0,0,0,22,10], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[9,16,1,10], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[11,0,0,0,22,10], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[11,0,0,0,22,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[9,16,1,24], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[11,0,0,0,22,57], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[9,16,1,40], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[11,0,0,0,22,37], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[11,0,0,0,22,58], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[9,16,1,41], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[9,16,1,37], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,22,2], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[11,0,0,0,22,37], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,16,1,2], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,22,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], @@ -143,44 +145,46 @@ var NAVTREEINDEX2 = "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], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[9,16,1,20], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[11,0,0,0,22,20], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[11,0,0,0,22,27], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d":[9,16,1,20], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[9,16,1,27], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49":[11,0,0,0,22,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":[9,16,1,1], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[11,0,0,0,22,1], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[9,16,1,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":[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#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,22,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[11,0,0,0,22,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,16,1,19], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[11,0,0,0,22,57], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[9,16,1,40], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[11,0,0,0,22,55], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[11,0,0,0,22,51], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[11,0,0,0,22,29], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,16,1,29], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[11,0,0,0,22,16], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,16,1,16], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[11,0,0,0,22,16], "group__uv.html":[9,22], -"group__uv.html#ga097c89497824d4de225a85a00661fc89":[11,0,0,0,118], -"group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[11,0,0,0,119], -"group__uv.html#ga99099e045993383f251a8026e1e40414":[11,0,0,0,157], -"group__uv.html#gaa5e3593c94f91910d9d928dfa0c18f6c":[11,0,0,0,154], -"group__uv.html#gac5f60dba13a45e5d554b4fb7df7b9610":[11,0,0,0,156], -"group__uv.html#gad85ce3bfc53ff754988d36bf5de39e21":[11,0,0,0,155], +"group__uv.html#ga097c89497824d4de225a85a00661fc89":[11,0,0,0,119], +"group__uv.html#ga3c75cd6ec3f80fc0a0c8ead4c4e71a15":[11,0,0,0,120], +"group__uv.html#ga99099e045993383f251a8026e1e40414":[11,0,0,0,158], +"group__uv.html#gaa5e3593c94f91910d9d928dfa0c18f6c":[11,0,0,0,155], +"group__uv.html#gac5f60dba13a45e5d554b4fb7df7b9610":[11,0,0,0,157], +"group__uv.html#gad85ce3bfc53ff754988d36bf5de39e21":[11,0,0,0,156], "group__vhost-mounts.html":[9,4,0], "group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[9,4,0,2], "group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[11,0,0,0,32], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,4,0,2,3], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[11,0,0,0,32,3], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,4,0,2,0], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,4,0,2,3], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[11,0,0,0,32,0], +"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":[9,4,0,2,5], @@ -193,9 +197,9 @@ var NAVTREEINDEX2 = "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[9,4,0,2,1], "group__wsclose.html":[9,17], "group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[9,17,1], -"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[11,0,0,0,70], -"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[11,0,0,0,25], +"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[11,0,0,0,71], "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,17,0], +"group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[11,0,0,0,25], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[11,0,0,0,25,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,17,0,2], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a2e1f0113494a58e762eed3d22e7080d8":[11,0,0,0,25,10], @@ -207,47 +211,43 @@ var NAVTREEINDEX2 = "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[11,0,0,0,25,4], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[11,0,0,0,25,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,17,0,5], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,17,0,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[11,0,0,0,25,7], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,17,0,7], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,17,0,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[11,0,0,0,25,8], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,17,0,1], +"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":[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":[11,0,0,0,25,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,17,0,11], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,25,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[11,0,0,0,25,9], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,25,13], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,25,5], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,25,13], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,25,5], "group__wsstatus.html":[9,18], "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,18,3], -"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[11,0,0,0,113], -"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,114], +"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[11,0,0,0,114], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,18,4], -"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,131], +"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,115], +"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,132], "group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,6], "group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1], -"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,99], +"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,100], +"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,113], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,18,2], -"group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,112], -"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[11,0,0,0,86], "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,122], +"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,123], "hierarchy.html":[10,2], "index.html":[], "index.html":[0], "libwebsockets_8h.html":[11,0,0,0], -"libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[11,0,0,0,167], -"libwebsockets_8h.html#a17f5fc891b31d2920bd18b0d66d6cb25":[11,0,0,0,172], -"libwebsockets_8h.html#a1b12016562c728eb306c7f954c804bef":[11,0,0,0,20], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[11,0,0,0,27], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa7741c12fc97574fa73a810fedae2be76":[11,0,0,0,27,1], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa9ce9c65d4229d1d168fca3cc12e7f535":[11,0,0,0,27,2], -"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fafdb6cf2797a3ea957c690ad6edff25d6":[11,0,0,0,27,0] +"libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[11,0,0,0,168], +"libwebsockets_8h.html#a17f5fc891b31d2920bd18b0d66d6cb25":[11,0,0,0,173], +"libwebsockets_8h.html#a1b12016562c728eb306c7f954c804bef":[11,0,0,0,20] }; diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js index ffa1ee78..caa6d8e1 100644 --- a/doc/html/navtreeindex3.js +++ b/doc/html/navtreeindex3.js @@ -1,5 +1,9 @@ var NAVTREEINDEX3 = { +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[11,0,0,0,27], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa7741c12fc97574fa73a810fedae2be76":[11,0,0,0,27,1], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fa9ce9c65d4229d1d168fca3cc12e7f535":[11,0,0,0,27,2], +"libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905fafdb6cf2797a3ea957c690ad6edff25d6":[11,0,0,0,27,0], "libwebsockets_8h.html#a27551d6899b1e4de4b2b5854e805c6eb":[11,0,0,0,19], "libwebsockets_8h.html#a27bb0b3cdcd0af839c928c253b521ff4":[11,0,0,0,64], "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedb":[11,0,0,0,23], @@ -12,19 +16,19 @@ var NAVTREEINDEX3 = "libwebsockets_8h.html#a42394a38f08a97420c98127358cfeedbada3dca91d96bcde5df08a67b5a66e972":[11,0,0,0,23,5], "libwebsockets_8h.html#a4e877a4f0bb027d05d3a90c8e6a632de":[11,0,0,0,41], "libwebsockets_8h.html#a5326d3402af8429a166dd991dc65c4a2":[11,0,0,0,65], -"libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672":[11,0,0,0,129], -"libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536":[11,0,0,0,127], +"libwebsockets_8h.html#a5e627dbf1db48170ef486edbaf268672":[11,0,0,0,130], +"libwebsockets_8h.html#a72fe65e83b8bb03f904a1a256c673536":[11,0,0,0,128], "libwebsockets_8h.html#a75e9827318684877deb4189121a8cd2a":[11,0,0,0,43], -"libwebsockets_8h.html#a863bdd5bca33bcbaa424c42fb7b2fc96":[11,0,0,0,171], -"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d":[11,0,0,0,169], +"libwebsockets_8h.html#a863bdd5bca33bcbaa424c42fb7b2fc96":[11,0,0,0,172], +"libwebsockets_8h.html#a9032a3062641d334161c29adcc4fa15d":[11,0,0,0,170], "libwebsockets_8h.html#a9b1bfc6f34319188d2aa40500d825bab":[11,0,0,0,42], "libwebsockets_8h.html#a9b878fb94f4596226c982eef4f42a607":[11,0,0,0,44], -"libwebsockets_8h.html#a9f2a8506fd963db95a5103823c60fb0a":[11,0,0,0,170], +"libwebsockets_8h.html#a9f2a8506fd963db95a5103823c60fb0a":[11,0,0,0,171], "libwebsockets_8h.html#abddb8d337fb2692586d892b494739003":[11,0,0,0,18], "libwebsockets_8h.html#ac3abb8b7e6d29a0292797230e4031681":[11,0,0,0,17], "libwebsockets_8h.html#adedbc79528b71a5c7f27cde87100c9aa":[11,0,0,0,15], -"libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e":[11,0,0,0,130], -"libwebsockets_8h.html#aefb2f20fe5bb29d79701a399838ef4ce":[11,0,0,0,168], +"libwebsockets_8h.html#adf4abd01e8c43f07c6e498ce13590c3e":[11,0,0,0,131], +"libwebsockets_8h.html#aefb2f20fe5bb29d79701a399838ef4ce":[11,0,0,0,169], "libwebsockets_8h.html#af52923473c59e643a974d65e12290831":[11,0,0,0,63], "libwebsockets_8h.html#aff42d53861afdc1a6edfb999ba688ecb":[11,0,0,0,11], "libwebsockets_8h_source.html":[11,0,0,0], @@ -245,9 +249,5 @@ var NAVTREEINDEX3 = "structlws__plat__file__ops.html":[9,20,0], "structlws__plat__file__ops.html#a01f483807a9862736b17ba9ed5110c40":[9,20,0,2], "structlws__plat__file__ops.html#a034ec96f2fbaf52b4aa3e82d20795f7b":[9,20,0,0], -"structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793":[9,20,0,4], -"structlws__plat__file__ops.html#abfcda19b003dcc13c61ff9e2bb4ff869":[9,20,0,3], -"structlws__plat__file__ops.html#ad37a97abc68d0af967cef874f4d8df32":[9,20,0,1], -"structlws__plugin.html":[9,10,3], -"structlws__plugin.html#a4ef37a43653715b6c69cbf8a7be747f4":[9,10,3,1] +"structlws__plat__file__ops.html#a1fae8330ee94649a3551e31a30809793":[9,20,0,4] }; diff --git a/doc/html/navtreeindex4.js b/doc/html/navtreeindex4.js index e6af9544..e81bd026 100644 --- a/doc/html/navtreeindex4.js +++ b/doc/html/navtreeindex4.js @@ -1,5 +1,9 @@ var NAVTREEINDEX4 = { +"structlws__plat__file__ops.html#abfcda19b003dcc13c61ff9e2bb4ff869":[9,20,0,3], +"structlws__plat__file__ops.html#ad37a97abc68d0af967cef874f4d8df32":[9,20,0,1], +"structlws__plugin.html":[9,10,3], +"structlws__plugin.html#a4ef37a43653715b6c69cbf8a7be747f4":[9,10,3,1], "structlws__plugin.html#a65dffd68fd267ce17b988790d1d35f22":[9,10,3,3], "structlws__plugin.html#ac7f1fdfe8cf8a21f8ee9720c21934a3f":[9,10,3,0], "structlws__plugin.html#af4ac8fcb79e10e0c2d960e1804d98105":[9,10,3,4], @@ -35,8 +39,8 @@ var NAVTREEINDEX4 = "structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968":[9,6,1,1,0], "structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3":[9,6,1,1,4], "structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5":[9,6,1,1,1], -"structlws__protocol__vhost__options.html":[9,4,2], "structlws__protocol__vhost__options.html":[9,4,0,0], +"structlws__protocol__vhost__options.html":[9,4,2], "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], @@ -62,8 +66,8 @@ var NAVTREEINDEX4 = "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#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,4,0,1], +"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,6,1], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,6,0], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,4,0,0], "structlwsgw__hash.html":[9,10,0,1], diff --git a/lib/client.c b/lib/client.c index 2c64074d..0f5ed96d 100755 --- a/lib/client.c +++ b/lib/client.c @@ -66,6 +66,12 @@ lws_handshake_client(struct lws *wsi, unsigned char **buf, size_t len) return 0; } +LWS_VISIBLE LWS_EXTERN void +lws_client_http_body_pending(struct lws *wsi, int something_left_to_send) +{ + wsi->client_http_body_pending = !!something_left_to_send; +} + int lws_client_socket_service(struct lws_context *context, struct lws *wsi, struct lws_pollfd *pollfd) @@ -210,6 +216,24 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, break; } + if (wsi->client_http_body_pending) { + wsi->mode = LWSCM_WSCL_ISSUE_HTTP_BODY; + lws_set_timeout(wsi, PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD, + context->timeout_secs); + /* user code must ask for writable callback */ + break; + } + + goto client_http_body_sent; + + case LWSCM_WSCL_ISSUE_HTTP_BODY: + if (wsi->client_http_body_pending) { + lws_set_timeout(wsi, PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD, + context->timeout_secs); + /* user code must ask for writable callback */ + break; + } +client_http_body_sent: wsi->u.hdr.parser_state = WSI_TOKEN_NAME_PART; wsi->u.hdr.lextable_pos = 0; wsi->mode = LWSCM_WSCL_WAITING_SERVER_REPLY; diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index ce5ce609..aab3b658 100755 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -256,7 +256,7 @@ lws_close_free_wsi(struct lws *wsi, enum lws_close_status reason) wsi->vhost->protocols->callback(wsi, LWS_CALLBACK_CLOSED_HTTP, wsi->user_space, NULL, 0); } - if (wsi->mode == LWSCM_HTTP_CLIENT) + if (wsi->mode & LWSCM_FLAG_IMPLIES_CALLBACK_CLOSED_CLIENT_HTTP ) wsi->vhost->protocols[0].callback(wsi, LWS_CALLBACK_CLOSED_CLIENT_HTTP, wsi->user_space, NULL, 0); @@ -1712,7 +1712,6 @@ lws_finalize_startup(struct lws_context *context) return 0; } - LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi) { #ifdef LWS_WITH_CGI diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index ad46f13e..9cc493fd 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -1004,6 +1004,15 @@ enum lws_callback_reasons { * the normal LWS_CALLBACK_HTTP when the mount has per-mount * options */ + LWS_CALLBACK_CLIENT_HTTP_WRITEABLE = 57, + /**< when doing an HTTP type client connection, you can call + * lws_client_http_body_pending(wsi, 1) from + * LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER to get these callbacks + * sending the HTTP headers. + * + * From this callback, when you have sent everything, you should let + * lws know by calling lws_client_http_body_pending(wsi, 0) + */ /****** add new things just above ---^ ******/ @@ -2116,6 +2125,30 @@ lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, LWS_VISIBLE LWS_EXTERN int lws_http_client_read(struct lws *wsi, char **buf, int *len); + +LWS_VISIBLE LWS_EXTERN void +lws_client_http_body_pending(struct lws *wsi, int something_left_to_send); + +/** + * lws_client_http_body_pending() - control if client connection neeeds to send body + * + * \param wsi: client connection + * \param something_left_to_send: nonzero if need to send more body, 0 (default) + * if nothing more to send + * + * If you will send payload data with your HTTP client connection, eg, for POST, + * when you set the related http headers in + * LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER callback you should also call + * this API with something_left_to_send nonzero, and call + * lws_callback_on_writable(wsi); + * + * After sending the headers, lws will call your callback with + * LWS_CALLBACK_CLIENT_HTTP_WRITEABLE reason when writable. You can send the + * next part of the http body payload, calling lws_callback_on_writable(wsi); + * if there is more to come, or lws_client_http_body_pending(wsi, 0); to + * let lws know the last part is sent and the connection can move on. + */ + ///@} /** \defgroup service Built-in service loop entry @@ -3030,6 +3063,7 @@ enum pending_timeout { PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15, PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16, PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17, + PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18, /****** add new things just above ---^ ******/ }; diff --git a/lib/parsers.c b/lib/parsers.c index ecb7bc3b..4feac10b 100644 --- a/lib/parsers.c +++ b/lib/parsers.c @@ -176,7 +176,7 @@ lws_header_table_attach(struct lws *wsi, int autoservice) _lws_change_pollfd(wsi, 0, LWS_POLLIN, &pa); - lwsl_notice("%s: wsi %p: ah %p: count %d (on exit)\n", __func__, + lwsl_info("%s: wsi %p: ah %p: count %d (on exit)\n", __func__, (void *)wsi, (void *)wsi->u.hdr.ah, pt->ah_count_in_use); lws_pt_unlock(pt); diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index e7075028..41fd8285 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -519,12 +519,11 @@ enum lws_rx_parse_state { LWS_RXPS_PAYLOAD_UNTIL_LENGTH_EXHAUSTED }; +#define LWSCM_FLAG_IMPLIES_CALLBACK_CLOSED_CLIENT_HTTP 32 enum connection_mode { LWSCM_HTTP_SERVING, - LWSCM_HTTP_CLIENT, /* we are client to someone else's server */ LWSCM_HTTP_SERVING_ACCEPTED, /* actual HTTP service going on */ - LWSCM_HTTP_CLIENT_ACCEPTED, /* actual HTTP service going on */ LWSCM_PRE_WS_SERVING_ACCEPT, LWSCM_WS_SERVING, @@ -536,19 +535,26 @@ enum connection_mode { LWSCM_SSL_ACK_PENDING, LWSCM_SSL_INIT, - /* transient modes */ + /* special internal types */ + LWSCM_SERVER_LISTENER, + LWSCM_CGI, /* stdin, stdout, stderr for another cgi master wsi */ + + /* HTTP Client related */ + LWSCM_HTTP_CLIENT = LWSCM_FLAG_IMPLIES_CALLBACK_CLOSED_CLIENT_HTTP, + LWSCM_HTTP_CLIENT_ACCEPTED, /* actual HTTP service going on */ LWSCM_WSCL_WAITING_CONNECT, LWSCM_WSCL_WAITING_PROXY_REPLY, LWSCM_WSCL_ISSUE_HANDSHAKE, LWSCM_WSCL_ISSUE_HANDSHAKE2, + LWSCM_WSCL_ISSUE_HTTP_BODY, LWSCM_WSCL_WAITING_SSL, LWSCM_WSCL_WAITING_SERVER_REPLY, LWSCM_WSCL_WAITING_EXTENSION_CONNECT, LWSCM_WSCL_PENDING_CANDIDATE_CHILD, - /* special internal types */ - LWSCM_SERVER_LISTENER, - LWSCM_CGI, /* stdin, stdout, stderr for another cgi master wsi */ + /****** add new things just above ---^ ******/ + + }; enum { @@ -1385,6 +1391,7 @@ struct lws { unsigned int do_ws:1; /* whether we are doing http or ws flow */ unsigned int chunked:1; /* if the clientside connection is chunked */ unsigned int client_rx_avail:1; + unsigned int client_http_body_pending:1; #endif #ifdef LWS_WITH_HTTP_PROXY unsigned int perform_rewrite:1; diff --git a/lib/service.c b/lib/service.c index bf4705ad..5f2aedd7 100644 --- a/lib/service.c +++ b/lib/service.c @@ -30,6 +30,9 @@ lws_calllback_as_writeable(struct lws *wsi) case LWSCM_WS_CLIENT: n = LWS_CALLBACK_CLIENT_WRITEABLE; break; + case LWSCM_WSCL_ISSUE_HTTP_BODY: + n = LWS_CALLBACK_CLIENT_HTTP_WRITEABLE; + break; case LWSCM_WS_SERVING: n = LWS_CALLBACK_SERVER_WRITEABLE; break; @@ -76,6 +79,9 @@ lws_handle_POLLOUT_event(struct lws *wsi, struct lws_pollfd *pollfd) if (wsi->state == LWSS_FLUSHING_STORED_SEND_BEFORE_CLOSE) return -1; /* retry closing now */ + if (wsi->mode == LWSCM_WSCL_ISSUE_HTTP_BODY) + goto user_service; + #ifdef LWS_USE_HTTP2 /* Priority 2: protocol packets @@ -270,8 +276,8 @@ user_service: return 1; } - - if (!wsi->hdr_parsing_completed) + if (wsi->mode != LWSCM_WSCL_ISSUE_HTTP_BODY && + !wsi->hdr_parsing_completed) return 0; #ifdef LWS_WITH_CGI @@ -1097,6 +1103,10 @@ drain: #ifdef LWS_NO_CLIENT break; #else + if ((pollfd->revents & LWS_POLLOUT) && + lws_handle_POLLOUT_event(wsi, pollfd)) + goto close_and_handled; + n = lws_client_socket_service(context, wsi, pollfd); if (n) return 1; diff --git a/test-server/test-client.c b/test-server/test-client.c index a6ffe297..7a79159d 100644 --- a/test-server/test-client.c +++ b/test-server/test-client.c @@ -37,7 +37,7 @@ #include "../lib/libwebsockets.h" -static int deny_deflate, longlived, mirror_lifetime; +static int deny_deflate, longlived, mirror_lifetime, test_post; static struct lws *wsi_dumb, *wsi_mirror; static struct lws *wsi_multi[3]; static volatile int force_exit; @@ -88,7 +88,7 @@ callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len) { const char *which = "http"; - char which_wsi[10]; + char which_wsi[10], buf[50 + LWS_PRE]; int n; switch (reason) { @@ -163,7 +163,38 @@ callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason, break; case LWS_CALLBACK_CLIENT_WRITEABLE: - lwsl_notice("Client wsi %p writable\n", wsi); + lwsl_info("Client wsi %p writable\n", wsi); + break; + + case LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER: + if (test_post) { + unsigned char **p = (unsigned char **)in, *end = (*p) + len; + + if (lws_add_http_header_by_token(wsi, + WSI_TOKEN_HTTP_CONTENT_LENGTH, + (unsigned char *)"29", 2, p, end)) + return -1; + if (lws_add_http_header_by_token(wsi, + WSI_TOKEN_HTTP_CONTENT_TYPE, + (unsigned char *)"application/x-www-form-urlencoded", 33, p, end)) + return -1; + + /* inform lws we have http body to send */ + lws_client_http_body_pending(wsi, 1); + lws_callback_on_writable(wsi); + } + break; + + case LWS_CALLBACK_CLIENT_HTTP_WRITEABLE: + strcpy(buf + LWS_PRE, "text=hello&send=Send+the+form"); + n = lws_write(wsi, (unsigned char *)&buf[LWS_PRE], strlen(&buf[LWS_PRE]), LWS_WRITE_HTTP); + if (n < 0) + return -1; + /* we only had one thing to send, so inform lws we are done + * if we had more to send, call lws_callback_on_writable(wsi); + * and just return 0 from callback. On having sent the last + * part, call the below api instead.*/ + lws_client_http_body_pending(wsi, 0); break; case LWS_CALLBACK_COMPLETED_CLIENT_HTTP: @@ -339,6 +370,7 @@ static struct option options[] = { { "multi-test", no_argument, NULL, 'm' }, { "nomirror", no_argument, NULL, 'n' }, { "longlived", no_argument, NULL, 'l' }, + { "post", no_argument, NULL, 'o' }, { "pingpong-secs", required_argument, NULL, 'P' }, { "ssl-cert", required_argument, NULL, 'C' }, { "ssl-key", required_argument, NULL, 'K' }, @@ -385,7 +417,7 @@ int main(int argc, char **argv) goto usage; while (n >= 0) { - n = getopt_long(argc, argv, "Snuv:hsp:d:lC:K:A:P:m", options, NULL); + n = getopt_long(argc, argv, "Snuv:hsp:d:lC:K:A:P:mo", options, NULL); if (n < 0) continue; switch (n) { @@ -419,6 +451,9 @@ int main(int argc, char **argv) case 'm': do_multi = 1; break; + case 'o': + test_post = 1; + break; case 'n': flag_no_mirror_traffic = 1; lwsl_notice("Disabled sending mirror data (for pingpong testing)\n"); @@ -547,7 +582,12 @@ int main(int argc, char **argv) if (!strcmp(prot, "http") || !strcmp(prot, "https")) { lwsl_notice("using %s mode (non-ws)\n", prot); - i.method = "GET"; + if (test_post) { + i.method = "POST"; + lwsl_notice("POST mode\n"); + } + else + i.method = "GET"; do_ws = 0; } else lwsl_notice("using %s mode (ws)\n", prot);