diff --git a/doc/html/functions.html b/doc/html/functions.html index 62b245d9..88b9fde7 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -130,7 +130,7 @@ $(document).ready(function(){initNavTree('functions.html','');}); : lws_cgi_args
  • client_exts -: lws_client_connect_info +: lws_client_connect_info
  • client_offer : lws_extension diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index 990fe776..850945c6 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -130,7 +130,7 @@ $(document).ready(function(){initNavTree('functions_vars.html','');}); : lws_cgi_args
  • client_exts -: lws_client_connect_info +: lws_client_connect_info
  • client_offer : lws_extension diff --git a/doc/html/group__client.html b/doc/html/group__client.html index acd71750..49fcd7f2 100644 --- a/doc/html/group__client.html +++ b/doc/html/group__client.html @@ -119,7 +119,7 @@ LWS_VISIBLE LWS_EXTERN void <

    #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

    -
    2079  {
    2080  LCCSCF_USE_SSL = (1 << 0),
    2081  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2082  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2083  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2084 };
    +
    2081  {
    2082  LCCSCF_USE_SSL = (1 << 0),
    2083  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2084  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2085  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2086 };

    Function Documentation

    diff --git a/doc/html/group__client.js b/doc/html/group__client.js index 02b6b509..38bf4b52 100644 --- a/doc/html/group__client.js +++ b/doc/html/group__client.js @@ -3,7 +3,7 @@ var group__client = [ "lws_client_connect_info", "structlws__client__connect__info.html", [ [ "_unused", "structlws__client__connect__info.html#ad47f50d1633dc5df74548606c9a66d73", null ], [ "address", "structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502", null ], - [ "client_exts", "structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c", null ], + [ "client_exts", "structlws__client__connect__info.html#aaf76f45db5b4354894bae03a4f8f65a5", null ], [ "context", "structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd", null ], [ "host", "structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7", null ], [ "ietf_version_or_minus_one", "structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895", null ], diff --git a/doc/html/group__context-and-vhost.html b/doc/html/group__context-and-vhost.html index cd757169..2b08340d 100644 --- a/doc/html/group__context-and-vhost.html +++ b/doc/html/group__context-and-vhost.html @@ -211,25 +211,25 @@ LWS_VISIBLE LWS_EXTERN int LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN 

    For backwards-compatibility reasons, by default lws prepends "http://" to the origin you give in the client connection info struct. If you give this flag when you create the context, only the string you give in the client connect info for .origin (if any) will be used directly.

    -
    1526  {
    1528  (1 << 12),
    1535  (1 << 12),
    1539  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1541  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1550  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1551  (1 << 12),
    1553  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1556  (1 << 12),
    1564  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1566  LWS_SERVER_OPTION_STS = (1 << 15),
    1587  /****** add new things just above ---^ ******/
    1588 };
    -
    Definition: libwebsockets.h:1543
    -
    Definition: libwebsockets.h:1573
    -
    Definition: libwebsockets.h:1555
    -
    Definition: libwebsockets.h:1561
    -
    Definition: libwebsockets.h:1532
    -
    Definition: libwebsockets.h:1550
    -
    Definition: libwebsockets.h:1534
    -
    Definition: libwebsockets.h:1539
    -
    Definition: libwebsockets.h:1559
    -
    Definition: libwebsockets.h:1571
    -
    Definition: libwebsockets.h:1541
    -
    Definition: libwebsockets.h:1553
    -
    Definition: libwebsockets.h:1564
    -
    Definition: libwebsockets.h:1548
    -
    Definition: libwebsockets.h:1546
    -
    Definition: libwebsockets.h:1579
    -
    Definition: libwebsockets.h:1566
    -
    Definition: libwebsockets.h:1569
    +
    1528  {
    1530  (1 << 12),
    1537  (1 << 12),
    1541  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1543  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1552  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1553  (1 << 12),
    1555  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1558  (1 << 12),
    1566  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1568  LWS_SERVER_OPTION_STS = (1 << 15),
    1589  /****** add new things just above ---^ ******/
    1590 };
    +
    Definition: libwebsockets.h:1545
    +
    Definition: libwebsockets.h:1575
    +
    Definition: libwebsockets.h:1557
    +
    Definition: libwebsockets.h:1563
    +
    Definition: libwebsockets.h:1534
    +
    Definition: libwebsockets.h:1552
    +
    Definition: libwebsockets.h:1536
    +
    Definition: libwebsockets.h:1541
    +
    Definition: libwebsockets.h:1561
    +
    Definition: libwebsockets.h:1573
    +
    Definition: libwebsockets.h:1543
    +
    Definition: libwebsockets.h:1555
    +
    Definition: libwebsockets.h:1566
    +
    Definition: libwebsockets.h:1550
    +
    Definition: libwebsockets.h:1548
    +
    Definition: libwebsockets.h:1581
    +
    Definition: libwebsockets.h:1568
    +
    Definition: libwebsockets.h:1571
    diff --git a/doc/html/group__extensions.html b/doc/html/group__extensions.html index 356dbfda..2f45b193 100644 --- a/doc/html/group__extensions.html +++ b/doc/html/group__extensions.html @@ -242,9 +242,9 @@ Functions EXTARG_OPT_DEC 

    may have an optional decimal argument

    -
    1128  {
    1129  EXTARG_NONE,
    1130  EXTARG_DEC,
    1133  /* Add new things just above here ---^
    1134  * This is part of the ABI, don't needlessly break compatibility */
    1135 };
    Definition: libwebsockets.h:1131
    -
    Definition: libwebsockets.h:1129
    -
    Definition: libwebsockets.h:1130
    +
    1130  {
    1131  EXTARG_NONE,
    1132  EXTARG_DEC,
    1135  /* Add new things just above here ---^
    1136  * This is part of the ABI, don't needlessly break compatibility */
    1137 };
    Definition: libwebsockets.h:1133
    +
    Definition: libwebsockets.h:1131
    +
    Definition: libwebsockets.h:1132
    diff --git a/doc/html/group__form-parsing.html b/doc/html/group__form-parsing.html index e2b295de..a9e846d1 100644 --- a/doc/html/group__form-parsing.html +++ b/doc/html/group__form-parsing.html @@ -156,9 +156,9 @@ Functions LWS_UFS_OPEN 

    a new file is starting to arrive

    -
    2923  {
    2928  LWS_UFS_OPEN
    2930 };
    Definition: libwebsockets.h:2926
    -
    Definition: libwebsockets.h:2928
    -
    Definition: libwebsockets.h:2924
    +
    2925  {
    2930  LWS_UFS_OPEN
    2932 };
    Definition: libwebsockets.h:2928
    +
    Definition: libwebsockets.h:2930
    +
    Definition: libwebsockets.h:2926
    diff --git a/doc/html/group__generic-sessions.html b/doc/html/group__generic-sessions.html index 09e74db7..8e527417 100644 --- a/doc/html/group__generic-sessions.html +++ b/doc/html/group__generic-sessions.html @@ -116,8 +116,8 @@ Enumerations LWSGSE_DELETED 

    an existing user was deleted

    -
    1490  {
    1491  LWSGSE_CREATED,
    1493 };
    Definition: libwebsockets.h:1492
    -
    Definition: libwebsockets.h:1491
    +
    1492  {
    1493  LWSGSE_CREATED,
    1495 };
    Definition: libwebsockets.h:1494
    +
    Definition: libwebsockets.h:1493
    @@ -145,10 +145,10 @@ Enumerations LWSGS_AUTH_FORGOT_FLOW 

    he just completed "forgot password" flow

    -
    1472  {
    1473  LWSGS_AUTH_LOGGED_IN = 1,
    1474  LWSGS_AUTH_ADMIN = 2,
    1475  LWSGS_AUTH_VERIFIED = 4,
    1477 };
    Definition: libwebsockets.h:1475
    -
    Definition: libwebsockets.h:1476
    -
    Definition: libwebsockets.h:1474
    -
    Definition: libwebsockets.h:1473
    +
    1474  {
    1475  LWSGS_AUTH_LOGGED_IN = 1,
    1476  LWSGS_AUTH_ADMIN = 2,
    1477  LWSGS_AUTH_VERIFIED = 4,
    1479 };
    Definition: libwebsockets.h:1477
    +
    Definition: libwebsockets.h:1478
    +
    Definition: libwebsockets.h:1476
    +
    Definition: libwebsockets.h:1475
    diff --git a/doc/html/group__log.html b/doc/html/group__log.html index 31ec359e..4bea9329 100644 --- a/doc/html/group__log.html +++ b/doc/html/group__log.html @@ -83,7 +83,8 @@ Enumerations
      LLL_CLIENT = 1 << 8, LLL_LATENCY = 1 << 9, -LLL_COUNT = 10 +LLL_USER = 1 << 10, +LLL_COUNT = 11
    }   diff --git a/doc/html/group__sending-data.html b/doc/html/group__sending-data.html index 247b5202..3e917b0c 100644 --- a/doc/html/group__sending-data.html +++ b/doc/html/group__sending-data.html @@ -124,13 +124,13 @@ Functions LWS_WRITE_CLIENT_IGNORE_XOR_MASK 

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

    -
    3270  {
    3271  LWS_WRITE_TEXT = 0,
    3275  LWS_WRITE_BINARY = 1,
    3281  LWS_WRITE_HTTP = 3,
    3284  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3285  LWS_WRITE_PING = 5,
    3286  LWS_WRITE_PONG = 6,
    3287 
    3288  /* Same as write_http but we know this write ends the transaction */
    3289  LWS_WRITE_HTTP_FINAL = 7,
    3290 
    3291  /* HTTP2 */
    3292 
    3300  /****** add new things just above ---^ ******/
    3301 
    3302  /* flags */
    3303 
    3304  LWS_WRITE_NO_FIN = 0x40,
    3311 };
    Definition: libwebsockets.h:3281
    -
    Definition: libwebsockets.h:3304
    -
    Definition: libwebsockets.h:3271
    -
    Definition: libwebsockets.h:3275
    -
    Definition: libwebsockets.h:3307
    -
    Definition: libwebsockets.h:3278
    -
    Definition: libwebsockets.h:3293
    +
    3272  {
    3273  LWS_WRITE_TEXT = 0,
    3277  LWS_WRITE_BINARY = 1,
    3283  LWS_WRITE_HTTP = 3,
    3286  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3287  LWS_WRITE_PING = 5,
    3288  LWS_WRITE_PONG = 6,
    3289 
    3290  /* Same as write_http but we know this write ends the transaction */
    3291  LWS_WRITE_HTTP_FINAL = 7,
    3292 
    3293  /* HTTP2 */
    3294 
    3302  /****** add new things just above ---^ ******/
    3303 
    3304  /* flags */
    3305 
    3306  LWS_WRITE_NO_FIN = 0x40,
    3313 };
    Definition: libwebsockets.h:3283
    +
    Definition: libwebsockets.h:3306
    +
    Definition: libwebsockets.h:3273
    +
    Definition: libwebsockets.h:3277
    +
    Definition: libwebsockets.h:3309
    +
    Definition: libwebsockets.h:3280
    +
    Definition: libwebsockets.h:3295
    diff --git a/doc/html/group__smtp.html b/doc/html/group__smtp.html index 4b34e151..57852b71 100644 --- a/doc/html/group__smtp.html +++ b/doc/html/group__smtp.html @@ -149,15 +149,15 @@ Functions LGSSMTP_SENT_QUIT 

    sent the session quit

    -
    4278  {
    4279  LGSSMTP_IDLE,
    4284  LGSSMTP_SENT_TO,
    4288 };
    Definition: libwebsockets.h:4281
    -
    Definition: libwebsockets.h:4286
    -
    Definition: libwebsockets.h:4279
    -
    Definition: libwebsockets.h:4280
    -
    Definition: libwebsockets.h:4284
    -
    Definition: libwebsockets.h:4283
    -
    Definition: libwebsockets.h:4287
    -
    Definition: libwebsockets.h:4282
    -
    Definition: libwebsockets.h:4285
    +
    4280  {
    4281  LGSSMTP_IDLE,
    4286  LGSSMTP_SENT_TO,
    4290 };
    Definition: libwebsockets.h:4283
    +
    Definition: libwebsockets.h:4288
    +
    Definition: libwebsockets.h:4281
    +
    Definition: libwebsockets.h:4282
    +
    Definition: libwebsockets.h:4286
    +
    Definition: libwebsockets.h:4285
    +
    Definition: libwebsockets.h:4289
    +
    Definition: libwebsockets.h:4284
    +
    Definition: libwebsockets.h:4287
    diff --git a/doc/html/group__usercb.html b/doc/html/group__usercb.html index 2103023a..d4c20a4b 100644 --- a/doc/html/group__usercb.html +++ b/doc/html/group__usercb.html @@ -348,49 +348,49 @@ Enumerations LWS_CALLBACK_USER 

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

    -
    666  {
    750  LWS_CALLBACK_HTTP = 12,
    908  /* external poll() management support */
    971  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    974  LWS_CALLBACK_CGI = 40,
    976  LWS_CALLBACK_CGI_TERMINATED = 41,
    978  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    980  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    982  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    984  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    986  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    988  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    990  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    992  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    994  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    996  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    998  LWS_CALLBACK_PROCESS_HTML = 52,
    1000  LWS_CALLBACK_ADD_HEADERS = 53,
    1002  LWS_CALLBACK_SESSION_INFO = 54,
    1005  LWS_CALLBACK_GS_EVENT = 55,
    1007  LWS_CALLBACK_HTTP_PMO = 56,
    1052  /****** add new things just above ---^ ******/
    1053 
    1054  LWS_CALLBACK_USER = 1000,
    1056 };
    Definition: libwebsockets.h:773
    -
    Definition: libwebsockets.h:901
    - -
    Definition: libwebsockets.h:899
    -
    Definition: libwebsockets.h:804
    -
    Definition: libwebsockets.h:750
    -
    Definition: libwebsockets.h:784
    -
    Definition: libwebsockets.h:925
    -
    Definition: libwebsockets.h:871
    -
    Definition: libwebsockets.h:764
    -
    Definition: libwebsockets.h:962
    - -
    Definition: libwebsockets.h:951
    - -
    Definition: libwebsockets.h:725
    -
    Definition: libwebsockets.h:903
    -
    Definition: libwebsockets.h:891
    -
    Definition: libwebsockets.h:722
    -
    Definition: libwebsockets.h:909
    -
    Definition: libwebsockets.h:715
    -
    Definition: libwebsockets.h:796
    -
    Definition: libwebsockets.h:894
    -
    Definition: libwebsockets.h:931
    -
    Definition: libwebsockets.h:771
    -
    Definition: libwebsockets.h:767
    -
    Definition: libwebsockets.h:667
    - -
    Definition: libwebsockets.h:735
    -
    Definition: libwebsockets.h:769
    -
    Definition: libwebsockets.h:1007
    -
    Definition: libwebsockets.h:847
    -
    Definition: libwebsockets.h:733
    -
    Definition: libwebsockets.h:738
    -
    Definition: libwebsockets.h:1012
    - -
    Definition: libwebsockets.h:671
    -
    Definition: libwebsockets.h:748
    -
    Definition: libwebsockets.h:1054
    - -
    Definition: libwebsockets.h:727
    -
    Definition: libwebsockets.h:729
    -
    Definition: libwebsockets.h:740
    -
    Definition: libwebsockets.h:939
    +
    668  {
    752  LWS_CALLBACK_HTTP = 12,
    910  /* external poll() management support */
    973  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    976  LWS_CALLBACK_CGI = 40,
    978  LWS_CALLBACK_CGI_TERMINATED = 41,
    980  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    982  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    984  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    986  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    988  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    990  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    992  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    994  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    996  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    998  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    1000  LWS_CALLBACK_PROCESS_HTML = 52,
    1002  LWS_CALLBACK_ADD_HEADERS = 53,
    1004  LWS_CALLBACK_SESSION_INFO = 54,
    1007  LWS_CALLBACK_GS_EVENT = 55,
    1009  LWS_CALLBACK_HTTP_PMO = 56,
    1054  /****** add new things just above ---^ ******/
    1055 
    1056  LWS_CALLBACK_USER = 1000,
    1058 };
    Definition: libwebsockets.h:775
    +
    Definition: libwebsockets.h:903
    + +
    Definition: libwebsockets.h:901
    +
    Definition: libwebsockets.h:806
    +
    Definition: libwebsockets.h:752
    +
    Definition: libwebsockets.h:786
    +
    Definition: libwebsockets.h:927
    +
    Definition: libwebsockets.h:873
    +
    Definition: libwebsockets.h:766
    +
    Definition: libwebsockets.h:964
    + +
    Definition: libwebsockets.h:953
    + +
    Definition: libwebsockets.h:727
    +
    Definition: libwebsockets.h:905
    +
    Definition: libwebsockets.h:893
    +
    Definition: libwebsockets.h:724
    +
    Definition: libwebsockets.h:911
    +
    Definition: libwebsockets.h:717
    +
    Definition: libwebsockets.h:798
    +
    Definition: libwebsockets.h:896
    +
    Definition: libwebsockets.h:933
    +
    Definition: libwebsockets.h:773
    +
    Definition: libwebsockets.h:769
    +
    Definition: libwebsockets.h:669
    + +
    Definition: libwebsockets.h:737
    +
    Definition: libwebsockets.h:771
    +
    Definition: libwebsockets.h:1009
    +
    Definition: libwebsockets.h:849
    +
    Definition: libwebsockets.h:735
    +
    Definition: libwebsockets.h:740
    +
    Definition: libwebsockets.h:1014
    + +
    Definition: libwebsockets.h:673
    +
    Definition: libwebsockets.h:750
    +
    Definition: libwebsockets.h:1056
    + +
    Definition: libwebsockets.h:729
    +
    Definition: libwebsockets.h:731
    +
    Definition: libwebsockets.h:742
    +
    Definition: libwebsockets.h:941
    diff --git a/doc/html/group__vhost-mounts.html b/doc/html/group__vhost-mounts.html index 62c82d8d..da1a7ced 100644 --- a/doc/html/group__vhost-mounts.html +++ b/doc/html/group__vhost-mounts.html @@ -123,13 +123,13 @@ Enumerations LWSMPRO_CALLBACK 

    hand by named protocol's callback

    -
    2002  {
    2003  LWSMPRO_HTTP = 0,
    2004  LWSMPRO_HTTPS = 1,
    2005  LWSMPRO_FILE = 2,
    2006  LWSMPRO_CGI = 3,
    2007  LWSMPRO_REDIR_HTTP = 4,
    2008  LWSMPRO_REDIR_HTTPS = 5,
    2009  LWSMPRO_CALLBACK = 6,
    2010 };
    Definition: libwebsockets.h:2006
    -
    Definition: libwebsockets.h:2004
    -
    Definition: libwebsockets.h:2005
    -
    Definition: libwebsockets.h:2007
    -
    Definition: libwebsockets.h:2008
    -
    Definition: libwebsockets.h:2003
    -
    Definition: libwebsockets.h:2009
    +
    2004  {
    2005  LWSMPRO_HTTP = 0,
    2006  LWSMPRO_HTTPS = 1,
    2007  LWSMPRO_FILE = 2,
    2008  LWSMPRO_CGI = 3,
    2009  LWSMPRO_REDIR_HTTP = 4,
    2010  LWSMPRO_REDIR_HTTPS = 5,
    2011  LWSMPRO_CALLBACK = 6,
    2012 };
    Definition: libwebsockets.h:2008
    +
    Definition: libwebsockets.h:2006
    +
    Definition: libwebsockets.h:2007
    +
    Definition: libwebsockets.h:2009
    +
    Definition: libwebsockets.h:2010
    +
    Definition: libwebsockets.h:2005
    +
    Definition: libwebsockets.h:2011
    diff --git a/doc/html/group__wsclose.html b/doc/html/group__wsclose.html index 54e85759..e415d46b 100644 --- a/doc/html/group__wsclose.html +++ b/doc/html/group__wsclose.html @@ -144,19 +144,19 @@ Functions LWS_CLOSE_STATUS_TLS_FAILURE 

    1015 is a reserved value and MUST NOT be set as a status code in a Close control frame by an endpoint. It is designated for use in applications expecting a status code to indicate that the connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can't be verified).

    -
    556  {
    557  LWS_CLOSE_STATUS_NOSTATUS = 0,
    619  /****** add new things just above ---^ ******/
    620 
    621  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    622 };
    Definition: libwebsockets.h:585
    -
    Definition: libwebsockets.h:596
    -
    Definition: libwebsockets.h:612
    -
    Definition: libwebsockets.h:564
    -
    Definition: libwebsockets.h:590
    -
    Definition: libwebsockets.h:574
    -
    Definition: libwebsockets.h:579
    -
    Definition: libwebsockets.h:561
    -
    Definition: libwebsockets.h:600
    -
    Definition: libwebsockets.h:558
    -
    Definition: libwebsockets.h:567
    -
    Definition: libwebsockets.h:572
    -
    Definition: libwebsockets.h:608
    +
    558  {
    559  LWS_CLOSE_STATUS_NOSTATUS = 0,
    621  /****** add new things just above ---^ ******/
    622 
    623  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    624 };
    Definition: libwebsockets.h:587
    +
    Definition: libwebsockets.h:598
    +
    Definition: libwebsockets.h:614
    +
    Definition: libwebsockets.h:566
    +
    Definition: libwebsockets.h:592
    +
    Definition: libwebsockets.h:576
    +
    Definition: libwebsockets.h:581
    +
    Definition: libwebsockets.h:563
    +
    Definition: libwebsockets.h:602
    +
    Definition: libwebsockets.h:560
    +
    Definition: libwebsockets.h:569
    +
    Definition: libwebsockets.h:574
    +
    Definition: libwebsockets.h:610
    diff --git a/doc/html/libwebsockets_8h.html b/doc/html/libwebsockets_8h.html index 63c95c29..f501bf0c 100644 --- a/doc/html/libwebsockets_8h.html +++ b/doc/html/libwebsockets_8h.html @@ -188,7 +188,8 @@ Enumerations
      LLL_CLIENT = 1 << 8, LLL_LATENCY = 1 << 9, -LLL_COUNT = 10 +LLL_USER = 1 << 10, +LLL_COUNT = 11
    }   diff --git a/doc/html/libwebsockets_8h.js b/doc/html/libwebsockets_8h.js index 6c8cfc87..788f66df 100644 --- a/doc/html/libwebsockets_8h.js +++ b/doc/html/libwebsockets_8h.js @@ -223,6 +223,7 @@ var libwebsockets_8h = [ "LLL_EXT", "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa6353ac9650d35e8958981eebcb4b67a9", null ], [ "LLL_CLIENT", "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa083a44e71966a0e768426e477e1bc358", null ], [ "LLL_LATENCY", "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fae4235ca28326353e283bc7dd1b39bd86", null ], + [ "LLL_USER", "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa78765040ed7e15a1280bd4a3f5323998", null ], [ "LLL_COUNT", "group__log.html#gga14542b84d2c76efa7814124bb10f9c5faacc8fe5891eba3cf4537bee50eaaa8fa", null ] ] ], [ "lws_mount_protocols", "group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437", [ diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html index e4fe9879..b899c9ce 100644 --- a/doc/html/libwebsockets_8h_source.html +++ b/doc/html/libwebsockets_8h_source.html @@ -64,420 +64,420 @@ $(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 <fcntl.h>
    120 #else
    121 #define _O_RDONLY 0x0000
    122 #define O_RDONLY _O_RDONLY
    123 #endif
    124 
    125 // Visual studio older than 2015 and WIN_CE has only _stricmp
    126 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    127 #define strcasecmp _stricmp
    128 #elif !defined(__MINGW32__)
    129 #define strcasecmp stricmp
    130 #endif
    131 #define getdtablesize() 30000
    132 
    133 #define LWS_INLINE __inline
    134 #define LWS_VISIBLE
    135 #define LWS_WARN_UNUSED_RESULT
    136 #define LWS_WARN_DEPRECATED
    137 
    138 #ifdef LWS_DLL
    139 #ifdef LWS_INTERNAL
    140 #define LWS_EXTERN extern __declspec(dllexport)
    141 #else
    142 #define LWS_EXTERN extern __declspec(dllimport)
    143 #endif
    144 #else
    145 #define LWS_EXTERN
    146 #endif
    147 
    148 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    149 #define LWS_O_RDONLY _O_RDONLY
    150 
    151 #if !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER < 1900) /* Visual Studio 2015 already defines this in <stdio.h> */
    152 #define lws_snprintf _snprintf
    153 #endif
    154 
    155 #ifndef __func__
    156 #define __func__ __FUNCTION__
    157 #endif
    158 
    159 #else /* NOT WIN32 */
    160 #include <unistd.h>
    161 
    162 #if defined(__NetBSD__) || defined(__FreeBSD__)
    163 #include <netinet/in.h>
    164 #endif
    165 
    166 #define LWS_INLINE inline
    167 #define LWS_O_RDONLY O_RDONLY
    168 
    169 #if !defined(MBED_OPERATORS) && !defined(LWS_WITH_ESP8266) && !defined(OPTEE_TA)
    170 #include <poll.h>
    171 #include <netdb.h>
    172 #define LWS_INVALID_FILE -1
    173 #else
    174 #define getdtablesize() (20)
    175 #define LWS_INVALID_FILE NULL
    176 #endif
    177 
    178 #if defined(__GNUC__)
    179 
    180 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    181 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    182 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    183 #else
    184 #define LWS_WARN_UNUSED_RESULT
    185 #endif
    186 
    187 #define LWS_VISIBLE __attribute__((visibility("default")))
    188 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    189 #else
    190 #define LWS_VISIBLE
    191 #define LWS_WARN_UNUSED_RESULT
    192 #define LWS_WARN_DEPRECATED
    193 #endif
    194 
    195 #if defined(__ANDROID__)
    196 #include <unistd.h>
    197 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    198 #endif
    199 
    200 #endif
    201 
    202 #ifdef LWS_USE_LIBEV
    203 #include <ev.h>
    204 #endif /* LWS_USE_LIBEV */
    205 #ifdef LWS_USE_LIBUV
    206 #include <uv.h>
    207 #ifdef LWS_HAVE_UV_VERSION_H
    208 #include <uv-version.h>
    209 #endif
    210 #endif /* LWS_USE_LIBUV */
    211 
    212 #ifndef LWS_EXTERN
    213 #define LWS_EXTERN extern
    214 #endif
    215 
    216 #ifdef _WIN32
    217 #define random rand
    218 #else
    219 #if !defined(OPTEE_TA)
    220 #include <sys/time.h>
    221 #include <unistd.h>
    222 #endif
    223 #endif
    224 
    225 #ifdef LWS_OPENSSL_SUPPORT
    226 
    227 #ifdef USE_WOLFSSL
    228 #ifdef USE_OLD_CYASSL
    229 #include <cyassl/openssl/ssl.h>
    230 #include <cyassl/error-ssl.h>
    231 #else
    232 #include <wolfssl/openssl/ssl.h>
    233 #include <wolfssl/error-ssl.h>
    234 #endif /* not USE_OLD_CYASSL */
    235 #else
    236 #if defined(LWS_USE_POLARSSL)
    237 #include <polarssl/ssl.h>
    239  x509_crt ca;
    240  x509_crt certificate;
    241  rsa_context key;
    242 };
    243 typedef struct lws_polarssl_context SSL_CTX;
    244 typedef ssl_context SSL;
    245 #else
    246 #if defined(LWS_USE_MBEDTLS)
    247 #include <mbedtls/ssl.h>
    248 #else
    249 #include <openssl/ssl.h>
    250 #include <openssl/err.h>
    251 #endif /* not USE_MBEDTLS */
    252 #endif /* not USE_POLARSSL */
    253 #endif /* not USE_WOLFSSL */
    254 #endif
    255 
    256 
    257 #define CONTEXT_PORT_NO_LISTEN -1
    258 #define CONTEXT_PORT_NO_LISTEN_SERVER -2
    259 
    270 
    272 enum lws_log_levels {
    273  LLL_ERR = 1 << 0,
    274  LLL_WARN = 1 << 1,
    275  LLL_NOTICE = 1 << 2,
    276  LLL_INFO = 1 << 3,
    277  LLL_DEBUG = 1 << 4,
    278  LLL_PARSER = 1 << 5,
    279  LLL_HEADER = 1 << 6,
    280  LLL_EXT = 1 << 7,
    281  LLL_CLIENT = 1 << 8,
    282  LLL_LATENCY = 1 << 9,
    283 
    284  LLL_COUNT = 10 /* set to count of valid flags */
    285 };
    286 
    287 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    288 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    298 LWS_VISIBLE LWS_EXTERN int
    299 lwsl_timestamp(int level, char *p, int len);
    300 
    301 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    302 
    303 #if !defined(LWS_WITH_NO_LOGS)
    304 /* notice, warn and log are always compiled in */
    305 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    306 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    307 #endif
    308 /*
    309  * weaker logging can be deselected at configure time using --disable-debug
    310  * that gets rid of the overhead of checking while keeping _warn and _err
    311  * active
    312  */
    313 
    314 #if defined(LWS_WITH_ESP8266)
    315 #undef _DEBUG
    316 #endif
    317 
    318 #ifdef _DEBUG
    319 #if defined(LWS_WITH_NO_LOGS)
    320 /* notice, warn and log are always compiled in */
    321 //#define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    322 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    323 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    324 #endif
    325 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    326 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    327 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    328 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    329 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    330 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    331 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    332 
    338 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    339 
    340 #else /* no debug */
    341 #if defined(LWS_WITH_NO_LOGS)
    342 //#define lwsl_err(...) do {} while(0)
    343 #define lwsl_warn(...) do {} while(0)
    344 #define lwsl_notice(...) do {} while(0)
    345 #endif
    346 #define lwsl_info(...) do {} while(0)
    347 #define lwsl_debug(...) do {} while(0)
    348 #define lwsl_parser(...) do {} while(0)
    349 #define lwsl_header(...) do {} while(0)
    350 #define lwsl_ext(...) do {} while(0)
    351 #define lwsl_client(...) do {} while(0)
    352 #define lwsl_latency(...) do {} while(0)
    353 #define lwsl_hexdump(a, b)
    354 
    355 #endif
    356 
    367 LWS_VISIBLE LWS_EXTERN void
    368 lws_set_log_level(int level,
    369  void (*log_emit_function)(int level, const char *line));
    370 
    380 LWS_VISIBLE LWS_EXTERN void
    381 lwsl_emit_syslog(int level, const char *line);
    382 
    384 
    385 
    386 #include <stddef.h>
    387 
    388 #ifndef lws_container_of
    389 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    390 #endif
    391 
    392 
    393 struct lws;
    394 #ifndef ARRAY_SIZE
    395 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    396 #endif
    397 
    398 /* api change list for user code to test against */
    399 
    400 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    401 
    402 /* the struct lws_protocols has the id field present */
    403 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    404 
    405 /* you can call lws_get_peer_write_allowance */
    406 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    407 
    408 /* extra parameter introduced in 917f43ab821 */
    409 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    410 
    411 /* File operations stuff exists */
    412 #define LWS_FEATURE_FOPS
    413 
    414 
    415 #if defined(_WIN32)
    416 typedef SOCKET lws_sockfd_type;
    417 typedef HANDLE lws_filefd_type;
    418 #define lws_sockfd_valid(sfd) (!!sfd)
    419 struct lws_pollfd {
    420  lws_sockfd_type fd;
    421  SHORT events;
    422  SHORT revents;
    423 };
    424 #define LWS_POLLHUP (FD_CLOSE)
    425 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    426 #define LWS_POLLOUT (FD_WRITE)
    427 #else
    428 
    429 #if defined(MBED_OPERATORS)
    430 /* it's a class lws_conn * */
    431 typedef void * lws_sockfd_type;
    432 typedef void * lws_filefd_type;
    433 #define lws_sockfd_valid(sfd) (!!sfd)
    434 struct pollfd {
    435  lws_sockfd_type fd;
    436  short events;
    437  short revents;
    438 };
    439 #define POLLIN 0x0001
    440 #define POLLPRI 0x0002
    441 #define POLLOUT 0x0004
    442 #define POLLERR 0x0008
    443 #define POLLHUP 0x0010
    444 #define POLLNVAL 0x0020
    445 
    446 struct lws;
    447 
    448 void * mbed3_create_tcp_stream_socket(void);
    449 void mbed3_delete_tcp_stream_socket(void *sockfd);
    450 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    451 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    452 #else
    453 #if defined(LWS_WITH_ESP8266)
    454 
    455 #include <user_interface.h>
    456 #include <espconn.h>
    457 
    458 typedef struct espconn * lws_sockfd_type;
    459 typedef void * lws_filefd_type;
    460 #define lws_sockfd_valid(sfd) (!!sfd)
    461 struct pollfd {
    462  lws_sockfd_type fd;
    463  short events;
    464  short revents;
    465 };
    466 #define POLLIN 0x0001
    467 #define POLLPRI 0x0002
    468 #define POLLOUT 0x0004
    469 #define POLLERR 0x0008
    470 #define POLLHUP 0x0010
    471 #define POLLNVAL 0x0020
    472 
    473 struct lws_vhost;
    474 
    475 lws_sockfd_type esp8266_create_tcp_listen_socket(struct lws_vhost *vh);
    476 void esp8266_tcp_stream_accept(lws_sockfd_type fd, struct lws *wsi);
    477 
    478 #include <os_type.h>
    479 #include <osapi.h>
    480 #include "ets_sys.h"
    481 
    482 int ets_snprintf(char *str, size_t size, const char *format, ...);
    483 #define snprintf ets_snprintf
    484 
    485 typedef os_timer_t uv_timer_t;
    486 typedef void uv_cb_t(uv_timer_t *);
    487 
    488 void os_timer_disarm(void *);
    489 void os_timer_setfn(os_timer_t *, os_timer_func_t *, void *);
    490 
    491 void ets_timer_arm_new(os_timer_t *, int, int, int);
    492 
    493 //void os_timer_arm(os_timer_t *, int, int);
    494 
    495 #define UV_VERSION_MAJOR 1
    496 
    497 #define lws_uv_getloop(a, b) (NULL)
    498 
    499 static inline void uv_timer_init(void *l, uv_timer_t *t)
    500 {
    501  (void)l;
    502  memset(t, 0, sizeof(*t));
    503  os_timer_disarm(t);
    504 }
    505 
    506 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
    507 {
    508  os_timer_setfn(t, (os_timer_func_t *)cb, t);
    509  /* ms, repeat */
    510  os_timer_arm(t, first, !!rep);
    511 }
    512 
    513 static inline void uv_timer_stop(uv_timer_t *t)
    514 {
    515  os_timer_disarm(t);
    516 }
    517 
    518 #else
    519 typedef int lws_sockfd_type;
    520 typedef int lws_filefd_type;
    521 #define lws_sockfd_valid(sfd) (sfd >= 0)
    522 #endif
    523 #endif
    524 
    525 #define lws_pollfd pollfd
    526 #define LWS_POLLHUP (POLLHUP|POLLERR)
    527 #define LWS_POLLIN (POLLIN)
    528 #define LWS_POLLOUT (POLLOUT)
    529 #endif
    530 
    533 struct lws_pollargs {
    534  lws_sockfd_type fd;
    535  int events;
    537 };
    538 
    539 struct lws_tokens;
    540 struct lws_token_limits;
    541 
    549 
    551 /*
    552  * NOTE: These public enums are part of the abi. If you want to add one,
    553  * add it at where specified so existing users are unaffected.
    554  */
    557  LWS_CLOSE_STATUS_NOSTATUS = 0,
    619  /****** add new things just above ---^ ******/
    620 
    621  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    622 };
    623 
    636 LWS_VISIBLE LWS_EXTERN void
    637 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    638  unsigned char *buf, size_t len);
    639 
    641 
    642 struct lws;
    643 struct lws_context;
    644 /* needed even with extensions disabled for create context */
    645 struct lws_extension;
    646 
    658 
    660 
    661 /*
    662  * NOTE: These public enums are part of the abi. If you want to add one,
    663  * add it at where specified so existing users are unaffected.
    664  */
    908  /* external poll() management support */
    971  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    974  LWS_CALLBACK_CGI = 40,
    976  LWS_CALLBACK_CGI_TERMINATED = 41,
    978  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    980  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    982  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    984  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    986  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    988  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    990  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    992  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    994  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    996  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    998  LWS_CALLBACK_PROCESS_HTML = 52,
    1000  LWS_CALLBACK_ADD_HEADERS = 53,
    1002  LWS_CALLBACK_SESSION_INFO = 54,
    1005  LWS_CALLBACK_GS_EVENT = 55,
    1052  /****** add new things just above ---^ ******/
    1053 
    1056 };
    1057 
    1058 
    1059 
    1075 typedef int
    1076 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    1077  void *user, void *in, size_t len);
    1079 
    1089 
    1091 /*
    1092  * NOTE: These public enums are part of the abi. If you want to add one,
    1093  * add it at where specified so existing users are unaffected.
    1094  */
    1095 enum lws_extension_callback_reasons {
    1096  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    1097  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    1098  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    1099  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    1100  LWS_EXT_CB_CONSTRUCT = 4,
    1101  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    1102  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    1103  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    1104  LWS_EXT_CB_DESTROY = 8,
    1105  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    1106  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    1107  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    1108  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    1109  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    1110  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    1111  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    1112  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    1113  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    1114  LWS_EXT_CB_1HZ = 18,
    1115  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    1116  LWS_EXT_CB_IS_WRITEABLE = 20,
    1117  LWS_EXT_CB_PAYLOAD_TX = 21,
    1118  LWS_EXT_CB_PAYLOAD_RX = 22,
    1119  LWS_EXT_CB_OPTION_DEFAULT = 23,
    1120  LWS_EXT_CB_OPTION_SET = 24,
    1121  LWS_EXT_CB_OPTION_CONFIRM = 25,
    1122  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    1123 
    1124  /****** add new things just above ---^ ******/
    1125 };
    1126 
    1133  /* Add new things just above here ---^
    1134  * This is part of the ABI, don't needlessly break compatibility */
    1135 };
    1136 
    1142  const char *name;
    1145  /* Add new things just above here ---^
    1146  * This is part of the ABI, don't needlessly break compatibility */
    1147 };
    1148 
    1151  const char *option_name;
    1153  const char *start;
    1154  int len;
    1155 };
    1156 
    1217 typedef int
    1218 lws_extension_callback_function(struct lws_context *context,
    1219  const struct lws_extension *ext, struct lws *wsi,
    1220  enum lws_extension_callback_reasons reason,
    1221  void *user, void *in, size_t len);
    1222 
    1225  const char *name;
    1227  const char *client_offer;
    1229  /* Add new things just above here ---^
    1230  * This is part of the ABI, don't needlessly break compatibility */
    1231 };
    1232 
    1241 LWS_VISIBLE LWS_EXTERN int
    1242 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1243  const char *opt_name, const char *opt_val);
    1244 
    1245 #ifndef LWS_NO_EXTENSIONS
    1246 /* lws_get_internal_extensions() - DEPRECATED
    1247  *
    1248  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1249  * by user code along with application-specific settings. See the test
    1250  * client and server for how to do.
    1251  */
    1252 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1253 lws_get_internal_extensions(void) { return NULL; }
    1254 
    1265 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1266 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1267  void *ext_user, const struct lws_ext_options *opts,
    1268  const char *o, int len);
    1269 #endif
    1270 
    1283 LWS_EXTERN
    1285  struct lws_context *context, const struct lws_extension *ext,
    1286  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1287  void *user, void *in, size_t len);
    1288 
    1289 /*
    1290  * The internal exts are part of the public abi
    1291  * If we add more extensions, publish the callback here ------v
    1292  */
    1294 
    1310 
    1315  const char *name;
    1336  unsigned int id;
    1343  void *user;
    1346  /* Add new things just above here ---^
    1347  * This is part of the ABI, don't needlessly break compatibility */
    1348 };
    1349 
    1350 struct lws_vhost;
    1351 
    1360 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1361 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1362 
    1372 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1373 lws_get_protocol(struct lws *wsi);
    1374 
    1376 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1377 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1378 
    1389 LWS_VISIBLE LWS_EXTERN void *
    1390 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1391  int size);
    1392 
    1402 LWS_VISIBLE LWS_EXTERN void *
    1403 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1404 
    1413 LWS_VISIBLE LWS_EXTERN int
    1414 lws_finalize_startup(struct lws_context *context);
    1415 
    1416 #ifdef LWS_WITH_PLUGINS
    1417 
    1418 /* PLUGINS implies LIBUV */
    1419 
    1420 #define LWS_PLUGIN_API_MAGIC 180
    1421 
    1424  unsigned int api_magic;
    1425  const struct lws_protocols *protocols;
    1427  const struct lws_extension *extensions;
    1429 };
    1430 
    1431 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1432  struct lws_plugin_capability *);
    1433 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1434 
    1436 struct lws_plugin {
    1437  struct lws_plugin *list;
    1438 #if (UV_VERSION_MAJOR > 0)
    1439  uv_lib_t lib;
    1440 #else
    1441  void *l;
    1442 #endif
    1443  char name[64];
    1445 };
    1446 
    1447 #endif
    1448 
    1450 
    1451 
    1460 
    1462 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1463 
    1465 /* SHA-1 binary and hexified versions */
    1467 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1469 typedef struct { char id[41]; } lwsgw_hash;
    1470 
    1477 };
    1478 
    1481  char username[32];
    1482  char email[100];
    1483  char ip[72];
    1484  unsigned int mask;
    1486  char session[42];
    1487 };
    1488 
    1493 };
    1494 
    1497  enum lws_gs_event event;
    1498  const char *username;
    1499  const char *email;
    1500 };
    1501 
    1503 
    1504 
    1518 
    1520 /*
    1521  * NOTE: These public enums are part of the abi. If you want to add one,
    1522  * add it at where specified so existing users are unaffected.
    1523  */
    1524 
    1528  (1 << 12),
    1535  (1 << 12),
    1551  (1 << 12),
    1556  (1 << 12),
    1587  /****** add new things just above ---^ ******/
    1588 };
    1589 
    1590 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1591 
    1602  int port;
    1607  const char *iface;
    1614  const struct lws_protocols *protocols;
    1618  const struct lws_extension *extensions;
    1626  const char *ssl_cert_filepath;
    1636  const char *ssl_ca_filepath;
    1638  const char *ssl_cipher_list;
    1642  const char *http_proxy_address;
    1645  unsigned int http_proxy_port;
    1647  int gid;
    1649  int uid;
    1651  unsigned int options;
    1653  void *user;
    1656  int ka_time;
    1666 #ifdef LWS_OPENSSL_SUPPORT
    1672 #else /* maintain structure layout either way */
    1674 #endif
    1675 
    1686  unsigned int count_threads;
    1688  unsigned int fd_limit_per_thread;
    1692  unsigned int timeout_secs;
    1697  const char *ecdh_curve;
    1699  const char *vhost_name;
    1703  const char * const *plugin_dirs;
    1712  const char *log_filepath;
    1715  const struct lws_http_mount *mounts;
    1717  const char *server_string;
    1720  unsigned int pt_serv_buf_size;
    1735  unsigned short ws_ping_pong_interval;
    1766  /* Add new things just above here ---^
    1767  * This is part of the ABI, don't needlessly break compatibility
    1768  *
    1769  * The below is to ensure later library versions with new
    1770  * members added above will see 0 (default) even if the app
    1771  * was not built against the newer headers.
    1772  */
    1773 
    1774  void *_unused[8];
    1775 };
    1776 
    1811 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1813 
    1822 LWS_VISIBLE LWS_EXTERN void
    1823 lws_context_destroy(struct lws_context *context);
    1824 
    1825 LWS_VISIBLE LWS_EXTERN void
    1826 lws_context_destroy2(struct lws_context *context);
    1827 
    1828 typedef int (*lws_reload_func)(void);
    1829 
    1854 LWS_VISIBLE LWS_EXTERN void
    1855 lws_context_deprecate(struct lws_context *context, lws_reload_func cb);
    1856 
    1857 LWS_VISIBLE LWS_EXTERN int
    1858 lws_context_is_deprecated(struct lws_context *context);
    1859 
    1877 LWS_VISIBLE LWS_EXTERN int
    1878 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1879 
    1880 
    1881 struct lws_vhost;
    1882 
    1892 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1893 lws_create_vhost(struct lws_context *context,
    1894  struct lws_context_creation_info *info);
    1895 
    1910 LWS_VISIBLE LWS_EXTERN int
    1911 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1912  char **config_strings, int *len);
    1913 
    1929 LWS_VISIBLE LWS_EXTERN int
    1930 lwsws_get_config_vhosts(struct lws_context *context,
    1931  struct lws_context_creation_info *info, const char *d,
    1932  char **config_strings, int *len);
    1933 
    1935 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1936 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1937 
    1943 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1944 lws_get_vhost(struct lws *wsi);
    1945 
    1953 LWS_VISIBLE LWS_EXTERN int
    1954 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1955 
    1963 LWS_VISIBLE LWS_EXTERN int
    1964 lws_json_dump_context(const struct lws_context *context, char *buf, int len,
    1965  int hide_vhosts);
    1966 
    1976 LWS_VISIBLE LWS_EXTERN void *
    1977 lws_context_user(struct lws_context *context);
    1978 
    1984 
    1994  const char *name;
    1995  const char *value;
    1996 };
    1997 
    2010 };
    2011 
    2019  const char *mountpoint;
    2021  const char *origin;
    2023  const char *def;
    2025  const char *protocol;
    2041  unsigned int auth_mask;
    2044  unsigned int cache_reusable:1;
    2045  unsigned int cache_revalidate:1;
    2046  unsigned int cache_intermediaries:1;
    2048  unsigned char origin_protocol;
    2049  unsigned char mountpoint_len;
    2054  /* Add new things just above here ---^
    2055  * This is part of the ABI, don't needlessly break compatibility
    2056  *
    2057  * The below is to ensure later library versions with new
    2058  * members added above will see 0 (default) even if the app
    2059  * was not built against the newer headers.
    2060  */
    2061 
    2062  void *_unused[2];
    2063 };
    2066 
    2072 
    2080  LCCSCF_USE_SSL = (1 << 0),
    2081  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2082  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2083  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2084 };
    2085 
    2090  struct lws_context *context;
    2092  const char *address;
    2094  int port;
    2098  const char *path;
    2100  const char *host;
    2102  const char *origin;
    2104  const char *protocol;
    2108  void *userdata;
    2112  const char *method;
    2115  struct lws *parent_wsi;
    2119  const char *uri_replace_from;
    2122  const char *uri_replace_to;
    2124  struct lws_vhost *vhost;
    2126  struct lws **pwsi;
    2138  /* Add new things just above here ---^
    2139  * This is part of the ABI, don't needlessly break compatibility
    2140  *
    2141  * The below is to ensure later library versions with new
    2142  * members added above will see 0 (default) even if the app
    2143  * was not built against the newer headers.
    2144  */
    2145 
    2146  void *_unused[4];
    2147 };
    2148 
    2156 LWS_VISIBLE LWS_EXTERN struct lws *
    2158 
    2179 /* deprecated, use lws_client_connect_via_info() */
    2180 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2181 lws_client_connect(struct lws_context *clients, const char *address,
    2182  int port, int ssl_connection, const char *path,
    2183  const char *host, const char *origin, const char *protocol,
    2184  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    2185 /* deprecated, use lws_client_connect_via_info() */
    2206 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2207 lws_client_connect_extended(struct lws_context *clients, const char *address,
    2208  int port, int ssl_connection, const char *path,
    2209  const char *host, const char *origin,
    2210  const char *protocol, int ietf_version_or_minus_one,
    2211  void *userdata) LWS_WARN_DEPRECATED;
    2212 
    2238 LWS_VISIBLE LWS_EXTERN int
    2240  struct lws_vhost *vhost);
    2241 
    2242 LWS_VISIBLE LWS_EXTERN int
    2243 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2244 
    2252 LWS_VISIBLE LWS_EXTERN unsigned int
    2253 lws_http_client_http_response(struct lws *wsi);
    2254 
    2255 LWS_VISIBLE LWS_EXTERN void
    2256 lws_client_http_body_pending(struct lws *wsi, int something_left_to_send);
    2257 
    2278 
    2287 
    2320 LWS_VISIBLE LWS_EXTERN int
    2321 lws_service(struct lws_context *context, int timeout_ms);
    2322 
    2334 LWS_VISIBLE LWS_EXTERN int
    2335 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2336 
    2352 LWS_VISIBLE LWS_EXTERN void
    2353 lws_cancel_service_pt(struct lws *wsi);
    2354 
    2366 LWS_VISIBLE LWS_EXTERN void
    2367 lws_cancel_service(struct lws_context *context);
    2368 
    2395 LWS_VISIBLE LWS_EXTERN int
    2396 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2397 
    2407 LWS_VISIBLE LWS_EXTERN int
    2408 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2409  int tsi);
    2410 
    2428 LWS_VISIBLE LWS_EXTERN int
    2429 lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, int tsi);
    2430 
    2431 /* Backwards compatibility */
    2432 #define lws_plat_service_tsi lws_service_tsi
    2433 
    2435 
    2441 
    2448 
    2460 LWS_VISIBLE LWS_EXTERN const char *
    2461 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2462 
    2481 LWS_VISIBLE LWS_EXTERN int
    2482 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2483  const char *other_headers, int other_headers_len);
    2484 LWS_VISIBLE LWS_EXTERN int
    2485 lws_serve_http_file_fragment(struct lws *wsi);
    2487 
    2498 
    2499 enum http_status {
    2500  HTTP_STATUS_OK = 200,
    2501  HTTP_STATUS_NO_CONTENT = 204,
    2502  HTTP_STATUS_PARTIAL_CONTENT = 206,
    2503 
    2504  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2505  HTTP_STATUS_FOUND = 302,
    2506  HTTP_STATUS_SEE_OTHER = 303,
    2507 
    2508  HTTP_STATUS_BAD_REQUEST = 400,
    2509  HTTP_STATUS_UNAUTHORIZED,
    2510  HTTP_STATUS_PAYMENT_REQUIRED,
    2511  HTTP_STATUS_FORBIDDEN,
    2512  HTTP_STATUS_NOT_FOUND,
    2513  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2514  HTTP_STATUS_NOT_ACCEPTABLE,
    2515  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2516  HTTP_STATUS_REQUEST_TIMEOUT,
    2517  HTTP_STATUS_CONFLICT,
    2518  HTTP_STATUS_GONE,
    2519  HTTP_STATUS_LENGTH_REQUIRED,
    2520  HTTP_STATUS_PRECONDITION_FAILED,
    2521  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2522  HTTP_STATUS_REQ_URI_TOO_LONG,
    2523  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2524  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2525  HTTP_STATUS_EXPECTATION_FAILED,
    2526 
    2527  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2528  HTTP_STATUS_NOT_IMPLEMENTED,
    2529  HTTP_STATUS_BAD_GATEWAY,
    2530  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2531  HTTP_STATUS_GATEWAY_TIMEOUT,
    2532  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2533 };
    2534 
    2536  char *p;
    2537  int len;
    2538  int max_len;
    2539  int final;
    2540 };
    2541 
    2542 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2543 
    2545  char *start;
    2546  char swallow[16];
    2547  int pos;
    2548  void *data;
    2549  const char * const *vars;
    2552  lws_process_html_state_cb replace;
    2553 };
    2554 
    2559 LWS_VISIBLE LWS_EXTERN int
    2561  struct lws_process_html_state *s);
    2563 
    2596 
    2604 struct lws_tokens {
    2605  char *token;
    2607 };
    2608 
    2609 /* enum lws_token_indexes
    2610  * these have to be kept in sync with lextable.h / minilex.c
    2611  *
    2612  * NOTE: These public enums are part of the abi. If you want to add one,
    2613  * add it at where specified so existing users are unaffected.
    2614  */
    2615 enum lws_token_indexes {
    2616  WSI_TOKEN_GET_URI = 0,
    2617  WSI_TOKEN_POST_URI = 1,
    2618  WSI_TOKEN_OPTIONS_URI = 2,
    2619  WSI_TOKEN_HOST = 3,
    2620  WSI_TOKEN_CONNECTION = 4,
    2621  WSI_TOKEN_UPGRADE = 5,
    2622  WSI_TOKEN_ORIGIN = 6,
    2623  WSI_TOKEN_DRAFT = 7,
    2624  WSI_TOKEN_CHALLENGE = 8,
    2625  WSI_TOKEN_EXTENSIONS = 9,
    2626  WSI_TOKEN_KEY1 = 10,
    2627  WSI_TOKEN_KEY2 = 11,
    2628  WSI_TOKEN_PROTOCOL = 12,
    2629  WSI_TOKEN_ACCEPT = 13,
    2630  WSI_TOKEN_NONCE = 14,
    2631  WSI_TOKEN_HTTP = 15,
    2632  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2633  WSI_TOKEN_HTTP_ACCEPT = 17,
    2634  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2635  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2636  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2637  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2638  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2639  WSI_TOKEN_HTTP_PRAGMA = 23,
    2640  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2641  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2642  WSI_TOKEN_HTTP_COOKIE = 26,
    2643  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2644  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2645  WSI_TOKEN_HTTP_DATE = 29,
    2646  WSI_TOKEN_HTTP_RANGE = 30,
    2647  WSI_TOKEN_HTTP_REFERER = 31,
    2648  WSI_TOKEN_KEY = 32,
    2649  WSI_TOKEN_VERSION = 33,
    2650  WSI_TOKEN_SWORIGIN = 34,
    2651 
    2652  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2653  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2654  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2655  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2656  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2657 
    2658  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2659  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2660  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2661  WSI_TOKEN_HTTP_AGE = 43,
    2662  WSI_TOKEN_HTTP_ALLOW = 44,
    2663  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2664  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2665  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2666  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2667  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2668  WSI_TOKEN_HTTP_ETAG = 50,
    2669  WSI_TOKEN_HTTP_EXPECT = 51,
    2670  WSI_TOKEN_HTTP_EXPIRES = 52,
    2671  WSI_TOKEN_HTTP_FROM = 53,
    2672  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2673  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2674  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2675  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2676  WSI_TOKEN_HTTP_LINK = 58,
    2677  WSI_TOKEN_HTTP_LOCATION = 59,
    2678  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2679  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2680  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2681  WSI_TOKEN_HTTP_REFRESH = 63,
    2682  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2683  WSI_TOKEN_HTTP_SERVER = 65,
    2684  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2685  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2686  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2687  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2688  WSI_TOKEN_HTTP_VARY = 70,
    2689  WSI_TOKEN_HTTP_VIA = 71,
    2690  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2691 
    2692  WSI_TOKEN_PATCH_URI = 73,
    2693  WSI_TOKEN_PUT_URI = 74,
    2694  WSI_TOKEN_DELETE_URI = 75,
    2695 
    2696  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2697  WSI_TOKEN_PROXY = 77,
    2698  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2699  WSI_TOKEN_HTTP1_0 = 79,
    2700  WSI_TOKEN_X_FORWARDED_FOR = 80,
    2701 
    2702  /****** add new things just above ---^ ******/
    2703 
    2704  /* use token storage to stash these internally, not for
    2705  * user use */
    2706 
    2707  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2708  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2709  _WSI_TOKEN_CLIENT_URI,
    2710  _WSI_TOKEN_CLIENT_HOST,
    2711  _WSI_TOKEN_CLIENT_ORIGIN,
    2712  _WSI_TOKEN_CLIENT_METHOD,
    2713 
    2714  /* always last real token index*/
    2715  WSI_TOKEN_COUNT,
    2716 
    2717  /* parser state additions, no storage associated */
    2718  WSI_TOKEN_NAME_PART,
    2719  WSI_TOKEN_SKIPPING,
    2720  WSI_TOKEN_SKIPPING_SAW_CR,
    2721  WSI_PARSING_COMPLETE,
    2722  WSI_INIT_TOKEN_MUXURL,
    2723 };
    2724 
    2726  unsigned short token_limit[WSI_TOKEN_COUNT];
    2727 };
    2728 
    2734 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2735 lws_token_to_string(enum lws_token_indexes token);
    2736 
    2737 
    2746 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2747 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2748 
    2758 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2759 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2760 
    2774 LWS_VISIBLE LWS_EXTERN int
    2775 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2776 
    2794 LWS_VISIBLE LWS_EXTERN int
    2795 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2796  enum lws_token_indexes h, int frag_idx);
    2797 
    2808 LWS_VISIBLE LWS_EXTERN const char *
    2809 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2811 
    2826 
    2837 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2838 lws_add_http_header_status(struct lws *wsi,
    2839  unsigned int code, unsigned char **p,
    2840  unsigned char *end);
    2853 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2854 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2855  const unsigned char *value, int length,
    2856  unsigned char **p, unsigned char *end);
    2870 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2871 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2872  const unsigned char *value, int length,
    2873  unsigned char **p, unsigned char *end);
    2884 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2885 lws_add_http_header_content_length(struct lws *wsi,
    2886  unsigned long content_length,
    2887  unsigned char **p, unsigned char *end);
    2897 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2898 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2899  unsigned char *end);
    2901 
    2920 
    2930 };
    2931 
    2945 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2946  const char *filename, char *buf, int len,
    2947  enum lws_spa_fileupload_states state);
    2948 
    2951 struct lws_spa;
    2952 
    2971 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2972 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2973  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2974  void *opt_data);
    2975 
    2983 LWS_VISIBLE LWS_EXTERN int
    2984 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2985 
    2991 LWS_VISIBLE LWS_EXTERN int
    2992 lws_spa_finalize(struct lws_spa *spa);
    2993 
    3000 LWS_VISIBLE LWS_EXTERN int
    3001 lws_spa_get_length(struct lws_spa *spa, int n);
    3002 
    3008 LWS_VISIBLE LWS_EXTERN const char *
    3009 lws_spa_get_string(struct lws_spa *spa, int n);
    3010 
    3016 LWS_VISIBLE LWS_EXTERN int
    3017 lws_spa_destroy(struct lws_spa *spa);
    3019 
    3030 
    3041 LWS_VISIBLE LWS_EXTERN const char *
    3042 lws_urlencode(char *escaped, const char *string, int len);
    3043 
    3044 /*
    3045  * URLDECODE 1 / 2
    3046  *
    3047  * This simple urldecode only operates until the first '\0' and requires the
    3048  * data to exist all at once
    3049  */
    3062 LWS_VISIBLE LWS_EXTERN int
    3063 lws_urldecode(char *string, const char *escaped, int len);
    3065 
    3074 LWS_VISIBLE LWS_EXTERN int
    3075 lws_return_http_status(struct lws *wsi, unsigned int code,
    3076  const char *html_body);
    3077 
    3088 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3089 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    3090  unsigned char **p, unsigned char *end);
    3091 
    3100 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3101 lws_http_transaction_completed(struct lws *wsi);
    3103 
    3111 
    3122 LWS_VISIBLE LWS_EXTERN const char *
    3123 lws_sql_purify(char *escaped, const char *string, int len);
    3124 
    3135 LWS_VISIBLE LWS_EXTERN const char *
    3136 lws_json_purify(char *escaped, const char *string, int len);
    3138 
    3145 
    3147 #ifdef LWS_USE_LIBEV
    3148 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    3149 
    3150 LWS_VISIBLE LWS_EXTERN int
    3151 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    3152  lws_ev_signal_cb_t *cb);
    3153 
    3154 LWS_VISIBLE LWS_EXTERN int
    3155 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    3156 
    3157 LWS_VISIBLE LWS_EXTERN void
    3158 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    3159 #endif /* LWS_USE_LIBEV */
    3160 
    3162 
    3169 #ifdef LWS_USE_LIBUV
    3171 LWS_VISIBLE LWS_EXTERN int
    3172 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    3173  uv_signal_cb cb);
    3174 
    3175 LWS_VISIBLE LWS_EXTERN void
    3176 lws_libuv_run(const struct lws_context *context, int tsi);
    3177 
    3178 LWS_VISIBLE LWS_EXTERN void
    3179 lws_libuv_stop(struct lws_context *context);
    3180 
    3181 LWS_VISIBLE LWS_EXTERN void
    3182 lws_libuv_stop_without_kill(const struct lws_context *context, int tsi);
    3183 
    3184 LWS_VISIBLE LWS_EXTERN int
    3185 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    3186 
    3187 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    3188 lws_uv_getloop(struct lws_context *context, int tsi);
    3189 
    3190 LWS_VISIBLE LWS_EXTERN void
    3191 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    3192 #endif /* LWS_USE_LIBUV */
    3193 
    3200 
    3201 /*
    3202  * NOTE: These public enums are part of the abi. If you want to add one,
    3203  * add it at where specified so existing users are unaffected.
    3204  */
    3205 enum pending_timeout {
    3206  NO_PENDING_TIMEOUT = 0,
    3207  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    3208  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    3209  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    3210  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    3211  PENDING_TIMEOUT_AWAITING_PING = 5,
    3212  PENDING_TIMEOUT_CLOSE_ACK = 6,
    3213  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    3214  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    3215  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    3216  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    3217  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    3218  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    3219  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    3220  PENDING_TIMEOUT_CGI = 14,
    3221  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    3222  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
    3223  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
    3224  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,
    3225 
    3226  /****** add new things just above ---^ ******/
    3227 };
    3228 
    3238 LWS_VISIBLE LWS_EXTERN void
    3239 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    3241 
    3247 #if !defined(LWS_SIZEOFPTR)
    3248 #define LWS_SIZEOFPTR (sizeof (void *))
    3249 #endif
    3250 #if !defined(u_int64_t)
    3251 #define u_int64_t unsigned long long
    3252 #endif
    3253 
    3254 #if defined(__x86_64__)
    3255 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    3256 #else
    3257 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    3258 #endif
    3259 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    3260  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    3261 #define LWS_PRE _LWS_PAD(4 + 10)
    3262 /* used prior to 1.7 and retained for backward compatibility */
    3263 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    3264 #define LWS_SEND_BUFFER_POST_PADDING 0
    3265 
    3266 /*
    3267  * NOTE: These public enums are part of the abi. If you want to add one,
    3268  * add it at where specified so existing users are unaffected.
    3269  */
    3284  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3285  LWS_WRITE_PING = 5,
    3286  LWS_WRITE_PONG = 6,
    3287 
    3288  /* Same as write_http but we know this write ends the transaction */
    3289  LWS_WRITE_HTTP_FINAL = 7,
    3290 
    3291  /* HTTP2 */
    3292 
    3300  /****** add new things just above ---^ ******/
    3301 
    3302  /* flags */
    3303 
    3311 };
    3312 
    3313 
    3400 LWS_VISIBLE LWS_EXTERN int
    3401 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3402  enum lws_write_protocol protocol);
    3403 
    3404 /* helper for case where buffer may be const */
    3405 #define lws_write_http(wsi, buf, len) \
    3406  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3407 
    3427 
    3440 LWS_VISIBLE LWS_EXTERN int
    3441 lws_callback_on_writable(struct lws *wsi);
    3442 
    3456 LWS_VISIBLE LWS_EXTERN int
    3457 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3458  const struct lws_protocols *protocol);
    3459 
    3473 LWS_VISIBLE LWS_EXTERN int
    3474 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3475  const struct lws_protocols *protocol);
    3476 
    3489 LWS_VISIBLE LWS_EXTERN int
    3490 lws_callback_all_protocol(struct lws_context *context,
    3491  const struct lws_protocols *protocol, int reason);
    3492 
    3505 LWS_VISIBLE LWS_EXTERN int
    3506 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3507  const struct lws_protocols *protocol, int reason);
    3508 
    3522 LWS_VISIBLE LWS_EXTERN int
    3523 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3524 
    3525 LWS_VISIBLE LWS_EXTERN int
    3526 lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,
    3527  void *user, void *in, size_t len);
    3528 
    3536 LWS_VISIBLE LWS_EXTERN int
    3537 lws_get_socket_fd(struct lws *wsi);
    3538 
    3560 LWS_VISIBLE LWS_EXTERN size_t
    3561 lws_get_peer_write_allowance(struct lws *wsi);
    3563 
    3574 LWS_VISIBLE LWS_EXTERN int
    3575 lws_rx_flow_control(struct lws *wsi, int enable);
    3576 
    3586 LWS_VISIBLE LWS_EXTERN void
    3587 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3588  const struct lws_protocols *protocol);
    3589 
    3606 LWS_VISIBLE LWS_EXTERN size_t
    3607 lws_remaining_packet_payload(struct lws *wsi);
    3608 
    3609 
    3618 
    3632 LWS_VISIBLE LWS_EXTERN struct lws *
    3633 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3646 LWS_VISIBLE LWS_EXTERN struct lws *
    3647 lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd);
    3671 LWS_VISIBLE LWS_EXTERN struct lws *
    3672 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3673  const char *readbuf, size_t len);
    3697 LWS_VISIBLE LWS_EXTERN struct lws *
    3698 lws_adopt_socket_vhost_readbuf(struct lws_vhost *vhost, lws_sockfd_type accept_fd,
    3699  const char *readbuf, size_t len);
    3701 
    3707 
    3718 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3719 lws_canonical_hostname(struct lws_context *context);
    3720 
    3735 LWS_VISIBLE LWS_EXTERN void
    3736 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3737  int name_len, char *rip, int rip_len);
    3738 
    3749 LWS_VISIBLE LWS_EXTERN const char *
    3750 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3751 #ifndef LWS_WITH_ESP8266
    3752 
    3763 LWS_VISIBLE LWS_EXTERN int
    3764 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3765  size_t addrlen);
    3767 #endif
    3768 
    3774 
    3787 LWS_VISIBLE LWS_EXTERN int
    3788 lws_snprintf(char *str, size_t size, const char *format, ...);
    3789 
    3801 LWS_VISIBLE LWS_EXTERN int
    3802 lws_get_random(struct lws_context *context, void *buf, int len);
    3810 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3811 lws_daemonize(const char *_lock_path);
    3817 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3819 
    3826 LWS_VISIBLE LWS_EXTERN void *
    3827 lws_wsi_user(struct lws *wsi);
    3828 
    3840 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3841 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3842  const char **path);
    3843 
    3847 LWS_VISIBLE LWS_EXTERN unsigned long
    3848 lws_now_secs(void);
    3849 
    3859 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3860 lws_get_context(const struct lws *wsi);
    3861 
    3871 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3872 lws_get_count_threads(struct lws_context *context);
    3873 
    3881 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3882 lws_get_parent(const struct lws *wsi);
    3883 
    3890 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3891 lws_get_child(const struct lws *wsi);
    3892 
    3893 
    3894 /*
    3895  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3896  * It's provided in case it is
    3897  * useful when integrating with other app poll loop service code.
    3898  */
    3899 LWS_VISIBLE LWS_EXTERN int
    3900 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3901 
    3909 LWS_VISIBLE LWS_EXTERN void
    3910 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3912 
    3918 
    3925 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3926 lws_send_pipe_choked(struct lws *wsi);
    3927 
    3932 LWS_VISIBLE LWS_EXTERN int
    3933 lws_is_final_fragment(struct lws *wsi);
    3934 
    3939 LWS_VISIBLE LWS_EXTERN unsigned char
    3940 lws_get_reserved_bits(struct lws *wsi);
    3941 
    3958 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3959 lws_partial_buffered(struct lws *wsi);
    3960 
    3970 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3971 lws_frame_is_binary(struct lws *wsi);
    3972 
    3981 LWS_VISIBLE LWS_EXTERN int
    3982 lws_is_ssl(struct lws *wsi);
    3987 LWS_VISIBLE LWS_EXTERN int
    3988 lws_is_cgi(struct lws *wsi);
    3989 
    3990 #ifdef LWS_OPENSSL_SUPPORT
    3991 
    3997 LWS_VISIBLE LWS_EXTERN SSL*
    3998 lws_get_ssl(struct lws *wsi);
    3999 #endif
    4000 
    4002 
    4008 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    4010 #define lws_SHA1 SHA1
    4011 #else
    4012 
    4021 LWS_VISIBLE LWS_EXTERN unsigned char *
    4022 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    4023 #endif
    4024 
    4034 LWS_VISIBLE LWS_EXTERN int
    4035 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    4045 LWS_VISIBLE LWS_EXTERN int
    4046 lws_b64_decode_string(const char *in, char *out, int out_size);
    4048 
    4049 
    4059 #ifdef LWS_WITH_CGI
    4060 enum lws_enum_stdinouterr {
    4061  LWS_STDIN = 0,
    4062  LWS_STDOUT = 1,
    4063  LWS_STDERR = 2,
    4064 };
    4065 
    4066 enum lws_cgi_hdr_state {
    4067  LCHS_HEADER,
    4068  LCHS_CR1,
    4069  LCHS_LF1,
    4070  LCHS_CR2,
    4071  LCHS_LF2,
    4072  LHCS_PAYLOAD,
    4073  LCHS_SINGLE_0A,
    4074 };
    4075 
    4077  struct lws **stdwsi;
    4078  enum lws_enum_stdinouterr ch;
    4079  unsigned char *data;
    4080  enum lws_cgi_hdr_state hdr_state;
    4081  int len;
    4082 };
    4083 
    4084 
    4094 LWS_VISIBLE LWS_EXTERN int
    4095 lws_cgi(struct lws *wsi, const char * const *exec_array,
    4096  int script_uri_path_len, int timeout_secs,
    4097  const struct lws_protocol_vhost_options *mp_cgienv);
    4098 
    4104 LWS_VISIBLE LWS_EXTERN int
    4105 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    4106 
    4112 LWS_VISIBLE LWS_EXTERN int
    4113 lws_cgi_kill(struct lws *wsi);
    4114 #endif
    4115 
    4117 
    4134 
    4141  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    4142  unsigned long *filelen, int flags);
    4146  int (*close)(struct lws *wsi, lws_filefd_type fd);
    4148  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    4149  long offset_from_cur_pos);
    4151  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4152  unsigned char *buf, unsigned long len);
    4154  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4155  unsigned char *buf, unsigned long len);
    4158  /* Add new things just above here ---^
    4159  * This is part of the ABI, don't needlessly break compatibility */
    4160 };
    4161 
    4167 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    4168 lws_get_fops(struct lws_context *context);
    4169 
    4178 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    4179 lws_plat_file_open(struct lws *wsi, const char *filename,
    4180  unsigned long *filelen, int flags)
    4181 {
    4182  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    4183  filelen, flags);
    4184 }
    4185 
    4192 static LWS_INLINE int
    4193 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    4194 {
    4195  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    4196 }
    4197 
    4205 static LWS_INLINE unsigned long
    4206 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    4207 {
    4208  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    4209 }
    4219 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4220 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4221  unsigned char *buf, unsigned long len)
    4222 {
    4223  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    4224  len);
    4225 }
    4235 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4236 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4237  unsigned char *buf, unsigned long len)
    4238 {
    4239  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    4240  len);
    4241 }
    4243 
    4275 #ifdef LWS_WITH_SMTP
    4276 
    4288 };
    4289 
    4291 struct lws_email {
    4292  void *data;
    4294  uv_loop_t *loop;
    4297  char email_smtp_ip[32];
    4298  char email_helo[32];
    4299  char email_from[100];
    4300  char email_to[100];
    4302  unsigned int max_content_size;
    4305  /* Fill all the callbacks before init */
    4306 
    4307  int (*on_next)(struct lws_email *email);
    4312  int (*on_sent)(struct lws_email *email);
    4317  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    4323  /* private things */
    4324  uv_timer_t timeout_email;
    4326  uv_connect_t email_connect_req;
    4327  uv_tcp_t email_client;
    4329  char email_buf[256];
    4330  char *content;
    4331 };
    4332 
    4342 LWS_VISIBLE LWS_EXTERN int
    4343 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    4344 
    4353 LWS_VISIBLE LWS_EXTERN void
    4354 lws_email_check(struct lws_email *email);
    4362 LWS_VISIBLE LWS_EXTERN void
    4363 lws_email_destroy(struct lws_email *email);
    4364 
    4365 #endif
    4366 
    4367 
    4368 #ifdef __cplusplus
    4369 }
    4370 #endif
    4371 
    4372 #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 <fcntl.h>
    120 #else
    121 #define _O_RDONLY 0x0000
    122 #define O_RDONLY _O_RDONLY
    123 #endif
    124 
    125 // Visual studio older than 2015 and WIN_CE has only _stricmp
    126 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    127 #define strcasecmp _stricmp
    128 #elif !defined(__MINGW32__)
    129 #define strcasecmp stricmp
    130 #endif
    131 #define getdtablesize() 30000
    132 
    133 #define LWS_INLINE __inline
    134 #define LWS_VISIBLE
    135 #define LWS_WARN_UNUSED_RESULT
    136 #define LWS_WARN_DEPRECATED
    137 
    138 #ifdef LWS_DLL
    139 #ifdef LWS_INTERNAL
    140 #define LWS_EXTERN extern __declspec(dllexport)
    141 #else
    142 #define LWS_EXTERN extern __declspec(dllimport)
    143 #endif
    144 #else
    145 #define LWS_EXTERN
    146 #endif
    147 
    148 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    149 #define LWS_O_RDONLY _O_RDONLY
    150 
    151 #if !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER < 1900) /* Visual Studio 2015 already defines this in <stdio.h> */
    152 #define lws_snprintf _snprintf
    153 #endif
    154 
    155 #ifndef __func__
    156 #define __func__ __FUNCTION__
    157 #endif
    158 
    159 #else /* NOT WIN32 */
    160 #include <unistd.h>
    161 
    162 #if defined(__NetBSD__) || defined(__FreeBSD__)
    163 #include <netinet/in.h>
    164 #endif
    165 
    166 #define LWS_INLINE inline
    167 #define LWS_O_RDONLY O_RDONLY
    168 
    169 #if !defined(MBED_OPERATORS) && !defined(LWS_WITH_ESP8266) && !defined(OPTEE_TA)
    170 #include <poll.h>
    171 #include <netdb.h>
    172 #define LWS_INVALID_FILE -1
    173 #else
    174 #define getdtablesize() (20)
    175 #define LWS_INVALID_FILE NULL
    176 #endif
    177 
    178 #if defined(__GNUC__)
    179 
    180 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    181 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    182 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    183 #else
    184 #define LWS_WARN_UNUSED_RESULT
    185 #endif
    186 
    187 #define LWS_VISIBLE __attribute__((visibility("default")))
    188 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    189 #else
    190 #define LWS_VISIBLE
    191 #define LWS_WARN_UNUSED_RESULT
    192 #define LWS_WARN_DEPRECATED
    193 #endif
    194 
    195 #if defined(__ANDROID__)
    196 #include <unistd.h>
    197 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    198 #endif
    199 
    200 #endif
    201 
    202 #ifdef LWS_USE_LIBEV
    203 #include <ev.h>
    204 #endif /* LWS_USE_LIBEV */
    205 #ifdef LWS_USE_LIBUV
    206 #include <uv.h>
    207 #ifdef LWS_HAVE_UV_VERSION_H
    208 #include <uv-version.h>
    209 #endif
    210 #endif /* LWS_USE_LIBUV */
    211 
    212 #ifndef LWS_EXTERN
    213 #define LWS_EXTERN extern
    214 #endif
    215 
    216 #ifdef _WIN32
    217 #define random rand
    218 #else
    219 #if !defined(OPTEE_TA)
    220 #include <sys/time.h>
    221 #include <unistd.h>
    222 #endif
    223 #endif
    224 
    225 #ifdef LWS_OPENSSL_SUPPORT
    226 
    227 #ifdef USE_WOLFSSL
    228 #ifdef USE_OLD_CYASSL
    229 #include <cyassl/openssl/ssl.h>
    230 #include <cyassl/error-ssl.h>
    231 #else
    232 #include <wolfssl/openssl/ssl.h>
    233 #include <wolfssl/error-ssl.h>
    234 #endif /* not USE_OLD_CYASSL */
    235 #else
    236 #if defined(LWS_USE_POLARSSL)
    237 #include <polarssl/ssl.h>
    239  x509_crt ca;
    240  x509_crt certificate;
    241  rsa_context key;
    242 };
    243 typedef struct lws_polarssl_context SSL_CTX;
    244 typedef ssl_context SSL;
    245 #else
    246 #if defined(LWS_USE_MBEDTLS)
    247 #include <mbedtls/ssl.h>
    248 #else
    249 #include <openssl/ssl.h>
    250 #include <openssl/err.h>
    251 #endif /* not USE_MBEDTLS */
    252 #endif /* not USE_POLARSSL */
    253 #endif /* not USE_WOLFSSL */
    254 #endif
    255 
    256 
    257 #define CONTEXT_PORT_NO_LISTEN -1
    258 #define CONTEXT_PORT_NO_LISTEN_SERVER -2
    259 
    270 
    272 enum lws_log_levels {
    273  LLL_ERR = 1 << 0,
    274  LLL_WARN = 1 << 1,
    275  LLL_NOTICE = 1 << 2,
    276  LLL_INFO = 1 << 3,
    277  LLL_DEBUG = 1 << 4,
    278  LLL_PARSER = 1 << 5,
    279  LLL_HEADER = 1 << 6,
    280  LLL_EXT = 1 << 7,
    281  LLL_CLIENT = 1 << 8,
    282  LLL_LATENCY = 1 << 9,
    283  LLL_USER = 1 << 10,
    284 
    285  LLL_COUNT = 11 /* set to count of valid flags */
    286 };
    287 
    288 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    289 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    299 LWS_VISIBLE LWS_EXTERN int
    300 lwsl_timestamp(int level, char *p, int len);
    301 
    302 /* these guys are unconditionally included */
    303 
    304 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    305 #define lwsl_user(...) _lws_log(LLL_USER, __VA_ARGS__)
    306 
    307 #if !defined(LWS_WITH_NO_LOGS)
    308 /* notice and warn are usually included by being compiled in */
    309 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    310 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    311 #endif
    312 /*
    313  * weaker logging can be deselected by telling CMake to build in RELEASE mode
    314  * that gets rid of the overhead of checking while keeping _warn and _err
    315  * active
    316  */
    317 
    318 #if defined(LWS_WITH_ESP8266)
    319 #undef _DEBUG
    320 #endif
    321 
    322 #ifdef _DEBUG
    323 #if defined(LWS_WITH_NO_LOGS)
    324 /* notice, warn and log are always compiled in */
    325 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    326 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    327 #endif
    328 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    329 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    330 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    331 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    332 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    333 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    334 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    335 
    341 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    342 
    343 #else /* no debug */
    344 #if defined(LWS_WITH_NO_LOGS)
    345 #define lwsl_warn(...) do {} while(0)
    346 #define lwsl_notice(...) do {} while(0)
    347 #endif
    348 #define lwsl_info(...) do {} while(0)
    349 #define lwsl_debug(...) do {} while(0)
    350 #define lwsl_parser(...) do {} while(0)
    351 #define lwsl_header(...) do {} while(0)
    352 #define lwsl_ext(...) do {} while(0)
    353 #define lwsl_client(...) do {} while(0)
    354 #define lwsl_latency(...) do {} while(0)
    355 #define lwsl_hexdump(a, b)
    356 
    357 #endif
    358 
    369 LWS_VISIBLE LWS_EXTERN void
    370 lws_set_log_level(int level,
    371  void (*log_emit_function)(int level, const char *line));
    372 
    382 LWS_VISIBLE LWS_EXTERN void
    383 lwsl_emit_syslog(int level, const char *line);
    384 
    386 
    387 
    388 #include <stddef.h>
    389 
    390 #ifndef lws_container_of
    391 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    392 #endif
    393 
    394 
    395 struct lws;
    396 #ifndef ARRAY_SIZE
    397 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    398 #endif
    399 
    400 /* api change list for user code to test against */
    401 
    402 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    403 
    404 /* the struct lws_protocols has the id field present */
    405 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    406 
    407 /* you can call lws_get_peer_write_allowance */
    408 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    409 
    410 /* extra parameter introduced in 917f43ab821 */
    411 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    412 
    413 /* File operations stuff exists */
    414 #define LWS_FEATURE_FOPS
    415 
    416 
    417 #if defined(_WIN32)
    418 typedef SOCKET lws_sockfd_type;
    419 typedef HANDLE lws_filefd_type;
    420 #define lws_sockfd_valid(sfd) (!!sfd)
    421 struct lws_pollfd {
    422  lws_sockfd_type fd;
    423  SHORT events;
    424  SHORT revents;
    425 };
    426 #define LWS_POLLHUP (FD_CLOSE)
    427 #define LWS_POLLIN (FD_READ | FD_ACCEPT)
    428 #define LWS_POLLOUT (FD_WRITE)
    429 #else
    430 
    431 #if defined(MBED_OPERATORS)
    432 /* it's a class lws_conn * */
    433 typedef void * lws_sockfd_type;
    434 typedef void * lws_filefd_type;
    435 #define lws_sockfd_valid(sfd) (!!sfd)
    436 struct pollfd {
    437  lws_sockfd_type fd;
    438  short events;
    439  short revents;
    440 };
    441 #define POLLIN 0x0001
    442 #define POLLPRI 0x0002
    443 #define POLLOUT 0x0004
    444 #define POLLERR 0x0008
    445 #define POLLHUP 0x0010
    446 #define POLLNVAL 0x0020
    447 
    448 struct lws;
    449 
    450 void * mbed3_create_tcp_stream_socket(void);
    451 void mbed3_delete_tcp_stream_socket(void *sockfd);
    452 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    453 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    454 #else
    455 #if defined(LWS_WITH_ESP8266)
    456 
    457 #include <user_interface.h>
    458 #include <espconn.h>
    459 
    460 typedef struct espconn * lws_sockfd_type;
    461 typedef void * lws_filefd_type;
    462 #define lws_sockfd_valid(sfd) (!!sfd)
    463 struct pollfd {
    464  lws_sockfd_type fd;
    465  short events;
    466  short revents;
    467 };
    468 #define POLLIN 0x0001
    469 #define POLLPRI 0x0002
    470 #define POLLOUT 0x0004
    471 #define POLLERR 0x0008
    472 #define POLLHUP 0x0010
    473 #define POLLNVAL 0x0020
    474 
    475 struct lws_vhost;
    476 
    477 lws_sockfd_type esp8266_create_tcp_listen_socket(struct lws_vhost *vh);
    478 void esp8266_tcp_stream_accept(lws_sockfd_type fd, struct lws *wsi);
    479 
    480 #include <os_type.h>
    481 #include <osapi.h>
    482 #include "ets_sys.h"
    483 
    484 int ets_snprintf(char *str, size_t size, const char *format, ...);
    485 #define snprintf ets_snprintf
    486 
    487 typedef os_timer_t uv_timer_t;
    488 typedef void uv_cb_t(uv_timer_t *);
    489 
    490 void os_timer_disarm(void *);
    491 void os_timer_setfn(os_timer_t *, os_timer_func_t *, void *);
    492 
    493 void ets_timer_arm_new(os_timer_t *, int, int, int);
    494 
    495 //void os_timer_arm(os_timer_t *, int, int);
    496 
    497 #define UV_VERSION_MAJOR 1
    498 
    499 #define lws_uv_getloop(a, b) (NULL)
    500 
    501 static inline void uv_timer_init(void *l, uv_timer_t *t)
    502 {
    503  (void)l;
    504  memset(t, 0, sizeof(*t));
    505  os_timer_disarm(t);
    506 }
    507 
    508 static inline void uv_timer_start(uv_timer_t *t, uv_cb_t *cb, int first, int rep)
    509 {
    510  os_timer_setfn(t, (os_timer_func_t *)cb, t);
    511  /* ms, repeat */
    512  os_timer_arm(t, first, !!rep);
    513 }
    514 
    515 static inline void uv_timer_stop(uv_timer_t *t)
    516 {
    517  os_timer_disarm(t);
    518 }
    519 
    520 #else
    521 typedef int lws_sockfd_type;
    522 typedef int lws_filefd_type;
    523 #define lws_sockfd_valid(sfd) (sfd >= 0)
    524 #endif
    525 #endif
    526 
    527 #define lws_pollfd pollfd
    528 #define LWS_POLLHUP (POLLHUP|POLLERR)
    529 #define LWS_POLLIN (POLLIN)
    530 #define LWS_POLLOUT (POLLOUT)
    531 #endif
    532 
    535 struct lws_pollargs {
    536  lws_sockfd_type fd;
    537  int events;
    539 };
    540 
    541 struct lws_tokens;
    542 struct lws_token_limits;
    543 
    551 
    553 /*
    554  * NOTE: These public enums are part of the abi. If you want to add one,
    555  * add it at where specified so existing users are unaffected.
    556  */
    559  LWS_CLOSE_STATUS_NOSTATUS = 0,
    621  /****** add new things just above ---^ ******/
    622 
    623  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    624 };
    625 
    638 LWS_VISIBLE LWS_EXTERN void
    639 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    640  unsigned char *buf, size_t len);
    641 
    643 
    644 struct lws;
    645 struct lws_context;
    646 /* needed even with extensions disabled for create context */
    647 struct lws_extension;
    648 
    660 
    662 
    663 /*
    664  * NOTE: These public enums are part of the abi. If you want to add one,
    665  * add it at where specified so existing users are unaffected.
    666  */
    910  /* external poll() management support */
    973  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    976  LWS_CALLBACK_CGI = 40,
    978  LWS_CALLBACK_CGI_TERMINATED = 41,
    980  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    982  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    984  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    986  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    988  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    990  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    992  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    994  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    996  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    998  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    1000  LWS_CALLBACK_PROCESS_HTML = 52,
    1002  LWS_CALLBACK_ADD_HEADERS = 53,
    1004  LWS_CALLBACK_SESSION_INFO = 54,
    1007  LWS_CALLBACK_GS_EVENT = 55,
    1054  /****** add new things just above ---^ ******/
    1055 
    1058 };
    1059 
    1060 
    1061 
    1077 typedef int
    1078 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    1079  void *user, void *in, size_t len);
    1081 
    1091 
    1093 /*
    1094  * NOTE: These public enums are part of the abi. If you want to add one,
    1095  * add it at where specified so existing users are unaffected.
    1096  */
    1097 enum lws_extension_callback_reasons {
    1098  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    1099  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    1100  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    1101  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    1102  LWS_EXT_CB_CONSTRUCT = 4,
    1103  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    1104  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    1105  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    1106  LWS_EXT_CB_DESTROY = 8,
    1107  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    1108  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    1109  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    1110  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    1111  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    1112  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    1113  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    1114  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    1115  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    1116  LWS_EXT_CB_1HZ = 18,
    1117  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    1118  LWS_EXT_CB_IS_WRITEABLE = 20,
    1119  LWS_EXT_CB_PAYLOAD_TX = 21,
    1120  LWS_EXT_CB_PAYLOAD_RX = 22,
    1121  LWS_EXT_CB_OPTION_DEFAULT = 23,
    1122  LWS_EXT_CB_OPTION_SET = 24,
    1123  LWS_EXT_CB_OPTION_CONFIRM = 25,
    1124  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    1125 
    1126  /****** add new things just above ---^ ******/
    1127 };
    1128 
    1135  /* Add new things just above here ---^
    1136  * This is part of the ABI, don't needlessly break compatibility */
    1137 };
    1138 
    1144  const char *name;
    1147  /* Add new things just above here ---^
    1148  * This is part of the ABI, don't needlessly break compatibility */
    1149 };
    1150 
    1153  const char *option_name;
    1155  const char *start;
    1156  int len;
    1157 };
    1158 
    1219 typedef int
    1220 lws_extension_callback_function(struct lws_context *context,
    1221  const struct lws_extension *ext, struct lws *wsi,
    1222  enum lws_extension_callback_reasons reason,
    1223  void *user, void *in, size_t len);
    1224 
    1227  const char *name;
    1229  const char *client_offer;
    1231  /* Add new things just above here ---^
    1232  * This is part of the ABI, don't needlessly break compatibility */
    1233 };
    1234 
    1243 LWS_VISIBLE LWS_EXTERN int
    1244 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1245  const char *opt_name, const char *opt_val);
    1246 
    1247 #ifndef LWS_NO_EXTENSIONS
    1248 /* lws_get_internal_extensions() - DEPRECATED
    1249  *
    1250  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1251  * by user code along with application-specific settings. See the test
    1252  * client and server for how to do.
    1253  */
    1254 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1255 lws_get_internal_extensions(void) { return NULL; }
    1256 
    1267 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1268 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1269  void *ext_user, const struct lws_ext_options *opts,
    1270  const char *o, int len);
    1271 #endif
    1272 
    1285 LWS_EXTERN
    1287  struct lws_context *context, const struct lws_extension *ext,
    1288  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1289  void *user, void *in, size_t len);
    1290 
    1291 /*
    1292  * The internal exts are part of the public abi
    1293  * If we add more extensions, publish the callback here ------v
    1294  */
    1296 
    1312 
    1317  const char *name;
    1338  unsigned int id;
    1345  void *user;
    1348  /* Add new things just above here ---^
    1349  * This is part of the ABI, don't needlessly break compatibility */
    1350 };
    1351 
    1352 struct lws_vhost;
    1353 
    1362 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1363 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1364 
    1374 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1375 lws_get_protocol(struct lws *wsi);
    1376 
    1378 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1379 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1380 
    1391 LWS_VISIBLE LWS_EXTERN void *
    1392 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1393  int size);
    1394 
    1404 LWS_VISIBLE LWS_EXTERN void *
    1405 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1406 
    1415 LWS_VISIBLE LWS_EXTERN int
    1416 lws_finalize_startup(struct lws_context *context);
    1417 
    1418 #ifdef LWS_WITH_PLUGINS
    1419 
    1420 /* PLUGINS implies LIBUV */
    1421 
    1422 #define LWS_PLUGIN_API_MAGIC 180
    1423 
    1426  unsigned int api_magic;
    1427  const struct lws_protocols *protocols;
    1429  const struct lws_extension *extensions;
    1431 };
    1432 
    1433 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1434  struct lws_plugin_capability *);
    1435 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1436 
    1438 struct lws_plugin {
    1439  struct lws_plugin *list;
    1440 #if (UV_VERSION_MAJOR > 0)
    1441  uv_lib_t lib;
    1442 #else
    1443  void *l;
    1444 #endif
    1445  char name[64];
    1447 };
    1448 
    1449 #endif
    1450 
    1452 
    1453 
    1462 
    1464 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1465 
    1467 /* SHA-1 binary and hexified versions */
    1469 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1471 typedef struct { char id[41]; } lwsgw_hash;
    1472 
    1479 };
    1480 
    1483  char username[32];
    1484  char email[100];
    1485  char ip[72];
    1486  unsigned int mask;
    1488  char session[42];
    1489 };
    1490 
    1495 };
    1496 
    1499  enum lws_gs_event event;
    1500  const char *username;
    1501  const char *email;
    1502 };
    1503 
    1505 
    1506 
    1520 
    1522 /*
    1523  * NOTE: These public enums are part of the abi. If you want to add one,
    1524  * add it at where specified so existing users are unaffected.
    1525  */
    1526 
    1530  (1 << 12),
    1537  (1 << 12),
    1553  (1 << 12),
    1558  (1 << 12),
    1589  /****** add new things just above ---^ ******/
    1590 };
    1591 
    1592 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1593 
    1604  int port;
    1609  const char *iface;
    1616  const struct lws_protocols *protocols;
    1620  const struct lws_extension *extensions;
    1628  const char *ssl_cert_filepath;
    1638  const char *ssl_ca_filepath;
    1640  const char *ssl_cipher_list;
    1644  const char *http_proxy_address;
    1647  unsigned int http_proxy_port;
    1649  int gid;
    1651  int uid;
    1653  unsigned int options;
    1655  void *user;
    1658  int ka_time;
    1668 #ifdef LWS_OPENSSL_SUPPORT
    1674 #else /* maintain structure layout either way */
    1676 #endif
    1677 
    1688  unsigned int count_threads;
    1690  unsigned int fd_limit_per_thread;
    1694  unsigned int timeout_secs;
    1699  const char *ecdh_curve;
    1701  const char *vhost_name;
    1705  const char * const *plugin_dirs;
    1714  const char *log_filepath;
    1717  const struct lws_http_mount *mounts;
    1719  const char *server_string;
    1722  unsigned int pt_serv_buf_size;
    1737  unsigned short ws_ping_pong_interval;
    1768  /* Add new things just above here ---^
    1769  * This is part of the ABI, don't needlessly break compatibility
    1770  *
    1771  * The below is to ensure later library versions with new
    1772  * members added above will see 0 (default) even if the app
    1773  * was not built against the newer headers.
    1774  */
    1775 
    1776  void *_unused[8];
    1777 };
    1778 
    1813 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1815 
    1824 LWS_VISIBLE LWS_EXTERN void
    1825 lws_context_destroy(struct lws_context *context);
    1826 
    1827 LWS_VISIBLE LWS_EXTERN void
    1828 lws_context_destroy2(struct lws_context *context);
    1829 
    1830 typedef int (*lws_reload_func)(void);
    1831 
    1856 LWS_VISIBLE LWS_EXTERN void
    1857 lws_context_deprecate(struct lws_context *context, lws_reload_func cb);
    1858 
    1859 LWS_VISIBLE LWS_EXTERN int
    1860 lws_context_is_deprecated(struct lws_context *context);
    1861 
    1879 LWS_VISIBLE LWS_EXTERN int
    1880 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1881 
    1882 
    1883 struct lws_vhost;
    1884 
    1894 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1895 lws_create_vhost(struct lws_context *context,
    1896  struct lws_context_creation_info *info);
    1897 
    1912 LWS_VISIBLE LWS_EXTERN int
    1913 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1914  char **config_strings, int *len);
    1915 
    1931 LWS_VISIBLE LWS_EXTERN int
    1932 lwsws_get_config_vhosts(struct lws_context *context,
    1933  struct lws_context_creation_info *info, const char *d,
    1934  char **config_strings, int *len);
    1935 
    1937 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1938 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1939 
    1945 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1946 lws_get_vhost(struct lws *wsi);
    1947 
    1955 LWS_VISIBLE LWS_EXTERN int
    1956 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1957 
    1965 LWS_VISIBLE LWS_EXTERN int
    1966 lws_json_dump_context(const struct lws_context *context, char *buf, int len,
    1967  int hide_vhosts);
    1968 
    1978 LWS_VISIBLE LWS_EXTERN void *
    1979 lws_context_user(struct lws_context *context);
    1980 
    1986 
    1996  const char *name;
    1997  const char *value;
    1998 };
    1999 
    2012 };
    2013 
    2021  const char *mountpoint;
    2023  const char *origin;
    2025  const char *def;
    2027  const char *protocol;
    2043  unsigned int auth_mask;
    2046  unsigned int cache_reusable:1;
    2047  unsigned int cache_revalidate:1;
    2048  unsigned int cache_intermediaries:1;
    2050  unsigned char origin_protocol;
    2051  unsigned char mountpoint_len;
    2056  /* Add new things just above here ---^
    2057  * This is part of the ABI, don't needlessly break compatibility
    2058  *
    2059  * The below is to ensure later library versions with new
    2060  * members added above will see 0 (default) even if the app
    2061  * was not built against the newer headers.
    2062  */
    2063 
    2064  void *_unused[2];
    2065 };
    2068 
    2074 
    2082  LCCSCF_USE_SSL = (1 << 0),
    2083  LCCSCF_ALLOW_SELFSIGNED = (1 << 1),
    2084  LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK = (1 << 2),
    2085  LCCSCF_ALLOW_EXPIRED = (1 << 3)
    2086 };
    2087 
    2092  struct lws_context *context;
    2094  const char *address;
    2096  int port;
    2100  const char *path;
    2102  const char *host;
    2104  const char *origin;
    2106  const char *protocol;
    2110  void *userdata;
    2112  const void *client_exts;
    2114  const char *method;
    2117  struct lws *parent_wsi;
    2121  const char *uri_replace_from;
    2124  const char *uri_replace_to;
    2126  struct lws_vhost *vhost;
    2128  struct lws **pwsi;
    2140  /* Add new things just above here ---^
    2141  * This is part of the ABI, don't needlessly break compatibility
    2142  *
    2143  * The below is to ensure later library versions with new
    2144  * members added above will see 0 (default) even if the app
    2145  * was not built against the newer headers.
    2146  */
    2147 
    2148  void *_unused[4];
    2149 };
    2150 
    2158 LWS_VISIBLE LWS_EXTERN struct lws *
    2160 
    2181 /* deprecated, use lws_client_connect_via_info() */
    2182 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2183 lws_client_connect(struct lws_context *clients, const char *address,
    2184  int port, int ssl_connection, const char *path,
    2185  const char *host, const char *origin, const char *protocol,
    2186  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    2187 /* deprecated, use lws_client_connect_via_info() */
    2208 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    2209 lws_client_connect_extended(struct lws_context *clients, const char *address,
    2210  int port, int ssl_connection, const char *path,
    2211  const char *host, const char *origin,
    2212  const char *protocol, int ietf_version_or_minus_one,
    2213  void *userdata) LWS_WARN_DEPRECATED;
    2214 
    2240 LWS_VISIBLE LWS_EXTERN int
    2242  struct lws_vhost *vhost);
    2243 
    2244 LWS_VISIBLE LWS_EXTERN int
    2245 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2246 
    2254 LWS_VISIBLE LWS_EXTERN unsigned int
    2255 lws_http_client_http_response(struct lws *wsi);
    2256 
    2257 LWS_VISIBLE LWS_EXTERN void
    2258 lws_client_http_body_pending(struct lws *wsi, int something_left_to_send);
    2259 
    2280 
    2289 
    2322 LWS_VISIBLE LWS_EXTERN int
    2323 lws_service(struct lws_context *context, int timeout_ms);
    2324 
    2336 LWS_VISIBLE LWS_EXTERN int
    2337 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2338 
    2354 LWS_VISIBLE LWS_EXTERN void
    2355 lws_cancel_service_pt(struct lws *wsi);
    2356 
    2368 LWS_VISIBLE LWS_EXTERN void
    2369 lws_cancel_service(struct lws_context *context);
    2370 
    2397 LWS_VISIBLE LWS_EXTERN int
    2398 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2399 
    2409 LWS_VISIBLE LWS_EXTERN int
    2410 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2411  int tsi);
    2412 
    2430 LWS_VISIBLE LWS_EXTERN int
    2431 lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, int tsi);
    2432 
    2433 /* Backwards compatibility */
    2434 #define lws_plat_service_tsi lws_service_tsi
    2435 
    2437 
    2443 
    2450 
    2462 LWS_VISIBLE LWS_EXTERN const char *
    2463 lws_get_mimetype(const char *file, const struct lws_http_mount *m);
    2464 
    2483 LWS_VISIBLE LWS_EXTERN int
    2484 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2485  const char *other_headers, int other_headers_len);
    2486 LWS_VISIBLE LWS_EXTERN int
    2487 lws_serve_http_file_fragment(struct lws *wsi);
    2489 
    2500 
    2501 enum http_status {
    2502  HTTP_STATUS_OK = 200,
    2503  HTTP_STATUS_NO_CONTENT = 204,
    2504  HTTP_STATUS_PARTIAL_CONTENT = 206,
    2505 
    2506  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2507  HTTP_STATUS_FOUND = 302,
    2508  HTTP_STATUS_SEE_OTHER = 303,
    2509 
    2510  HTTP_STATUS_BAD_REQUEST = 400,
    2511  HTTP_STATUS_UNAUTHORIZED,
    2512  HTTP_STATUS_PAYMENT_REQUIRED,
    2513  HTTP_STATUS_FORBIDDEN,
    2514  HTTP_STATUS_NOT_FOUND,
    2515  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2516  HTTP_STATUS_NOT_ACCEPTABLE,
    2517  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2518  HTTP_STATUS_REQUEST_TIMEOUT,
    2519  HTTP_STATUS_CONFLICT,
    2520  HTTP_STATUS_GONE,
    2521  HTTP_STATUS_LENGTH_REQUIRED,
    2522  HTTP_STATUS_PRECONDITION_FAILED,
    2523  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2524  HTTP_STATUS_REQ_URI_TOO_LONG,
    2525  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2526  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2527  HTTP_STATUS_EXPECTATION_FAILED,
    2528 
    2529  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2530  HTTP_STATUS_NOT_IMPLEMENTED,
    2531  HTTP_STATUS_BAD_GATEWAY,
    2532  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2533  HTTP_STATUS_GATEWAY_TIMEOUT,
    2534  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2535 };
    2536 
    2538  char *p;
    2539  int len;
    2540  int max_len;
    2541  int final;
    2542 };
    2543 
    2544 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2545 
    2547  char *start;
    2548  char swallow[16];
    2549  int pos;
    2550  void *data;
    2551  const char * const *vars;
    2554  lws_process_html_state_cb replace;
    2555 };
    2556 
    2561 LWS_VISIBLE LWS_EXTERN int
    2563  struct lws_process_html_state *s);
    2565 
    2598 
    2606 struct lws_tokens {
    2607  char *token;
    2609 };
    2610 
    2611 /* enum lws_token_indexes
    2612  * these have to be kept in sync with lextable.h / minilex.c
    2613  *
    2614  * NOTE: These public enums are part of the abi. If you want to add one,
    2615  * add it at where specified so existing users are unaffected.
    2616  */
    2617 enum lws_token_indexes {
    2618  WSI_TOKEN_GET_URI = 0,
    2619  WSI_TOKEN_POST_URI = 1,
    2620  WSI_TOKEN_OPTIONS_URI = 2,
    2621  WSI_TOKEN_HOST = 3,
    2622  WSI_TOKEN_CONNECTION = 4,
    2623  WSI_TOKEN_UPGRADE = 5,
    2624  WSI_TOKEN_ORIGIN = 6,
    2625  WSI_TOKEN_DRAFT = 7,
    2626  WSI_TOKEN_CHALLENGE = 8,
    2627  WSI_TOKEN_EXTENSIONS = 9,
    2628  WSI_TOKEN_KEY1 = 10,
    2629  WSI_TOKEN_KEY2 = 11,
    2630  WSI_TOKEN_PROTOCOL = 12,
    2631  WSI_TOKEN_ACCEPT = 13,
    2632  WSI_TOKEN_NONCE = 14,
    2633  WSI_TOKEN_HTTP = 15,
    2634  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2635  WSI_TOKEN_HTTP_ACCEPT = 17,
    2636  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2637  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2638  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2639  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2640  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2641  WSI_TOKEN_HTTP_PRAGMA = 23,
    2642  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2643  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2644  WSI_TOKEN_HTTP_COOKIE = 26,
    2645  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2646  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2647  WSI_TOKEN_HTTP_DATE = 29,
    2648  WSI_TOKEN_HTTP_RANGE = 30,
    2649  WSI_TOKEN_HTTP_REFERER = 31,
    2650  WSI_TOKEN_KEY = 32,
    2651  WSI_TOKEN_VERSION = 33,
    2652  WSI_TOKEN_SWORIGIN = 34,
    2653 
    2654  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2655  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2656  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2657  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2658  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2659 
    2660  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2661  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2662  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2663  WSI_TOKEN_HTTP_AGE = 43,
    2664  WSI_TOKEN_HTTP_ALLOW = 44,
    2665  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2666  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2667  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2668  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2669  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2670  WSI_TOKEN_HTTP_ETAG = 50,
    2671  WSI_TOKEN_HTTP_EXPECT = 51,
    2672  WSI_TOKEN_HTTP_EXPIRES = 52,
    2673  WSI_TOKEN_HTTP_FROM = 53,
    2674  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2675  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2676  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2677  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2678  WSI_TOKEN_HTTP_LINK = 58,
    2679  WSI_TOKEN_HTTP_LOCATION = 59,
    2680  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2681  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2682  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2683  WSI_TOKEN_HTTP_REFRESH = 63,
    2684  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2685  WSI_TOKEN_HTTP_SERVER = 65,
    2686  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2687  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2688  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2689  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2690  WSI_TOKEN_HTTP_VARY = 70,
    2691  WSI_TOKEN_HTTP_VIA = 71,
    2692  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2693 
    2694  WSI_TOKEN_PATCH_URI = 73,
    2695  WSI_TOKEN_PUT_URI = 74,
    2696  WSI_TOKEN_DELETE_URI = 75,
    2697 
    2698  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2699  WSI_TOKEN_PROXY = 77,
    2700  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2701  WSI_TOKEN_HTTP1_0 = 79,
    2702  WSI_TOKEN_X_FORWARDED_FOR = 80,
    2703 
    2704  /****** add new things just above ---^ ******/
    2705 
    2706  /* use token storage to stash these internally, not for
    2707  * user use */
    2708 
    2709  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2710  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2711  _WSI_TOKEN_CLIENT_URI,
    2712  _WSI_TOKEN_CLIENT_HOST,
    2713  _WSI_TOKEN_CLIENT_ORIGIN,
    2714  _WSI_TOKEN_CLIENT_METHOD,
    2715 
    2716  /* always last real token index*/
    2717  WSI_TOKEN_COUNT,
    2718 
    2719  /* parser state additions, no storage associated */
    2720  WSI_TOKEN_NAME_PART,
    2721  WSI_TOKEN_SKIPPING,
    2722  WSI_TOKEN_SKIPPING_SAW_CR,
    2723  WSI_PARSING_COMPLETE,
    2724  WSI_INIT_TOKEN_MUXURL,
    2725 };
    2726 
    2728  unsigned short token_limit[WSI_TOKEN_COUNT];
    2729 };
    2730 
    2736 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2737 lws_token_to_string(enum lws_token_indexes token);
    2738 
    2739 
    2748 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2749 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2750 
    2760 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2761 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2762 
    2776 LWS_VISIBLE LWS_EXTERN int
    2777 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2778 
    2796 LWS_VISIBLE LWS_EXTERN int
    2797 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2798  enum lws_token_indexes h, int frag_idx);
    2799 
    2810 LWS_VISIBLE LWS_EXTERN const char *
    2811 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2813 
    2828 
    2839 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2840 lws_add_http_header_status(struct lws *wsi,
    2841  unsigned int code, unsigned char **p,
    2842  unsigned char *end);
    2855 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2856 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2857  const unsigned char *value, int length,
    2858  unsigned char **p, unsigned char *end);
    2872 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2873 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2874  const unsigned char *value, int length,
    2875  unsigned char **p, unsigned char *end);
    2886 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2887 lws_add_http_header_content_length(struct lws *wsi,
    2888  unsigned long content_length,
    2889  unsigned char **p, unsigned char *end);
    2899 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2900 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2901  unsigned char *end);
    2903 
    2922 
    2932 };
    2933 
    2947 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2948  const char *filename, char *buf, int len,
    2949  enum lws_spa_fileupload_states state);
    2950 
    2953 struct lws_spa;
    2954 
    2973 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2974 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2975  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2976  void *opt_data);
    2977 
    2985 LWS_VISIBLE LWS_EXTERN int
    2986 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2987 
    2993 LWS_VISIBLE LWS_EXTERN int
    2994 lws_spa_finalize(struct lws_spa *spa);
    2995 
    3002 LWS_VISIBLE LWS_EXTERN int
    3003 lws_spa_get_length(struct lws_spa *spa, int n);
    3004 
    3010 LWS_VISIBLE LWS_EXTERN const char *
    3011 lws_spa_get_string(struct lws_spa *spa, int n);
    3012 
    3018 LWS_VISIBLE LWS_EXTERN int
    3019 lws_spa_destroy(struct lws_spa *spa);
    3021 
    3032 
    3043 LWS_VISIBLE LWS_EXTERN const char *
    3044 lws_urlencode(char *escaped, const char *string, int len);
    3045 
    3046 /*
    3047  * URLDECODE 1 / 2
    3048  *
    3049  * This simple urldecode only operates until the first '\0' and requires the
    3050  * data to exist all at once
    3051  */
    3064 LWS_VISIBLE LWS_EXTERN int
    3065 lws_urldecode(char *string, const char *escaped, int len);
    3067 
    3076 LWS_VISIBLE LWS_EXTERN int
    3077 lws_return_http_status(struct lws *wsi, unsigned int code,
    3078  const char *html_body);
    3079 
    3090 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3091 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    3092  unsigned char **p, unsigned char *end);
    3093 
    3102 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3103 lws_http_transaction_completed(struct lws *wsi);
    3105 
    3113 
    3124 LWS_VISIBLE LWS_EXTERN const char *
    3125 lws_sql_purify(char *escaped, const char *string, int len);
    3126 
    3137 LWS_VISIBLE LWS_EXTERN const char *
    3138 lws_json_purify(char *escaped, const char *string, int len);
    3140 
    3147 
    3149 #ifdef LWS_USE_LIBEV
    3150 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    3151 
    3152 LWS_VISIBLE LWS_EXTERN int
    3153 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    3154  lws_ev_signal_cb_t *cb);
    3155 
    3156 LWS_VISIBLE LWS_EXTERN int
    3157 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    3158 
    3159 LWS_VISIBLE LWS_EXTERN void
    3160 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    3161 #endif /* LWS_USE_LIBEV */
    3162 
    3164 
    3171 #ifdef LWS_USE_LIBUV
    3173 LWS_VISIBLE LWS_EXTERN int
    3174 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    3175  uv_signal_cb cb);
    3176 
    3177 LWS_VISIBLE LWS_EXTERN void
    3178 lws_libuv_run(const struct lws_context *context, int tsi);
    3179 
    3180 LWS_VISIBLE LWS_EXTERN void
    3181 lws_libuv_stop(struct lws_context *context);
    3182 
    3183 LWS_VISIBLE LWS_EXTERN void
    3184 lws_libuv_stop_without_kill(const struct lws_context *context, int tsi);
    3185 
    3186 LWS_VISIBLE LWS_EXTERN int
    3187 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    3188 
    3189 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    3190 lws_uv_getloop(struct lws_context *context, int tsi);
    3191 
    3192 LWS_VISIBLE LWS_EXTERN void
    3193 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    3194 #endif /* LWS_USE_LIBUV */
    3195 
    3202 
    3203 /*
    3204  * NOTE: These public enums are part of the abi. If you want to add one,
    3205  * add it at where specified so existing users are unaffected.
    3206  */
    3207 enum pending_timeout {
    3208  NO_PENDING_TIMEOUT = 0,
    3209  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    3210  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    3211  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    3212  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    3213  PENDING_TIMEOUT_AWAITING_PING = 5,
    3214  PENDING_TIMEOUT_CLOSE_ACK = 6,
    3215  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    3216  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    3217  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    3218  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    3219  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    3220  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    3221  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    3222  PENDING_TIMEOUT_CGI = 14,
    3223  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    3224  PENDING_TIMEOUT_WS_PONG_CHECK_SEND_PING = 16,
    3225  PENDING_TIMEOUT_WS_PONG_CHECK_GET_PONG = 17,
    3226  PENDING_TIMEOUT_CLIENT_ISSUE_PAYLOAD = 18,
    3227 
    3228  /****** add new things just above ---^ ******/
    3229 };
    3230 
    3240 LWS_VISIBLE LWS_EXTERN void
    3241 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    3243 
    3249 #if !defined(LWS_SIZEOFPTR)
    3250 #define LWS_SIZEOFPTR (sizeof (void *))
    3251 #endif
    3252 #if !defined(u_int64_t)
    3253 #define u_int64_t unsigned long long
    3254 #endif
    3255 
    3256 #if defined(__x86_64__)
    3257 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    3258 #else
    3259 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    3260 #endif
    3261 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    3262  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    3263 #define LWS_PRE _LWS_PAD(4 + 10)
    3264 /* used prior to 1.7 and retained for backward compatibility */
    3265 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    3266 #define LWS_SEND_BUFFER_POST_PADDING 0
    3267 
    3268 /*
    3269  * NOTE: These public enums are part of the abi. If you want to add one,
    3270  * add it at where specified so existing users are unaffected.
    3271  */
    3286  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    3287  LWS_WRITE_PING = 5,
    3288  LWS_WRITE_PONG = 6,
    3289 
    3290  /* Same as write_http but we know this write ends the transaction */
    3291  LWS_WRITE_HTTP_FINAL = 7,
    3292 
    3293  /* HTTP2 */
    3294 
    3302  /****** add new things just above ---^ ******/
    3303 
    3304  /* flags */
    3305 
    3313 };
    3314 
    3315 
    3402 LWS_VISIBLE LWS_EXTERN int
    3403 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3404  enum lws_write_protocol protocol);
    3405 
    3406 /* helper for case where buffer may be const */
    3407 #define lws_write_http(wsi, buf, len) \
    3408  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3409 
    3429 
    3442 LWS_VISIBLE LWS_EXTERN int
    3443 lws_callback_on_writable(struct lws *wsi);
    3444 
    3458 LWS_VISIBLE LWS_EXTERN int
    3459 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3460  const struct lws_protocols *protocol);
    3461 
    3475 LWS_VISIBLE LWS_EXTERN int
    3476 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3477  const struct lws_protocols *protocol);
    3478 
    3491 LWS_VISIBLE LWS_EXTERN int
    3492 lws_callback_all_protocol(struct lws_context *context,
    3493  const struct lws_protocols *protocol, int reason);
    3494 
    3507 LWS_VISIBLE LWS_EXTERN int
    3508 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3509  const struct lws_protocols *protocol, int reason);
    3510 
    3524 LWS_VISIBLE LWS_EXTERN int
    3525 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3526 
    3527 LWS_VISIBLE LWS_EXTERN int
    3528 lws_callback_http_dummy(struct lws *wsi, enum lws_callback_reasons reason,
    3529  void *user, void *in, size_t len);
    3530 
    3538 LWS_VISIBLE LWS_EXTERN int
    3539 lws_get_socket_fd(struct lws *wsi);
    3540 
    3562 LWS_VISIBLE LWS_EXTERN size_t
    3563 lws_get_peer_write_allowance(struct lws *wsi);
    3565 
    3576 LWS_VISIBLE LWS_EXTERN int
    3577 lws_rx_flow_control(struct lws *wsi, int enable);
    3578 
    3588 LWS_VISIBLE LWS_EXTERN void
    3589 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3590  const struct lws_protocols *protocol);
    3591 
    3608 LWS_VISIBLE LWS_EXTERN size_t
    3609 lws_remaining_packet_payload(struct lws *wsi);
    3610 
    3611 
    3620 
    3634 LWS_VISIBLE LWS_EXTERN struct lws *
    3635 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3648 LWS_VISIBLE LWS_EXTERN struct lws *
    3649 lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd);
    3673 LWS_VISIBLE LWS_EXTERN struct lws *
    3674 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3675  const char *readbuf, size_t len);
    3699 LWS_VISIBLE LWS_EXTERN struct lws *
    3700 lws_adopt_socket_vhost_readbuf(struct lws_vhost *vhost, lws_sockfd_type accept_fd,
    3701  const char *readbuf, size_t len);
    3703 
    3709 
    3720 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3721 lws_canonical_hostname(struct lws_context *context);
    3722 
    3737 LWS_VISIBLE LWS_EXTERN void
    3738 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3739  int name_len, char *rip, int rip_len);
    3740 
    3751 LWS_VISIBLE LWS_EXTERN const char *
    3752 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3753 #ifndef LWS_WITH_ESP8266
    3754 
    3765 LWS_VISIBLE LWS_EXTERN int
    3766 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3767  size_t addrlen);
    3769 #endif
    3770 
    3776 
    3789 LWS_VISIBLE LWS_EXTERN int
    3790 lws_snprintf(char *str, size_t size, const char *format, ...);
    3791 
    3803 LWS_VISIBLE LWS_EXTERN int
    3804 lws_get_random(struct lws_context *context, void *buf, int len);
    3812 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3813 lws_daemonize(const char *_lock_path);
    3819 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3821 
    3828 LWS_VISIBLE LWS_EXTERN void *
    3829 lws_wsi_user(struct lws *wsi);
    3830 
    3842 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3843 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3844  const char **path);
    3845 
    3849 LWS_VISIBLE LWS_EXTERN unsigned long
    3850 lws_now_secs(void);
    3851 
    3861 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3862 lws_get_context(const struct lws *wsi);
    3863 
    3873 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3874 lws_get_count_threads(struct lws_context *context);
    3875 
    3883 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3884 lws_get_parent(const struct lws *wsi);
    3885 
    3892 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3893 lws_get_child(const struct lws *wsi);
    3894 
    3895 
    3896 /*
    3897  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3898  * It's provided in case it is
    3899  * useful when integrating with other app poll loop service code.
    3900  */
    3901 LWS_VISIBLE LWS_EXTERN int
    3902 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3903 
    3911 LWS_VISIBLE LWS_EXTERN void
    3912 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3914 
    3920 
    3927 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3928 lws_send_pipe_choked(struct lws *wsi);
    3929 
    3934 LWS_VISIBLE LWS_EXTERN int
    3935 lws_is_final_fragment(struct lws *wsi);
    3936 
    3941 LWS_VISIBLE LWS_EXTERN unsigned char
    3942 lws_get_reserved_bits(struct lws *wsi);
    3943 
    3960 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3961 lws_partial_buffered(struct lws *wsi);
    3962 
    3972 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3973 lws_frame_is_binary(struct lws *wsi);
    3974 
    3983 LWS_VISIBLE LWS_EXTERN int
    3984 lws_is_ssl(struct lws *wsi);
    3989 LWS_VISIBLE LWS_EXTERN int
    3990 lws_is_cgi(struct lws *wsi);
    3991 
    3992 #ifdef LWS_OPENSSL_SUPPORT
    3993 
    3999 LWS_VISIBLE LWS_EXTERN SSL*
    4000 lws_get_ssl(struct lws *wsi);
    4001 #endif
    4002 
    4004 
    4010 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    4012 #define lws_SHA1 SHA1
    4013 #else
    4014 
    4023 LWS_VISIBLE LWS_EXTERN unsigned char *
    4024 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    4025 #endif
    4026 
    4036 LWS_VISIBLE LWS_EXTERN int
    4037 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    4047 LWS_VISIBLE LWS_EXTERN int
    4048 lws_b64_decode_string(const char *in, char *out, int out_size);
    4050 
    4051 
    4061 #ifdef LWS_WITH_CGI
    4062 enum lws_enum_stdinouterr {
    4063  LWS_STDIN = 0,
    4064  LWS_STDOUT = 1,
    4065  LWS_STDERR = 2,
    4066 };
    4067 
    4068 enum lws_cgi_hdr_state {
    4069  LCHS_HEADER,
    4070  LCHS_CR1,
    4071  LCHS_LF1,
    4072  LCHS_CR2,
    4073  LCHS_LF2,
    4074  LHCS_PAYLOAD,
    4075  LCHS_SINGLE_0A,
    4076 };
    4077 
    4079  struct lws **stdwsi;
    4080  enum lws_enum_stdinouterr ch;
    4081  unsigned char *data;
    4082  enum lws_cgi_hdr_state hdr_state;
    4083  int len;
    4084 };
    4085 
    4086 
    4096 LWS_VISIBLE LWS_EXTERN int
    4097 lws_cgi(struct lws *wsi, const char * const *exec_array,
    4098  int script_uri_path_len, int timeout_secs,
    4099  const struct lws_protocol_vhost_options *mp_cgienv);
    4100 
    4106 LWS_VISIBLE LWS_EXTERN int
    4107 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    4108 
    4114 LWS_VISIBLE LWS_EXTERN int
    4115 lws_cgi_kill(struct lws *wsi);
    4116 #endif
    4117 
    4119 
    4136 
    4143  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    4144  unsigned long *filelen, int flags);
    4148  int (*close)(struct lws *wsi, lws_filefd_type fd);
    4150  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    4151  long offset_from_cur_pos);
    4153  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4154  unsigned char *buf, unsigned long len);
    4156  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4157  unsigned char *buf, unsigned long len);
    4160  /* Add new things just above here ---^
    4161  * This is part of the ABI, don't needlessly break compatibility */
    4162 };
    4163 
    4169 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    4170 lws_get_fops(struct lws_context *context);
    4171 
    4180 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    4181 lws_plat_file_open(struct lws *wsi, const char *filename,
    4182  unsigned long *filelen, int flags)
    4183 {
    4184  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    4185  filelen, flags);
    4186 }
    4187 
    4194 static LWS_INLINE int
    4195 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    4196 {
    4197  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    4198 }
    4199 
    4207 static LWS_INLINE unsigned long
    4208 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    4209 {
    4210  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    4211 }
    4221 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4222 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4223  unsigned char *buf, unsigned long len)
    4224 {
    4225  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    4226  len);
    4227 }
    4237 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    4238 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    4239  unsigned char *buf, unsigned long len)
    4240 {
    4241  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    4242  len);
    4243 }
    4245 
    4277 #ifdef LWS_WITH_SMTP
    4278 
    4290 };
    4291 
    4293 struct lws_email {
    4294  void *data;
    4296  uv_loop_t *loop;
    4299  char email_smtp_ip[32];
    4300  char email_helo[32];
    4301  char email_from[100];
    4302  char email_to[100];
    4304  unsigned int max_content_size;
    4307  /* Fill all the callbacks before init */
    4308 
    4309  int (*on_next)(struct lws_email *email);
    4314  int (*on_sent)(struct lws_email *email);
    4319  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    4325  /* private things */
    4326  uv_timer_t timeout_email;
    4328  uv_connect_t email_connect_req;
    4329  uv_tcp_t email_client;
    4331  char email_buf[256];
    4332  char *content;
    4333 };
    4334 
    4344 LWS_VISIBLE LWS_EXTERN int
    4345 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    4346 
    4355 LWS_VISIBLE LWS_EXTERN void
    4356 lws_email_check(struct lws_email *email);
    4364 LWS_VISIBLE LWS_EXTERN void
    4365 lws_email_destroy(struct lws_email *email);
    4366 
    4367 #endif
    4368 
    4369 
    4370 #ifdef __cplusplus
    4371 }
    4372 #endif
    4373 
    4374 #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:4076
    -
    size_t rx_buffer_size
    Definition: libwebsockets.h:1327
    +
    Definition: libwebsockets.h:4078
    +
    size_t rx_buffer_size
    Definition: libwebsockets.h:1329
    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:773
    -
    Definition: libwebsockets.h:901
    +
    Definition: libwebsockets.h:775
    +
    Definition: libwebsockets.h:903
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
    -
    Definition: libwebsockets.h:2006
    -
    Definition: libwebsockets.h:3281
    -
    Definition: libwebsockets.h:4281
    +
    Definition: libwebsockets.h:2008
    +
    Definition: libwebsockets.h:3283
    +
    Definition: libwebsockets.h:4283
    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:238
    -
    unsigned int auth_mask
    Definition: libwebsockets.h:2041
    -
    Definition: libwebsockets.h:3304
    -
    void * data
    Definition: libwebsockets.h:4292
    -
    const char * uri_replace_from
    Definition: libwebsockets.h:2119
    -
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4154
    -
    lws_callback_reasons
    Definition: libwebsockets.h:666
    +
    unsigned int auth_mask
    Definition: libwebsockets.h:2043
    +
    Definition: libwebsockets.h:3306
    +
    void * data
    Definition: libwebsockets.h:4294
    +
    const char * uri_replace_from
    Definition: libwebsockets.h:2121
    +
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4156
    +
    lws_callback_reasons
    Definition: libwebsockets.h:668
    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:1472
    + +
    lwsgs_auth_bits
    Definition: libwebsockets.h:1474
    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:899
    -
    Definition: libwebsockets.h:1131
    -
    unsigned int id
    Definition: libwebsockets.h:1336
    +
    Definition: libwebsockets.h:901
    +
    Definition: libwebsockets.h:1133
    +
    unsigned int id
    Definition: libwebsockets.h:1338
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h)
    -
    Definition: libwebsockets.h:1129
    -
    Definition: libwebsockets.h:804
    +
    Definition: libwebsockets.h:1131
    +
    Definition: libwebsockets.h:806
    LWS_VISIBLE LWS_EXTERN int lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd, int tsi)
    LWS_VISIBLE LWS_EXTERN int lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, 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)
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd)
    -
    Definition: libwebsockets.h:750
    +
    Definition: libwebsockets.h:752
    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:4312
    -
    Definition: libwebsockets.h:1467
    -
    struct lws ** pwsi
    Definition: libwebsockets.h:2126
    -
    Definition: libwebsockets.h:784
    -
    const char * path
    Definition: libwebsockets.h:2098
    +
    int(* on_sent)(struct lws_email *email)
    Definition: libwebsockets.h:4314
    +
    Definition: libwebsockets.h:1469
    +
    struct lws ** pwsi
    Definition: libwebsockets.h:2128
    +
    Definition: libwebsockets.h:786
    +
    const char * path
    Definition: libwebsockets.h:2100
    LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)
    -
    Definition: libwebsockets.h:585
    -
    Definition: libwebsockets.h:1423
    +
    Definition: libwebsockets.h:587
    +
    Definition: libwebsockets.h:1425
    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:4328
    -
    lws_close_status
    Definition: libwebsockets.h:556
    +
    time_t email_connect_started
    Definition: libwebsockets.h:4330
    +
    lws_close_status
    Definition: libwebsockets.h:558
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
    -
    Definition: libwebsockets.h:596
    - -
    int token_len
    Definition: libwebsockets.h:2606
    -
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1715
    -
    Definition: libwebsockets.h:925
    +
    Definition: libwebsockets.h:598
    + +
    int token_len
    Definition: libwebsockets.h:2608
    +
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1717
    +
    Definition: libwebsockets.h:927
    LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
    -
    const char * value
    Definition: libwebsockets.h:1995
    -
    Definition: libwebsockets.h:2926
    -
    Definition: libwebsockets.h:4286
    -
    const char * username
    Definition: libwebsockets.h:1498
    +
    const char * value
    Definition: libwebsockets.h:1997
    +
    Definition: libwebsockets.h:2928
    +
    Definition: libwebsockets.h:4288
    +
    const char * username
    Definition: libwebsockets.h:1500
    LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
    -
    const char * protocol
    Definition: libwebsockets.h:2025
    -
    struct lws ** stdwsi
    Definition: libwebsockets.h:4077
    +
    const char * protocol
    Definition: libwebsockets.h:2027
    +
    struct lws ** stdwsi
    Definition: libwebsockets.h:4079
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
    -
    Definition: libwebsockets.h:871
    +
    Definition: libwebsockets.h:873
    LWS_VISIBLE LWS_EXTERN const char * lws_get_mimetype(const char *file, const struct lws_http_mount *m)
    -
    Definition: libwebsockets.h:1469
    -
    int cache_max_age
    Definition: libwebsockets.h:2039
    -
    long ssl_options_clear
    Definition: libwebsockets.h:1733
    -
    Definition: libwebsockets.h:764
    -
    Definition: libwebsockets.h:1601
    +
    Definition: libwebsockets.h:1471
    +
    int cache_max_age
    Definition: libwebsockets.h:2041
    +
    long ssl_options_clear
    Definition: libwebsockets.h:1735
    +
    Definition: libwebsockets.h:766
    +
    Definition: libwebsockets.h:1603
    LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
    -
    Definition: libwebsockets.h:612
    -
    char * start
    Definition: libwebsockets.h:2545
    +
    Definition: libwebsockets.h:614
    +
    char * start
    Definition: libwebsockets.h:2547
    LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))
    -
    lws_callback_function * callback
    Definition: libwebsockets.h:1318
    -
    Definition: libwebsockets.h:3271
    +
    lws_callback_function * callback
    Definition: libwebsockets.h:1320
    +
    Definition: libwebsockets.h:3273
    LWS_VISIBLE LWS_EXTERN void lws_context_deprecate(struct lws_context *context, lws_reload_func cb)
    LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
    -
    Definition: libwebsockets.h:962
    - -
    const char * protocol
    Definition: libwebsockets.h:2104
    -
    Definition: libwebsockets.h:951
    -
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1720
    +
    Definition: libwebsockets.h:964
    + +
    const char * protocol
    Definition: libwebsockets.h:2106
    +
    Definition: libwebsockets.h:953
    +
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1722
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
    -
    int len
    Definition: libwebsockets.h:2537
    -
    int ka_time
    Definition: libwebsockets.h:1656
    -
    Definition: libwebsockets.h:1543
    +
    int len
    Definition: libwebsockets.h:2539
    +
    int ka_time
    Definition: libwebsockets.h:1658
    +
    Definition: libwebsockets.h:1545
    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:1735
    -
    int count_extensions
    Definition: libwebsockets.h:1428
    -
    Definition: libwebsockets.h:3275
    -
    int port
    Definition: libwebsockets.h:2094
    -
    struct lws_context * context
    Definition: libwebsockets.h:2090
    -
    Definition: libwebsockets.h:1475
    -
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:2106
    +
    unsigned short ws_ping_pong_interval
    Definition: libwebsockets.h:1737
    +
    int count_extensions
    Definition: libwebsockets.h:1430
    +
    Definition: libwebsockets.h:3277
    +
    int port
    Definition: libwebsockets.h:2096
    +
    struct lws_context * context
    Definition: libwebsockets.h:2092
    +
    Definition: libwebsockets.h:1477
    +
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:2108
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
    -
    Definition: libwebsockets.h:4279
    -
    Definition: libwebsockets.h:1991
    +
    Definition: libwebsockets.h:4281
    +
    Definition: libwebsockets.h:1993
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
    -
    const char *const * vars
    Definition: libwebsockets.h:2549
    +
    const char *const * vars
    Definition: libwebsockets.h:2551
    LWS_VISIBLE LWS_EXTERN SSL * lws_get_ssl(struct lws *wsi)
    -
    Definition: libwebsockets.h:564
    -
    Definition: libwebsockets.h:2089
    -
    Definition: libwebsockets.h:1573
    -
    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:1218
    - -
    int len
    Definition: libwebsockets.h:1154
    -
    Definition: libwebsockets.h:2016
    -
    const char * def
    Definition: libwebsockets.h:2023
    -
    Definition: libwebsockets.h:725
    -
    Definition: libwebsockets.h:1555
    -
    lws_context_options
    Definition: libwebsockets.h:1526
    -
    Definition: libwebsockets.h:903
    -
    Definition: libwebsockets.h:1492
    -
    Definition: libwebsockets.h:1561
    -
    Definition: libwebsockets.h:891
    -
    const char * option_name
    Definition: libwebsockets.h:1151
    -
    Definition: libwebsockets.h:2004
    -
    lws_sockfd_type fd
    Definition: libwebsockets.h:534
    +
    Definition: libwebsockets.h:566
    +
    Definition: libwebsockets.h:2091
    +
    Definition: libwebsockets.h:1575
    +
    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:1220
    + +
    int len
    Definition: libwebsockets.h:1156
    +
    Definition: libwebsockets.h:2018
    +
    const char * def
    Definition: libwebsockets.h:2025
    +
    Definition: libwebsockets.h:727
    +
    Definition: libwebsockets.h:1557
    +
    lws_context_options
    Definition: libwebsockets.h:1528
    +
    Definition: libwebsockets.h:905
    +
    Definition: libwebsockets.h:1494
    +
    Definition: libwebsockets.h:1563
    +
    Definition: libwebsockets.h:893
    +
    const char * option_name
    Definition: libwebsockets.h:1153
    +
    Definition: libwebsockets.h:2006
    +
    lws_sockfd_type fd
    Definition: libwebsockets.h:536
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len, int hide_vhosts)
    -
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1624
    -
    short events
    Definition: libwebsockets.h:436
    -
    Definition: libwebsockets.h:1436
    -
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1427
    -
    const struct lws_http_mount * mount_next
    Definition: libwebsockets.h:2017
    +
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1626
    +
    short events
    Definition: libwebsockets.h:438
    +
    Definition: libwebsockets.h:1438
    +
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1429
    +
    const struct lws_http_mount * mount_next
    Definition: libwebsockets.h:2019
    LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
    -
    void * userdata
    Definition: libwebsockets.h:2108
    -
    Definition: libwebsockets.h:722
    -
    Definition: libwebsockets.h:909
    +
    void * userdata
    Definition: libwebsockets.h:2110
    +
    Definition: libwebsockets.h:724
    +
    Definition: libwebsockets.h:911
    LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
    -
    unsigned char * data
    Definition: libwebsockets.h:4079
    -
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:2032
    +
    unsigned char * data
    Definition: libwebsockets.h:4081
    +
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:2034
    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:715
    +
    Definition: libwebsockets.h:717
    LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)
    -
    Definition: libwebsockets.h:796
    -
    uv_loop_t * loop
    Definition: libwebsockets.h:4294
    -
    Definition: libwebsockets.h:894
    +
    Definition: libwebsockets.h:798
    +
    uv_loop_t * loop
    Definition: libwebsockets.h:4296
    +
    Definition: libwebsockets.h:896
    Definition: libwebsockets.h:72
    -
    Definition: libwebsockets.h:3307
    -
    int pos
    Definition: libwebsockets.h:2547
    -
    struct lws_plugin * list
    Definition: libwebsockets.h:1437
    +
    Definition: libwebsockets.h:3309
    +
    int pos
    Definition: libwebsockets.h:2549
    +
    struct lws_plugin * list
    Definition: libwebsockets.h:1439
    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:1676
    +
    short max_http_header_data
    Definition: libwebsockets.h:1678
    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:1673
    +
    void * provided_client_ssl_ctx
    Definition: libwebsockets.h:1675
    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:1425
    -
    Definition: libwebsockets.h:1130
    -
    int ka_probes
    Definition: libwebsockets.h:1659
    +
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1427
    +
    Definition: libwebsockets.h:1132
    +
    int ka_probes
    Definition: libwebsockets.h:1661
    void onError(Socket *s, socket_error_t err)
    -
    const char * origin
    Definition: libwebsockets.h:2102
    -
    SHORT revents
    Definition: libwebsockets.h:422
    -
    const char * method
    Definition: libwebsockets.h:2112
    +
    const char * origin
    Definition: libwebsockets.h:2104
    +
    SHORT revents
    Definition: libwebsockets.h:424
    +
    const char * method
    Definition: libwebsockets.h:2114
    LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)
    -
    Definition: libwebsockets.h:1224
    +
    Definition: libwebsockets.h:1226
    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:931
    -
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:2110
    -
    unsigned char origin_protocol
    Definition: libwebsockets.h:2048
    -
    const char * log_filepath
    Definition: libwebsockets.h:1712
    -
    Definition: libwebsockets.h:771
    -
    unsigned int max_content_size
    Definition: libwebsockets.h:4302
    -
    int option_index
    Definition: libwebsockets.h:1152
    +
    Definition: libwebsockets.h:933
    +
    unsigned char origin_protocol
    Definition: libwebsockets.h:2050
    +
    const char * log_filepath
    Definition: libwebsockets.h:1714
    +
    Definition: libwebsockets.h:773
    +
    unsigned int max_content_size
    Definition: libwebsockets.h:4304
    +
    int option_index
    Definition: libwebsockets.h:1154
    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:767
    -
    const char * uri_replace_to
    Definition: libwebsockets.h:2122
    -
    struct lws * parent_wsi
    Definition: libwebsockets.h:2115
    +
    Definition: libwebsockets.h:769
    +
    const char * uri_replace_to
    Definition: libwebsockets.h:2124
    +
    struct lws * parent_wsi
    Definition: libwebsockets.h:2117
    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:4325
    +
    enum lwsgs_smtp_states estate
    Definition: libwebsockets.h:4327
    LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)
    -
    Definition: libwebsockets.h:667
    +
    Definition: libwebsockets.h:669
    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:1703
    -
    char name[64]
    Definition: libwebsockets.h:1443
    +
    const char *const * plugin_dirs
    Definition: libwebsockets.h:1705
    +
    char name[64]
    Definition: libwebsockets.h:1445
    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:4329
    +
    char email_buf[256]
    Definition: libwebsockets.h:4331
    LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)
    -
    Definition: libwebsockets.h:1532
    -
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:4146
    -
    uv_lib_t lib
    Definition: libwebsockets.h:1439
    +
    Definition: libwebsockets.h:1534
    +
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:4148
    +
    uv_lib_t lib
    Definition: libwebsockets.h:1441
    x509_crt certificate
    Definition: libwebsockets.h:240
    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:4280
    +
    Definition: libwebsockets.h:4282
    LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
    -
    int ssl_connection
    Definition: libwebsockets.h:2096
    -
    Definition: libwebsockets.h:1491
    -
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1667
    +
    int ssl_connection
    Definition: libwebsockets.h:2098
    +
    Definition: libwebsockets.h:1493
    +
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1669
    LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
    -
    Definition: libwebsockets.h:2535
    +
    Definition: libwebsockets.h:2537
    LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)
    -
    Definition: libwebsockets.h:533
    -
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:2028
    -
    const char * name
    Definition: libwebsockets.h:1994
    -
    unsigned char mountpoint_len
    Definition: libwebsockets.h:2049
    -
    Definition: libwebsockets.h:3278
    -
    Definition: libwebsockets.h:1550
    -
    lws_sockfd_type fd
    Definition: libwebsockets.h:420
    -
    Definition: libwebsockets.h:2005
    +
    Definition: libwebsockets.h:535
    +
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:2030
    +
    const char * name
    Definition: libwebsockets.h:1996
    +
    unsigned char mountpoint_len
    Definition: libwebsockets.h:2051
    +
    Definition: libwebsockets.h:3280
    +
    Definition: libwebsockets.h:1552
    +
    lws_sockfd_type fd
    Definition: libwebsockets.h:422
    +
    Definition: libwebsockets.h:2007
    LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)
    -
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1618
    -
    Definition: libwebsockets.h:1534
    +
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1620
    +
    Definition: libwebsockets.h:1536
    LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot, int size)
    -
    Definition: libwebsockets.h:1539
    -
    lws_ext_options_types
    Definition: libwebsockets.h:1128
    -
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1614
    +
    Definition: libwebsockets.h:1541
    +
    lws_ext_options_types
    Definition: libwebsockets.h:1130
    +
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1616
    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:1153
    -
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1638
    +
    const char * start
    Definition: libwebsockets.h:1155
    +
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1640
    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:2019
    -
    const char * http_proxy_address
    Definition: libwebsockets.h:1642
    - +
    const char * mountpoint
    Definition: libwebsockets.h:2021
    +
    const char * http_proxy_address
    Definition: libwebsockets.h:1644
    +
    rsa_context key
    Definition: libwebsockets.h:241
    -
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1626
    -
    const char * ecdh_curve
    Definition: libwebsockets.h:1697
    -
    int cgi_timeout
    Definition: libwebsockets.h:2037
    -
    Definition: libwebsockets.h:2007
    -
    Definition: libwebsockets.h:1476
    -
    Definition: libwebsockets.h:434
    -
    Definition: libwebsockets.h:590
    +
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1628
    +
    const char * ecdh_curve
    Definition: libwebsockets.h:1699
    +
    int cgi_timeout
    Definition: libwebsockets.h:2039
    +
    Definition: libwebsockets.h:2009
    +
    Definition: libwebsockets.h:1478
    +
    Definition: libwebsockets.h:436
    +
    Definition: libwebsockets.h:592
    LWS_VISIBLE LWS_EXTERN unsigned char lws_get_reserved_bits(struct lws *wsi)
    LWS_VISIBLE LWS_EXTERN unsigned char * lws_SHA1(const unsigned char *d, size_t n, unsigned char *md)
    LWS_VISIBLE LWS_EXTERN const unsigned char * lws_token_to_string(enum lws_token_indexes token)
    LWS_VISIBLE LWS_EXTERN int lws_set_extension_option(struct lws *wsi, const char *ext_name, const char *opt_name, const char *opt_val)
    -
    Definition: libwebsockets.h:735
    +
    Definition: libwebsockets.h:737
    LWS_VISIBLE LWS_EXTERN int lws_cgi(struct lws *wsi, const char *const *exec_array, int script_uri_path_len, int timeout_secs, const struct lws_protocol_vhost_options *mp_cgienv)
    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:769
    +
    Definition: libwebsockets.h:771
    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:1559
    +
    Definition: libwebsockets.h:1561
    LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)
    -
    Definition: libwebsockets.h:1007
    -
    Definition: libwebsockets.h:1571
    -
    uv_timer_t timeout_email
    Definition: libwebsockets.h:4324
    -
    Definition: libwebsockets.h:1541
    -
    short max_http_header_pool
    Definition: libwebsockets.h:1679
    +
    Definition: libwebsockets.h:1009
    +
    Definition: libwebsockets.h:1573
    +
    uv_timer_t timeout_email
    Definition: libwebsockets.h:4326
    +
    Definition: libwebsockets.h:1543
    +
    short max_http_header_pool
    Definition: libwebsockets.h:1681
    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:2536
    +
    char * p
    Definition: libwebsockets.h:2538
    x509_crt ca
    Definition: libwebsockets.h:239
    -
    size_t per_session_data_size
    Definition: libwebsockets.h:1322
    -
    Definition: libwebsockets.h:574
    -
    const struct lws_protocol_vhost_options * reject_service_keywords
    Definition: libwebsockets.h:1751
    -
    lwsgs_smtp_states
    Definition: libwebsockets.h:4278
    -
    Definition: libwebsockets.h:1553
    -
    Definition: libwebsockets.h:847
    +
    size_t per_session_data_size
    Definition: libwebsockets.h:1324
    +
    Definition: libwebsockets.h:576
    +
    const struct lws_protocol_vhost_options * reject_service_keywords
    Definition: libwebsockets.h:1753
    +
    lwsgs_smtp_states
    Definition: libwebsockets.h:4280
    +
    Definition: libwebsockets.h:1555
    +
    Definition: libwebsockets.h:849
    LWS_VISIBLE LWS_EXTERN int lws_snprintf(char *str, size_t size, const char *format,...)
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost_readbuf(struct lws_vhost *vhost, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
    -
    Definition: libwebsockets.h:733
    -
    Definition: libwebsockets.h:1314
    -
    Definition: libwebsockets.h:579
    +
    Definition: libwebsockets.h:735
    +
    Definition: libwebsockets.h:1316
    +
    Definition: libwebsockets.h:581
    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:1686
    -
    const char * email
    Definition: libwebsockets.h:1499
    +
    unsigned int count_threads
    Definition: libwebsockets.h:1688
    +
    const char * email
    Definition: libwebsockets.h:1501
    LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)
    -
    Definition: libwebsockets.h:561
    -
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:4326
    -
    const char * server_string
    Definition: libwebsockets.h:1717
    -
    Definition: libwebsockets.h:1564
    -
    SHORT events
    Definition: libwebsockets.h:421
    -
    Definition: libwebsockets.h:738
    -
    Definition: libwebsockets.h:1548
    -
    const char * vhost_name
    Definition: libwebsockets.h:1699
    -
    Definition: libwebsockets.h:2008
    +
    Definition: libwebsockets.h:563
    +
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:4328
    +
    const char * server_string
    Definition: libwebsockets.h:1719
    +
    Definition: libwebsockets.h:1566
    +
    SHORT events
    Definition: libwebsockets.h:423
    +
    Definition: libwebsockets.h:740
    +
    Definition: libwebsockets.h:1550
    +
    const char * vhost_name
    Definition: libwebsockets.h:1701
    +
    Definition: libwebsockets.h:2010
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_get_protocol(struct lws *wsi)
    -
    Definition: libwebsockets.h:1474
    -
    Definition: libwebsockets.h:1496
    -
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1688
    +
    Definition: libwebsockets.h:1476
    +
    Definition: libwebsockets.h:1498
    +
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1690
    LWS_VISIBLE LWS_EXTERN int lws_cgi_write_split_stdout_headers(struct lws *wsi)
    -
    lws_gs_event
    Definition: libwebsockets.h:1490
    +
    lws_gs_event
    Definition: libwebsockets.h:1492
    LWS_VISIBLE LWS_EXTERN int lws_finalize_startup(struct lws_context *context)
    -
    int ka_interval
    Definition: libwebsockets.h:1663
    -
    Definition: libwebsockets.h:1473
    -
    int uid
    Definition: libwebsockets.h:1649
    -
    Definition: libwebsockets.h:2928
    +
    int ka_interval
    Definition: libwebsockets.h:1665
    +
    Definition: libwebsockets.h:1475
    +
    int uid
    Definition: libwebsockets.h:1651
    +
    Definition: libwebsockets.h:2930
    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:1315
    +
    const char * name
    Definition: libwebsockets.h:1317
    LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
    -
    Definition: libwebsockets.h:4284
    -
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1645
    +
    Definition: libwebsockets.h:4286
    +
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1647
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
    -
    unsigned int timeout_secs
    Definition: libwebsockets.h:1692
    -
    int port
    Definition: libwebsockets.h:1602
    +
    unsigned int timeout_secs
    Definition: libwebsockets.h:1694
    +
    int port
    Definition: libwebsockets.h:1604
    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:1651
    +
    unsigned int options
    Definition: libwebsockets.h:1653
    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:1993
    -
    int prev_events
    Definition: libwebsockets.h:536
    -
    int keepalive_timeout
    Definition: libwebsockets.h:1709
    -
    Definition: libwebsockets.h:1480
    -
    Definition: libwebsockets.h:1141
    -
    const struct lws_protocol_vhost_options * headers
    Definition: libwebsockets.h:1747
    -
    Definition: libwebsockets.h:2725
    +
    const struct lws_protocol_vhost_options * options
    Definition: libwebsockets.h:1995
    +
    int prev_events
    Definition: libwebsockets.h:538
    +
    int keepalive_timeout
    Definition: libwebsockets.h:1711
    +
    Definition: libwebsockets.h:1482
    +
    Definition: libwebsockets.h:1143
    +
    const struct lws_protocol_vhost_options * headers
    Definition: libwebsockets.h:1749
    +
    Definition: libwebsockets.h:2727
    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:1706
    -
    const char * basic_auth_login_file
    Definition: libwebsockets.h:2051
    -
    const char * host
    Definition: libwebsockets.h:2100
    -
    Definition: libwebsockets.h:1150
    -
    Definition: libwebsockets.h:600
    +
    const struct lws_protocol_vhost_options * pvo
    Definition: libwebsockets.h:1708
    +
    const char * basic_auth_login_file
    Definition: libwebsockets.h:2053
    +
    const char * host
    Definition: libwebsockets.h:2102
    +
    Definition: libwebsockets.h:1152
    +
    Definition: libwebsockets.h:602
    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:4081
    +
    int len
    Definition: libwebsockets.h:4083
    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:1607
    -
    Definition: libwebsockets.h:4140
    +
    const char * iface
    Definition: libwebsockets.h:1609
    +
    Definition: libwebsockets.h:4142
    LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
    -
    Definition: libwebsockets.h:1012
    -
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2923
    +
    Definition: libwebsockets.h:1014
    +
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2925
    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:558
    -
    Definition: libwebsockets.h:567
    + +
    Definition: libwebsockets.h:560
    +
    Definition: libwebsockets.h:569
    LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
    -
    uv_tcp_t email_client
    Definition: libwebsockets.h:4327
    -
    Definition: libwebsockets.h:419
    -
    Definition: libwebsockets.h:671
    -
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:4141
    -
    lws_write_protocol
    Definition: libwebsockets.h:3270
    -
    const char * client_offer
    Definition: libwebsockets.h:1227
    -
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4151
    +
    uv_tcp_t email_client
    Definition: libwebsockets.h:4329
    +
    Definition: libwebsockets.h:421
    +
    Definition: libwebsockets.h:673
    +
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:4143
    +
    lws_write_protocol
    Definition: libwebsockets.h:3272
    +
    const char * client_offer
    Definition: libwebsockets.h:1229
    +
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:4153
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
    -
    Definition: libwebsockets.h:2924
    -
    Definition: libwebsockets.h:572
    -
    const char * origin
    Definition: libwebsockets.h:2021
    -
    const char * name
    Definition: libwebsockets.h:1142
    +
    Definition: libwebsockets.h:2926
    +
    Definition: libwebsockets.h:574
    +
    const char * origin
    Definition: libwebsockets.h:2023
    +
    const char * name
    Definition: libwebsockets.h:1144
    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:748
    -
    const char * name
    Definition: libwebsockets.h:1225
    -
    Definition: libwebsockets.h:4283
    -
    short revents
    Definition: libwebsockets.h:437
    -
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1226
    -
    long ssl_options_set
    Definition: libwebsockets.h:1731
    -
    Definition: libwebsockets.h:1054
    +
    Definition: libwebsockets.h:750
    +
    const char * name
    Definition: libwebsockets.h:1227
    +
    Definition: libwebsockets.h:4285
    +
    short revents
    Definition: libwebsockets.h:439
    +
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1228
    +
    long ssl_options_set
    Definition: libwebsockets.h:1733
    +
    Definition: libwebsockets.h:1056
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED
    -
    unsigned int mask
    Definition: libwebsockets.h:1484
    +
    unsigned int mask
    Definition: libwebsockets.h:1486
    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:2002
    +
    const void * client_exts
    Definition: libwebsockets.h:2112
    +
    lws_mount_protocols
    Definition: libwebsockets.h:2004
    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:435
    -
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1726
    -
    Definition: libwebsockets.h:2003
    +
    lws_sockfd_type fd
    Definition: libwebsockets.h:437
    +
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1728
    +
    Definition: libwebsockets.h:2005
    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:2034
    -
    void * external_baggage_free_on_destroy
    Definition: libwebsockets.h:1758
    +
    const struct lws_protocol_vhost_options * interpret
    Definition: libwebsockets.h:2036
    +
    void * external_baggage_free_on_destroy
    Definition: libwebsockets.h:1760
    LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
    - -
    Definition: libwebsockets.h:1546
    + +
    Definition: libwebsockets.h:1548
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
    -
    int count_vars
    Definition: libwebsockets.h:2550
    +
    int count_vars
    Definition: libwebsockets.h:2552
    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:2604
    +
    Definition: libwebsockets.h:2606
    LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)
    -
    Definition: libwebsockets.h:727
    -
    void * data
    Definition: libwebsockets.h:2548
    -
    char * content
    Definition: libwebsockets.h:4330
    +
    Definition: libwebsockets.h:729
    +
    void * data
    Definition: libwebsockets.h:2550
    +
    char * content
    Definition: libwebsockets.h:4332
    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:1621
    -
    Definition: libwebsockets.h:4291
    -
    const char * address
    Definition: libwebsockets.h:2092
    -
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:4148
    -
    void * user
    Definition: libwebsockets.h:1343
    -
    int events
    Definition: libwebsockets.h:535
    +
    const struct lws_token_limits * token_limits
    Definition: libwebsockets.h:1623
    +
    Definition: libwebsockets.h:4293
    +
    const char * address
    Definition: libwebsockets.h:2094
    +
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:4150
    +
    void * user
    Definition: libwebsockets.h:1345
    +
    int events
    Definition: libwebsockets.h:537
    LWS_VISIBLE LWS_EXTERN unsigned int lws_http_client_http_response(struct lws *wsi)
    -
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:4317
    -
    Definition: libwebsockets.h:2009
    -
    void * user
    Definition: libwebsockets.h:1653
    -
    Definition: libwebsockets.h:4287
    -
    Definition: libwebsockets.h:3293
    -
    char * token
    Definition: libwebsockets.h:2605
    +
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:4319
    +
    Definition: libwebsockets.h:2011
    +
    void * user
    Definition: libwebsockets.h:1655
    +
    Definition: libwebsockets.h:4289
    +
    Definition: libwebsockets.h:3295
    +
    char * token
    Definition: libwebsockets.h:2607
    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:1426
    -
    void * l
    Definition: libwebsockets.h:1441
    -
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1630
    -
    Definition: libwebsockets.h:1579
    -
    int max_len
    Definition: libwebsockets.h:2538
    -
    Definition: libwebsockets.h:729
    -
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1992
    -
    Definition: libwebsockets.h:740
    +
    int count_protocols
    Definition: libwebsockets.h:1428
    +
    void * l
    Definition: libwebsockets.h:1443
    +
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1632
    +
    Definition: libwebsockets.h:1581
    +
    int max_len
    Definition: libwebsockets.h:2540
    +
    Definition: libwebsockets.h:731
    +
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1994
    +
    Definition: libwebsockets.h:742
    LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
    -
    Definition: libwebsockets.h:2544
    +
    Definition: libwebsockets.h:2546
    LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
    -
    Definition: libwebsockets.h:939
    -
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1636
    -
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:2079
    -
    int gid
    Definition: libwebsockets.h:1647
    -
    struct lws_vhost * vhost
    Definition: libwebsockets.h:2124
    -
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:1076
    +
    Definition: libwebsockets.h:941
    +
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1638
    +
    lws_client_connect_ssl_connection_flags
    Definition: libwebsockets.h:2081
    +
    int gid
    Definition: libwebsockets.h:1649
    +
    struct lws_vhost * vhost
    Definition: libwebsockets.h:2126
    +
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:1078
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
    -
    Definition: libwebsockets.h:1566
    -
    Definition: libwebsockets.h:608
    -
    Definition: libwebsockets.h:4282
    -
    unsigned int api_magic
    Definition: libwebsockets.h:1424
    -
    Definition: libwebsockets.h:1569
    +
    Definition: libwebsockets.h:1568
    +
    Definition: libwebsockets.h:610
    +
    Definition: libwebsockets.h:4284
    +
    unsigned int api_magic
    Definition: libwebsockets.h:1426
    +
    Definition: libwebsockets.h:1571
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
    -
    Definition: libwebsockets.h:4285
    -
    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:2945
    +
    Definition: libwebsockets.h:4287
    +
    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:2947
    diff --git a/doc/html/navtreedata.js b/doc/html/navtreedata.js index bc3a3c51..8b702566 100644 --- a/doc/html/navtreedata.js +++ b/doc/html/navtreedata.js @@ -138,7 +138,7 @@ var NAVTREEINDEX = "group__context-and-vhost.html#gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93", "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917", "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390", -"structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f" +"structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js index 5451e398..8709d3d9 100644 --- a/doc/html/navtreeindex0.js +++ b/doc/html/navtreeindex0.js @@ -181,12 +181,12 @@ var NAVTREEINDEX0 = "group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[11,0,0,0,107], "group__callback-when-writeable.html#gaa709e02a10558753c851e58f1e2c16ba":[9,1,7], "group__callback-when-writeable.html#gaad3d524a84d2be08ac85153bc158504b":[11,0,0,0,58], -"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[11,0,0,0,60], "group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[9,1,3], +"group__callback-when-writeable.html#gabbe4655c7eeb3eb1671b2323ec6b3107":[11,0,0,0,60], "group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[11,0,0,0,103], "group__callback-when-writeable.html#gac4643fe16b0940ae5b68b4ee6195cbde":[9,1,6], -"group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,1,0], "group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[11,0,0,0,56], +"group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,1,0], "group__cgi.html":[9,19], "group__client.html":[9,2], "group__client.html#ga0c966136905f467816307cfba6deb5fd":[9,2,4], diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js index c2f6f4dc..3542cf06 100644 --- a/doc/html/navtreeindex1.js +++ b/doc/html/navtreeindex1.js @@ -182,8 +182,9 @@ var NAVTREEINDEX1 = "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa2be9c1d50d05756078e9abc72c9e50cc":[11,0,0,0,32,5], "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa52e5cd60bbb85f30ec0078a2c4be0c59":[11,0,0,0,32,3], "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa6353ac9650d35e8958981eebcb4b67a9":[11,0,0,0,32,7], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa78765040ed7e15a1280bd4a3f5323998":[11,0,0,0,32,10], "group__log.html#gga14542b84d2c76efa7814124bb10f9c5faa12195bd6dd442763a8321c463a2c906":[11,0,0,0,32,1], -"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faacc8fe5891eba3cf4537bee50eaaa8fa":[11,0,0,0,32,10], +"group__log.html#gga14542b84d2c76efa7814124bb10f9c5faacc8fe5891eba3cf4537bee50eaaa8fa":[11,0,0,0,32,11], "group__log.html#gga14542b84d2c76efa7814124bb10f9c5facef27c02b70f1bc9140685bdfafe0942":[11,0,0,0,32,6], "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad0b18841adbb4792c39981ec05702744":[11,0,0,0,32,4], "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fad40a82f6c94e6408dd003cf3f0231212":[11,0,0,0,32,2], @@ -195,8 +196,8 @@ var NAVTREEINDEX1 = "group__misc.html#ga0e705d498e8c8500649a26ba30a1e106":[11,0,0,0,136], "group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[11,0,0,0,131], "group__misc.html#ga1ec0d9faac5d3a5824d765c287c043aa":[9,8,8], -"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[9,8,7], "group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[11,0,0,0,130], +"group__misc.html#ga33bf2635033710b25f931b57ed663e1e":[9,8,7], "group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[11,0,0,0,105], "group__misc.html#ga58f906c6be0ca80efd813f694569dd4a":[9,8,6], "group__misc.html#ga629f48268fd1856b54b11172991b97d9":[9,8,3], @@ -207,8 +208,8 @@ var NAVTREEINDEX1 = "group__misc.html#ga9f37d0e357de2ab4170723fcdb665d21":[9,8,10], "group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[11,0,0,0,173], "group__misc.html#gaa194584fff9698f3b280658f770ccd0f":[9,8,11], -"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,149], "group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[9,8,9], +"group__misc.html#gab321ed812f46f6dc7ef9e3ca6f00cf1b":[11,0,0,0,149], "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[9,8,4], "group__misc.html#gac6abfc0b2bd5b2f09281a4432bb2f5f0":[11,0,0,0,98], "group__misc.html#gacae4d7b6a8d22e4c2d82ff8b12c1e234":[9,8,1], @@ -216,10 +217,10 @@ var NAVTREEINDEX1 = "group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[9,8,0], "group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[11,0,0,0,82], "group__net.html":[9,9], -"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,9,1], "group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[11,0,0,0,101], -"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[11,0,0,0,120], +"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,9,1], "group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,9,3], +"group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[11,0,0,0,120], "group__net.html#gad01014fed09759741b6d23afccfdaacc":[9,9,2], "group__net.html#gad01014fed09759741b6d23afccfdaacc":[11,0,0,0,102], "group__net.html#gad0df22db2be9fc65a667a1e83f9a92a4":[9,9,0], @@ -244,10 +245,9 @@ var NAVTREEINDEX1 = "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[9,13,0,0], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db":[11,0,0,0,36,0], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dab7e7a62cf6f456c09c21dff24dad9039":[11,0,0,0,36,5], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[9,13,0,3], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[11,0,0,0,36,3], +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e":[9,13,0,3], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dae7d8a025a65524652fe9e24c2654c935":[11,0,0,0,36,6], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[9,13,0,1], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[11,0,0,0,36,1], -"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,13,0,4] +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2":[11,0,0,0,36,1] }; diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js index b3528152..ebc0708f 100644 --- a/doc/html/navtreeindex2.js +++ b/doc/html/navtreeindex2.js @@ -1,5 +1,6 @@ var NAVTREEINDEX2 = { +"group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[9,13,0,4], "group__sending-data.html#gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917":[11,0,0,0,36,7], "group__service.html":[9,0], "group__service.html#ga29c246707997ab7a466aa709aecd2d7b":[9,0,1], @@ -10,10 +11,10 @@ var NAVTREEINDEX2 = "group__service.html#ga53e3d0801dfda7960a7249dd559e68a2":[11,0,0,0,63], "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[11,0,0,0,148], "group__service.html#ga9b3cc4473fd8848e5bbee7f310712939":[9,0,6], -"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,4], "group__service.html#gad82efa5466d14a9f05aa06416375b28d":[11,0,0,0,146], -"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,147], +"group__service.html#gad82efa5466d14a9f05aa06416375b28d":[9,0,4], "group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[9,0,5], +"group__service.html#gaebf426eda371ba23642fc11d8e0ace6b":[11,0,0,0,147], "group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[11,0,0,0,144], "group__service.html#gaf95bd0c663d6516a0c80047d9b1167a8":[9,0,2], "group__sha.html":[9,11], @@ -28,24 +29,24 @@ var NAVTREEINDEX2 = "group__smtp.html#ga116be79bf44f9dc2a97f46e051fe4dc0":[11,0,0,0,38], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,14,3], "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[11,0,0,0,84], -"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,14,2], "group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[11,0,0,0,83], -"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[11,0,0,0,85], +"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,14,2], "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,14,4], +"group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[11,0,0,0,85], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[9,14,1,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[11,0,0,0,38,3], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[9,14,1,0], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c":[11,0,0,0,38,0], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[11,0,0,0,38,8], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5":[9,14,1,8], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[9,14,1,7], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69":[11,0,0,0,38,7], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,14,1,6], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[11,0,0,0,38,6], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,14,1,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[11,0,0,0,38,4], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[11,0,0,0,38,5], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,14,1,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,14,1,2], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[11,0,0,0,38,2], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,14,1,1], @@ -53,16 +54,16 @@ var NAVTREEINDEX2 = "group__sock-adopt.html":[9,15], "group__sock-adopt.html#ga18747e81ff49df2076e7cd4f131f967c":[9,15,2], "group__sock-adopt.html#ga18747e81ff49df2076e7cd4f131f967c":[11,0,0,0,52], -"group__sock-adopt.html#ga5ed5fd251ac0ed46798af341c33bf067":[11,0,0,0,53], "group__sock-adopt.html#ga5ed5fd251ac0ed46798af341c33bf067":[9,15,3], +"group__sock-adopt.html#ga5ed5fd251ac0ed46798af341c33bf067":[11,0,0,0,53], "group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,15,1], "group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[11,0,0,0,51], "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[11,0,0,0,50], "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,15,0], "group__timeout.html":[9,3], "group__timeout.html#ga2c0aa4b9c3c55bae7b35cbfac3246c87":[11,0,0,0,39], -"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,3,0], "group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[11,0,0,0,153], +"group__timeout.html#gaced9f9237f6172fed9f730a2af51345a":[9,3,0], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0d6b956db11acb6d263af3ea054a914e":[11,0,0,0,39,12], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a0eef059426f37d00b75142d4dc3e25e3":[11,0,0,0,39,3], "group__timeout.html#gga2c0aa4b9c3c55bae7b35cbfac3246c87a1104c39d0177378713a9332ab7a9d7fe":[11,0,0,0,39,4], @@ -99,8 +100,8 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493":[9,16,1,22], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79":[11,0,0,0,23,36], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79":[9,16,1,36], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[11,0,0,0,23,9], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[9,16,1,9], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[11,0,0,0,23,9], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a17620dd6cb920b9b6daeae63575be08b":[9,16,1,41], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a17620dd6cb920b9b6daeae63575be08b":[11,0,0,0,23,58], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a182a4a14c3278784505cea6d516a8308":[11,0,0,0,23,47], @@ -111,8 +112,8 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a23b90b5e5146e760bc3123ae1fd2a6e5":[11,0,0,0,23,40], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439":[11,0,0,0,23,0], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439":[9,16,1,0], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[11,0,0,0,23,7], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[9,16,1,7], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738":[11,0,0,0,23,7], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[11,0,0,0,23,14], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804":[9,16,1,14], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e":[11,0,0,0,23,25], @@ -120,37 +121,37 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a45d538082dec32dbecfe9d9a05ddfecd":[11,0,0,0,23,50], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[9,16,1,4], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[11,0,0,0,23,4], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[11,0,0,0,23,6], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[9,16,1,6], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[11,0,0,0,23,6], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa":[11,0,0,0,23,28], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa":[9,16,1,28], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a659539cfa65c66e0d813113b09900d31":[11,0,0,0,23,42], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a6a09ee9c01c4a233aedbe6697e29cc01":[11,0,0,0,23,44], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c":[11,0,0,0,23,18], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c":[9,16,1,18], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[11,0,0,0,23,3], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[9,16,1,3], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[11,0,0,0,23,3], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[11,0,0,0,23,11], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[9,16,1,11], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,16,1,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[11,0,0,0,23,5], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,16,1,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[11,0,0,0,23,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[9,16,1,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[11,0,0,0,23,52], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[11,0,0,0,23,10], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[9,16,1,10], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[9,16,1,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[11,0,0,0,23,24], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[9,16,1,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[9,16,1,42], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[11,0,0,0,23,59], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[11,0,0,0,23,37], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b":[9,16,1,37], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,23,2], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[9,16,1,2], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2":[11,0,0,0,23,2], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[11,0,0,0,23,56], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa5cc921b7697743017a533822a3d556a":[9,16,1,39], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[9,16,1,15], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[11,0,0,0,23,15], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587":[9,16,1,15], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e":[11,0,0,0,23,34], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e":[9,16,1,34], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aaffd08a5cae791c9f3c38ee242203900":[11,0,0,0,23,46], @@ -177,18 +178,18 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad87774f1c7784cf632e1e2f5b51036e1":[11,0,0,0,23,48], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[11,0,0,0,23,1], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8":[9,16,1,1], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[9,16,1,31], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[11,0,0,0,23,31], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[9,16,1,21], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34":[9,16,1,31], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[11,0,0,0,23,21], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c":[9,16,1,21], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[11,0,0,0,23,23], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac":[9,16,1,23], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,23,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[9,16,1,12], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e":[11,0,0,0,23,12], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[11,0,0,0,23,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[9,16,1,19], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[11,0,0,0,23,57], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[9,16,1,40], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7aeb0cec65ec82a713cd01e9ca9aeeb5e6":[11,0,0,0,23,57], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[11,0,0,0,23,55], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[11,0,0,0,23,51], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[11,0,0,0,23,29], @@ -212,8 +213,8 @@ var NAVTREEINDEX2 = "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[11,0,0,0,33,0], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,4,0,2,2], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[11,0,0,0,33,2], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,33,5], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,4,0,2,5], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[11,0,0,0,33,5], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,4,0,2,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[11,0,0,0,33,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,4,0,2,4], @@ -232,22 +233,21 @@ var NAVTREEINDEX2 = "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a32c38edab10d1379febac0c479ab2e9c":[11,0,0,0,26,14], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[9,17,0,0], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a3ffa38d5081b85fb739e02a747ccf2c4":[11,0,0,0,26,1], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,17,0,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[11,0,0,0,26,4], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[11,0,0,0,26,6], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[9,17,0,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,17,0,5], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[11,0,0,0,26,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[11,0,0,0,26,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,17,0,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[11,0,0,0,26,8], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,17,0,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[11,0,0,0,26,2], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,17,0,1], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,17,0,10], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[11,0,0,0,26,11], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,17,0,10], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[11,0,0,0,26,0], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,17,0,11], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[11,0,0,0,26,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[11,0,0,0,26,9], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12] +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[9,17,0,8] }; diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js index a57bf5fb..773beb7e 100644 --- a/doc/html/navtreeindex3.js +++ b/doc/html/navtreeindex3.js @@ -1,28 +1,29 @@ var NAVTREEINDEX3 = { +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,17,0,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[11,0,0,0,26,13], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,26,5], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,17,0,4], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[11,0,0,0,26,5], "group__wsstatus.html":[9,18], "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[11,0,0,0,122], "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,18,4], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,18,5], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[11,0,0,0,123], -"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,7], "group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[11,0,0,0,141], -"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1], +"group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,18,7], "group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[11,0,0,0,106], +"group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,18,1], "group__wsstatus.html#ga42152ffb385f9b19f4e7b04f998425de":[9,18,2], "group__wsstatus.html#ga42152ffb385f9b19f4e7b04f998425de":[11,0,0,0,108], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,18,3], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[11,0,0,0,121], "group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,18,0], "group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[11,0,0,0,93], -"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,132], "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,18,6], +"group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[11,0,0,0,132], "hierarchy.html":[10,2], -"index.html":[], "index.html":[0], +"index.html":[], "libwebsockets_8h.html":[11,0,0,0], "libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[11,0,0,0,179], "libwebsockets_8h.html#a17f5fc891b31d2920bd18b0d66d6cb25":[11,0,0,0,184], @@ -173,7 +174,6 @@ var NAVTREEINDEX3 = "structlws__client__connect__info.html#a6843a60e1050b10db9d98d7eeb45f587":[9,2,0,8], "structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895":[9,2,0,5], "structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185":[9,2,0,9], -"structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c":[9,2,0,2], "structlws__client__connect__info.html#a8595f83e64147cb687b6418cf500dd4c":[9,2,0,7], "structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836":[9,2,0,16], "structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d":[9,2,0,13], @@ -181,6 +181,7 @@ var NAVTREEINDEX3 = "structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7":[9,2,0,4], "structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502":[9,2,0,1], "structlws__client__connect__info.html#aa9e8e3da4e783a0651b0dea62c2dd1db":[9,2,0,6], +"structlws__client__connect__info.html#aaf76f45db5b4354894bae03a4f8f65a5":[9,2,0,2], "structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2":[9,2,0,11], "structlws__client__connect__info.html#ad47f50d1633dc5df74548606c9a66d73":[9,2,0,0], "structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd":[9,2,0,3], @@ -248,6 +249,5 @@ var NAVTREEINDEX3 = "structlws__email.html#af7f0ae934347d81071f63a963301f9e2":[9,14,0,6], "structlws__ext__option__arg.html":[9,5,1], "structlws__ext__option__arg.html#a0a320c56b79271b8f059eeaad9423ac9":[9,5,1,2], -"structlws__ext__option__arg.html#a0b1f7b30c3ceaf5f1bf9d105c24568d1":[9,5,1,3], -"structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5":[9,5,1,0] +"structlws__ext__option__arg.html#a0b1f7b30c3ceaf5f1bf9d105c24568d1":[9,5,1,3] }; diff --git a/doc/html/navtreeindex4.js b/doc/html/navtreeindex4.js index 9118beb6..769d9d22 100644 --- a/doc/html/navtreeindex4.js +++ b/doc/html/navtreeindex4.js @@ -1,5 +1,6 @@ var NAVTREEINDEX4 = { +"structlws__ext__option__arg.html#af37f0b6caa7735af51a1ac12b68d5bc5":[9,5,1,0], "structlws__ext__option__arg.html#af57fffcfa253dfa8d98681ac1fb1785f":[9,5,1,1], "structlws__ext__options.html":[9,5,0], "structlws__ext__options.html#a1769e4a9805bbdda227821e9578ddc7e":[9,5,0,0], @@ -76,14 +77,14 @@ var NAVTREEINDEX4 = "structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5":[9,6,1,1,1], "structlws__protocol__vhost__options.html":[9,4,0,0], "structlws__protocol__vhost__options.html":[9,4,2], -"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[9,4,0,0,3], "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,2,1], "structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[9,4,0,0,1], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,2,0], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[9,4,0,0,0], -"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,0,0,2], "structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,2,2], +"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[9,4,0,0,2], "structlws__protocols.html":[9,10,1], "structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5":[9,10,1,4], "structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624":[9,10,1,2], @@ -99,10 +100,10 @@ var NAVTREEINDEX4 = "structlws__session__info.html#afb924864b70f40372920688a5c1c895e":[9,10,0,2,2], "structlws__token__limits.html":[9,6,4,1], "structlws__token__limits.html#a6ec712306cbf8585bce7a56758a3ceff":[9,6,4,1,0], -"structlws__tokens.html":[9,6,6], "structlws__tokens.html":[9,6,4,0], -"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,4,0,1], +"structlws__tokens.html":[9,6,6], "structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,6,1], +"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[9,6,4,0,1], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,4,0,0], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[9,6,6,0], "structlwsgw__hash.html":[9,10,0,1], diff --git a/doc/html/structlws__client__connect__info.html b/doc/html/structlws__client__connect__info.html index 5c635e66..ce3d1b63 100644 --- a/doc/html/structlws__client__connect__info.html +++ b/doc/html/structlws__client__connect__info.html @@ -91,8 +91,8 @@ Data Fields   void * userdata   -const struct lws_extensionclient_exts -  +const void * client_exts +  const char * method   struct lws * parent_wsi @@ -141,18 +141,18 @@ Data Fields - -

    § client_exts

    + +

    § client_exts

    - +
    const struct lws_extension* lws_client_connect_info::client_extsconst void* lws_client_connect_info::client_exts
    -

    array of extensions that may be used on connection

    +

    UNUSED... provide in info.extensions at context creation time

    diff --git a/doc/html/structlws__client__connect__info.js b/doc/html/structlws__client__connect__info.js index 042b3d92..837e97a2 100644 --- a/doc/html/structlws__client__connect__info.js +++ b/doc/html/structlws__client__connect__info.js @@ -2,7 +2,7 @@ var structlws__client__connect__info = [ [ "_unused", "structlws__client__connect__info.html#ad47f50d1633dc5df74548606c9a66d73", null ], [ "address", "structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502", null ], - [ "client_exts", "structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c", null ], + [ "client_exts", "structlws__client__connect__info.html#aaf76f45db5b4354894bae03a4f8f65a5", null ], [ "context", "structlws__client__connect__info.html#afe999d133cc240a0bfd02aade0514cfd", null ], [ "host", "structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7", null ], [ "ietf_version_or_minus_one", "structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895", null ], diff --git a/lib/client-handshake.c b/lib/client-handshake.c index 67b2b4f9..3b6983c2 100644 --- a/lib/client-handshake.c +++ b/lib/client-handshake.c @@ -146,7 +146,7 @@ lws_client_connect_2(struct lws *wsi) } p1 = p; - lwsl_err("getaddrinfo %s -> %d.%d.%d.%d\n", ads, + lwsl_debug("getaddrinfo %s -> %d.%d.%d.%d\n", ads, p1[0], p1[1], p1[2], p1[3]); server_addr4.sin_family = AF_INET; diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 458b93d2..b6316ba7 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -2109,8 +2109,8 @@ struct lws_client_connect_info { /**< deprecated: currently leave at 0 or -1 */ void *userdata; /**< if non-NULL, use this as wsi user_data instead of malloc it */ - const struct lws_extension *client_exts; - /**< array of extensions that may be used on connection */ + const void *client_exts; + /**< UNUSED... provide in info.extensions at context creation time */ const char *method; /**< if non-NULL, do this http method instead of ws[s] upgrade. * use "GET" to be a simple http client connection */ diff --git a/test-server/test-client.c b/test-server/test-client.c index c0a96989..dd3f88fb 100644 --- a/test-server/test-client.c +++ b/test-server/test-client.c @@ -528,6 +528,7 @@ int main(int argc, char **argv) info.gid = -1; info.uid = -1; info.ws_ping_pong_interval = pp_secs; + info.extensions = exts; if (use_ssl) { info.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT; @@ -583,7 +584,6 @@ int main(int argc, char **argv) i.host = i.address; i.origin = i.address; i.ietf_version_or_minus_one = ietf_version; - i.client_exts = exts; if (!strcmp(prot, "http") || !strcmp(prot, "https")) { lwsl_notice("using %s mode (non-ws)\n", prot); diff --git a/test-server/test-echo.c b/test-server/test-echo.c index f4285768..92aadee6 100644 --- a/test-server/test-echo.c +++ b/test-server/test-echo.c @@ -447,6 +447,7 @@ int main(int argc, char **argv) } info.gid = -1; info.uid = -1; + info.extensions = exts; info.options = opts | LWS_SERVER_OPTION_VALIDATE_UTF8; if (use_ssl) @@ -493,7 +494,6 @@ int main(int argc, char **argv) i.host = ads_port; i.origin = ads_port; i.protocol = connect_protocol; - i.client_exts = exts; wsi = lws_client_connect_via_info(&i); if (!wsi) { diff --git a/test-server/test-fraggle.c b/test-server/test-fraggle.c index 80aaea58..1de73603 100644 --- a/test-server/test-fraggle.c +++ b/test-server/test-fraggle.c @@ -335,6 +335,7 @@ int main(int argc, char **argv) info.gid = -1; info.uid = -1; info.options = opts; + info.extensions = exts; if (use_ssl) info.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT; @@ -360,7 +361,6 @@ int main(int argc, char **argv) i.host = ads_port; i.origin = ads_port; i.protocol = protocols[PROTOCOL_FRAGGLE].name; - i.client_exts = exts; lwsl_notice("Connecting to %s:%u\n", address, port); wsi = lws_client_connect_via_info(&i); diff --git a/test-server/test-ping.c b/test-server/test-ping.c index a013e9b6..0e0d5bc4 100644 --- a/test-server/test-ping.c +++ b/test-server/test-ping.c @@ -469,7 +469,6 @@ int main(int argc, char **argv) i.host = ads_port; i.origin = ads_port; i.protocol = protocols[PROTOCOL_LWS_MIRROR].name; - i.client_exts = exts; i.ietf_version_or_minus_one = ietf_version; for (n = 0; n < clients; n++) {