diff --git a/doc/html/functions.html b/doc/html/functions.html index 822d3ceb..5394803b 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -502,6 +502,9 @@ $(document).ready(function(){initNavTree('functions.html','');});
  • pvo : lws_context_creation_info
  • +
  • pwsi +: lws_client_connect_info +
  • diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index 90979a6d..e778a9fc 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -490,6 +490,9 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
  • pvo : lws_context_creation_info
  • +
  • pwsi +: lws_client_connect_info +
  • diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html index 4dfdcb1d..10a339f8 100644 --- a/doc/html/globals_func.html +++ b/doc/html/globals_func.html @@ -154,7 +154,7 @@ $(document).ready(function(){initNavTree('globals_func.html','');}); : libwebsockets.h
  • lws_client_connect_via_info() -: libwebsockets.h +: libwebsockets.h
  • lws_close_reason() : libwebsockets.h diff --git a/doc/html/globals_l.html b/doc/html/globals_l.html index a974eb8c..af85bf15 100644 --- a/doc/html/globals_l.html +++ b/doc/html/globals_l.html @@ -308,7 +308,7 @@ $(document).ready(function(){initNavTree('globals_l.html','');}); : libwebsockets.h
  • lws_client_connect_via_info() -: libwebsockets.h +: libwebsockets.h
  • lws_close_reason() : libwebsockets.h diff --git a/doc/html/group__client.html b/doc/html/group__client.html index 15d75f11..1e459d1b 100644 --- a/doc/html/group__client.html +++ b/doc/html/group__client.html @@ -76,8 +76,8 @@ Data Structures - - + + @@ -269,12 +269,12 @@ LWS_VISIBLE LWS_EXTERN int 

    may have an optional decimal argument

    Functions

    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_client_connect_via_info (struct lws_client_connect_info *ccinfo)
     
    LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info (struct lws_client_connect_info *ccinfo)
     
    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
     
    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
    - +
    - + @@ -284,9 +284,10 @@ LWS_VISIBLE LWS_EXTERN int 

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

    LWS_VISIBLE LWS_EXTERN struct lws* LWS_WARN_UNUSED_RESULT lws_client_connect_via_info LWS_VISIBLE LWS_EXTERN struct lws* lws_client_connect_via_info ( struct lws_client_connect_info ccinfo)

    #include <lib/libwebsockets.h>

    -

    lws_client_connect_via_info() - Connect to another websocket server

    Parameters
    +

    lws_client_connect_via_info() - Connect to another websocket server

    Parameters
    - +
    ccinfopointer to lws_client_connect_info struct
     This function creates a connection to a remote server
    ccinfopointer to lws_client_connect_info struct
     This function creates a connection to a remote server using the
    + information provided in ccinfo.
    diff --git a/doc/html/group__client.js b/doc/html/group__client.js index 9d877f27..f35dce6f 100644 --- a/doc/html/group__client.js +++ b/doc/html/group__client.js @@ -13,6 +13,7 @@ var group__client = [ "path", "structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185", null ], [ "port", "structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9", null ], [ "protocol", "structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2", null ], + [ "pwsi", "structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e", null ], [ "ssl_connection", "structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d", null ], [ "uri_replace_from", "structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a", null ], [ "uri_replace_to", "structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3", null ], @@ -21,6 +22,6 @@ var group__client = ] ], [ "lws_client_connect", "group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3", null ], [ "lws_client_connect_extended", "group__client.html#gac6a8558b4410961a880241c2ac1271e2", null ], - [ "lws_client_connect_via_info", "group__client.html#gac30a7be106abd0cedfbb2e8b8fe3a2f5", null ], + [ "lws_client_connect_via_info", "group__client.html#ga0c966136905f467816307cfba6deb5fd", null ], [ "lws_init_vhost_client_ssl", "group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340", null ] ]; \ No newline at end of file diff --git a/doc/html/group__context-and-vhost.html b/doc/html/group__context-and-vhost.html index 879d4dcd..cff21961 100644 --- a/doc/html/group__context-and-vhost.html +++ b/doc/html/group__context-and-vhost.html @@ -206,23 +206,23 @@ Functions
    -
    1347  {
    1349  (1 << 12),
    1356  (1 << 12),
    1360  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1362  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1371  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1372  (1 << 12),
    1374  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1377  (1 << 3) |
    1378  (1 << 12),
    1386  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1388  LWS_SERVER_OPTION_STS = (1 << 15),
    1396  /****** add new things just above ---^ ******/
    1397 };
    -
    Definition: libwebsockets.h:1364
    -
    Definition: libwebsockets.h:1376
    -
    Definition: libwebsockets.h:1383
    -
    Definition: libwebsockets.h:1353
    -
    Definition: libwebsockets.h:1371
    -
    Definition: libwebsockets.h:1355
    -
    Definition: libwebsockets.h:1360
    -
    Definition: libwebsockets.h:1381
    -
    Definition: libwebsockets.h:1393
    -
    Definition: libwebsockets.h:1362
    -
    Definition: libwebsockets.h:1374
    -
    Definition: libwebsockets.h:1386
    -
    Definition: libwebsockets.h:1369
    -
    Definition: libwebsockets.h:1367
    -
    Definition: libwebsockets.h:1388
    -
    Definition: libwebsockets.h:1391
    +
    1387  {
    1389  (1 << 12),
    1396  (1 << 12),
    1400  LWS_SERVER_OPTION_LIBEV = (1 << 4),
    1402  LWS_SERVER_OPTION_DISABLE_IPV6 = (1 << 5),
    1411  LWS_SERVER_OPTION_SSL_ECDH = (1 << 9) |
    1412  (1 << 12),
    1414  LWS_SERVER_OPTION_LIBUV = (1 << 10),
    1417  (1 << 3) |
    1418  (1 << 12),
    1426  LWS_SERVER_OPTION_UNIX_SOCK = (1 << 14),
    1428  LWS_SERVER_OPTION_STS = (1 << 15),
    1436  /****** add new things just above ---^ ******/
    1437 };
    +
    Definition: libwebsockets.h:1404
    +
    Definition: libwebsockets.h:1416
    +
    Definition: libwebsockets.h:1423
    +
    Definition: libwebsockets.h:1393
    +
    Definition: libwebsockets.h:1411
    +
    Definition: libwebsockets.h:1395
    +
    Definition: libwebsockets.h:1400
    +
    Definition: libwebsockets.h:1421
    +
    Definition: libwebsockets.h:1433
    +
    Definition: libwebsockets.h:1402
    +
    Definition: libwebsockets.h:1414
    +
    Definition: libwebsockets.h:1426
    +
    Definition: libwebsockets.h:1409
    +
    Definition: libwebsockets.h:1407
    +
    Definition: libwebsockets.h:1428
    +
    Definition: libwebsockets.h:1431
    diff --git a/doc/html/group__extensions.html b/doc/html/group__extensions.html index eb15819f..aba469ad 100644 --- a/doc/html/group__extensions.html +++ b/doc/html/group__extensions.html @@ -242,9 +242,9 @@ Functions
    -
    949  {
    950  EXTARG_NONE,
    951  EXTARG_DEC,
    954  /* Add new things just above here ---^
    955  * This is part of the ABI, don't needlessly break compatibility */
    956 };
    Definition: libwebsockets.h:952
    -
    Definition: libwebsockets.h:950
    -
    Definition: libwebsockets.h:951
    +
    989  {
    990  EXTARG_NONE,
    991  EXTARG_DEC,
    994  /* Add new things just above here ---^
    995  * This is part of the ABI, don't needlessly break compatibility */
    996 };
    Definition: libwebsockets.h:992
    +
    Definition: libwebsockets.h:990
    +
    Definition: libwebsockets.h:991
    diff --git a/doc/html/group__form-parsing.html b/doc/html/group__form-parsing.html index f40c0c6c..e7b1d7c1 100644 --- a/doc/html/group__form-parsing.html +++ b/doc/html/group__form-parsing.html @@ -156,9 +156,9 @@ Functions

    a new file is starting to arrive

    -
    2552  {
    2557  LWS_UFS_OPEN
    2559 };
    Definition: libwebsockets.h:2555
    -
    Definition: libwebsockets.h:2557
    -
    Definition: libwebsockets.h:2553
    +
    2604  {
    2609  LWS_UFS_OPEN
    2611 };
    Definition: libwebsockets.h:2607
    +
    Definition: libwebsockets.h:2609
    +
    Definition: libwebsockets.h:2605
    diff --git a/doc/html/group__generic-sessions.html b/doc/html/group__generic-sessions.html index 0488d79e..91850ba3 100644 --- a/doc/html/group__generic-sessions.html +++ b/doc/html/group__generic-sessions.html @@ -117,8 +117,8 @@ Enumerations

    an existing user was deleted

    -
    1311  {
    1312  LWSGSE_CREATED,
    1314 };
    Definition: libwebsockets.h:1313
    -
    Definition: libwebsockets.h:1312
    +
    1351  {
    1352  LWSGSE_CREATED,
    1354 };
    Definition: libwebsockets.h:1353
    +
    Definition: libwebsockets.h:1352
    @@ -148,10 +148,10 @@ Enumerations

    he just completed "forgot password" flow

    -
    1293  {
    1294  LWSGS_AUTH_LOGGED_IN = 1,
    1295  LWSGS_AUTH_ADMIN = 2,
    1296  LWSGS_AUTH_VERIFIED = 4,
    1298 };
    Definition: libwebsockets.h:1296
    -
    Definition: libwebsockets.h:1297
    -
    Definition: libwebsockets.h:1295
    -
    Definition: libwebsockets.h:1294
    +
    1333  {
    1334  LWSGS_AUTH_LOGGED_IN = 1,
    1335  LWSGS_AUTH_ADMIN = 2,
    1336  LWSGS_AUTH_VERIFIED = 4,
    1338 };
    Definition: libwebsockets.h:1336
    +
    Definition: libwebsockets.h:1337
    +
    Definition: libwebsockets.h:1335
    +
    Definition: libwebsockets.h:1334
    diff --git a/doc/html/group__sending-data.html b/doc/html/group__sending-data.html index 2e9d89e4..f7b92ea5 100644 --- a/doc/html/group__sending-data.html +++ b/doc/html/group__sending-data.html @@ -130,13 +130,13 @@ Functions

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

    -
    2893  {
    2894  LWS_WRITE_TEXT = 0,
    2898  LWS_WRITE_BINARY = 1,
    2904  LWS_WRITE_HTTP = 3,
    2907  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2908  LWS_WRITE_PING = 5,
    2909  LWS_WRITE_PONG = 6,
    2910 
    2911  /* Same as write_http but we know this write ends the transaction */
    2912  LWS_WRITE_HTTP_FINAL = 7,
    2913 
    2914  /* HTTP2 */
    2915 
    2923  /****** add new things just above ---^ ******/
    2924 
    2925  /* flags */
    2926 
    2927  LWS_WRITE_NO_FIN = 0x40,
    2934 };
    Definition: libwebsockets.h:2904
    -
    Definition: libwebsockets.h:2927
    -
    Definition: libwebsockets.h:2894
    -
    Definition: libwebsockets.h:2898
    -
    Definition: libwebsockets.h:2930
    -
    Definition: libwebsockets.h:2901
    -
    Definition: libwebsockets.h:2916
    +
    2945  {
    2946  LWS_WRITE_TEXT = 0,
    2950  LWS_WRITE_BINARY = 1,
    2956  LWS_WRITE_HTTP = 3,
    2959  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2960  LWS_WRITE_PING = 5,
    2961  LWS_WRITE_PONG = 6,
    2962 
    2963  /* Same as write_http but we know this write ends the transaction */
    2964  LWS_WRITE_HTTP_FINAL = 7,
    2965 
    2966  /* HTTP2 */
    2967 
    2975  /****** add new things just above ---^ ******/
    2976 
    2977  /* flags */
    2978 
    2979  LWS_WRITE_NO_FIN = 0x40,
    2986 };
    Definition: libwebsockets.h:2956
    +
    Definition: libwebsockets.h:2979
    +
    Definition: libwebsockets.h:2946
    +
    Definition: libwebsockets.h:2950
    +
    Definition: libwebsockets.h:2982
    +
    Definition: libwebsockets.h:2953
    +
    Definition: libwebsockets.h:2968
    diff --git a/doc/html/group__smtp.html b/doc/html/group__smtp.html index 2592f3e2..e2dadc61 100644 --- a/doc/html/group__smtp.html +++ b/doc/html/group__smtp.html @@ -157,15 +157,15 @@ Functions

    sent the session quit

    -
    3815  {
    3816  LGSSMTP_IDLE,
    3821  LGSSMTP_SENT_TO,
    3825 };
    Definition: libwebsockets.h:3818
    -
    Definition: libwebsockets.h:3823
    -
    Definition: libwebsockets.h:3816
    -
    Definition: libwebsockets.h:3817
    -
    Definition: libwebsockets.h:3821
    -
    Definition: libwebsockets.h:3820
    -
    Definition: libwebsockets.h:3824
    -
    Definition: libwebsockets.h:3819
    -
    Definition: libwebsockets.h:3822
    +
    3867  {
    3868  LGSSMTP_IDLE,
    3873  LGSSMTP_SENT_TO,
    3877 };
    Definition: libwebsockets.h:3870
    +
    Definition: libwebsockets.h:3875
    +
    Definition: libwebsockets.h:3868
    +
    Definition: libwebsockets.h:3869
    +
    Definition: libwebsockets.h:3873
    +
    Definition: libwebsockets.h:3872
    +
    Definition: libwebsockets.h:3876
    +
    Definition: libwebsockets.h:3871
    +
    Definition: libwebsockets.h:3874
    diff --git a/doc/html/group__usercb.html b/doc/html/group__usercb.html index 76a46ffd..59c355c8 100644 --- a/doc/html/group__usercb.html +++ b/doc/html/group__usercb.html @@ -204,8 +204,43 @@ Enumerations

    (VH) after the server completes a handshake with an incoming client. If you built the library with ssl support, in is a pointer to the ssl struct associated with the connection or NULL.

    LWS_CALLBACK_CLIENT_CONNECTION_ERROR  -

    the request client connection has been unable to complete a handshake with the remote server. If in is non-NULL, you can find an error string of length len where it points to.

    - +

    the request client connection has been unable to complete a handshake with the remote server. If in is non-NULL, you can find an error string of length len where it points to

    +

    Diagnostic strings that may be returned include

        "getaddrinfo (ipv6) failed"
    +    "unknown address family"
    +    "getaddrinfo (ipv4) failed"
    +    "set socket opts failed"
    +    "insert wsi failed"
    +    "lws_ssl_client_connect1 failed"
    +    "lws_ssl_client_connect2 failed"
    +    "Peer hung up"
    +    "read failed"
    +    "HS: URI missing"
    +    "HS: Redirect code but no Location"
    +    "HS: URI did not parse"
    +    "HS: Redirect failed"
    +    "HS: Server did not return 200"
    +    "HS: OOM"
    +    "HS: disallowed by client filter"
    +    "HS: disallowed at ESTABLISHED"
    +    "HS: ACCEPT missing"
    +    "HS: ws upgrade response not 101"
    +    "HS: UPGRADE missing"
    +    "HS: Upgrade to something other than websocket"
    +    "HS: CONNECTION missing"
    +    "HS: UPGRADE malformed"
    +    "HS: PROTOCOL malformed"
    +    "HS: Cannot match protocol"
    +    "HS: EXT: list too big"
    +    "HS: EXT: failed setting defaults"
    +    "HS: EXT: failed parsing defaults"
    +    "HS: EXT: failed parsing options"
    +    "HS: EXT: Rejects server options"
    +    "HS: EXT: unknown ext"
    +    "HS: Accept hash wrong"
    +    "HS: Rejected by filter cb"
    +    "HS: OOM"
    +    "HS: SO_SNDBUF failed"
    +    "HS: Rejected at CLIENT_ESTABLISHED"
    LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH 

    this is the last chance for the client user code to examine the http headers and decide to reject the connection. If the content in the headers is interesting to the client (url, etc) it needs to copy it out at this point since it will be destroyed before the CLIENT_ESTABLISHED call

    @@ -335,46 +370,46 @@ Enumerations

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

    -
    571  {
    615  LWS_CALLBACK_HTTP = 12,
    773  /* external poll() management support */
    836  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    839  LWS_CALLBACK_CGI = 40,
    841  LWS_CALLBACK_CGI_TERMINATED = 41,
    843  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    845  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    847  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    849  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    851  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    853  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    855  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    857  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    859  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    861  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    863  LWS_CALLBACK_PROCESS_HTML = 52,
    865  LWS_CALLBACK_ADD_HEADERS = 53,
    867  LWS_CALLBACK_SESSION_INFO = 54,
    870  LWS_CALLBACK_GS_EVENT = 55,
    873  /****** add new things just above ---^ ******/
    874 
    875  LWS_CALLBACK_USER = 1000,
    877 };
    Definition: libwebsockets.h:638
    -
    Definition: libwebsockets.h:766
    - -
    Definition: libwebsockets.h:764
    -
    Definition: libwebsockets.h:669
    -
    Definition: libwebsockets.h:615
    -
    Definition: libwebsockets.h:649
    -
    Definition: libwebsockets.h:790
    -
    Definition: libwebsockets.h:736
    -
    Definition: libwebsockets.h:629
    -
    Definition: libwebsockets.h:827
    - -
    Definition: libwebsockets.h:816
    - -
    Definition: libwebsockets.h:590
    -
    Definition: libwebsockets.h:768
    -
    Definition: libwebsockets.h:756
    -
    Definition: libwebsockets.h:587
    -
    Definition: libwebsockets.h:774
    -
    Definition: libwebsockets.h:580
    -
    Definition: libwebsockets.h:661
    -
    Definition: libwebsockets.h:759
    -
    Definition: libwebsockets.h:796
    -
    Definition: libwebsockets.h:636
    -
    Definition: libwebsockets.h:632
    +
    571  {
    655  LWS_CALLBACK_HTTP = 12,
    813  /* external poll() management support */
    876  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    879  LWS_CALLBACK_CGI = 40,
    881  LWS_CALLBACK_CGI_TERMINATED = 41,
    883  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    885  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    887  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    889  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    891  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    893  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    895  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    897  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    899  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    901  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    903  LWS_CALLBACK_PROCESS_HTML = 52,
    905  LWS_CALLBACK_ADD_HEADERS = 53,
    907  LWS_CALLBACK_SESSION_INFO = 54,
    910  LWS_CALLBACK_GS_EVENT = 55,
    913  /****** add new things just above ---^ ******/
    914 
    915  LWS_CALLBACK_USER = 1000,
    917 };
    Definition: libwebsockets.h:678
    +
    Definition: libwebsockets.h:806
    + +
    Definition: libwebsockets.h:804
    +
    Definition: libwebsockets.h:709
    +
    Definition: libwebsockets.h:655
    +
    Definition: libwebsockets.h:689
    +
    Definition: libwebsockets.h:830
    +
    Definition: libwebsockets.h:776
    +
    Definition: libwebsockets.h:669
    +
    Definition: libwebsockets.h:867
    + +
    Definition: libwebsockets.h:856
    + +
    Definition: libwebsockets.h:630
    +
    Definition: libwebsockets.h:808
    +
    Definition: libwebsockets.h:796
    +
    Definition: libwebsockets.h:627
    +
    Definition: libwebsockets.h:814
    +
    Definition: libwebsockets.h:620
    +
    Definition: libwebsockets.h:701
    +
    Definition: libwebsockets.h:799
    +
    Definition: libwebsockets.h:836
    +
    Definition: libwebsockets.h:676
    +
    Definition: libwebsockets.h:672
    Definition: libwebsockets.h:572
    - -
    Definition: libwebsockets.h:600
    -
    Definition: libwebsockets.h:634
    -
    Definition: libwebsockets.h:712
    -
    Definition: libwebsockets.h:598
    -
    Definition: libwebsockets.h:603
    - + +
    Definition: libwebsockets.h:640
    +
    Definition: libwebsockets.h:674
    +
    Definition: libwebsockets.h:752
    +
    Definition: libwebsockets.h:638
    +
    Definition: libwebsockets.h:643
    +
    Definition: libwebsockets.h:576
    -
    Definition: libwebsockets.h:613
    -
    Definition: libwebsockets.h:875
    -
    Definition: libwebsockets.h:592
    -
    Definition: libwebsockets.h:594
    -
    Definition: libwebsockets.h:605
    -
    Definition: libwebsockets.h:804
    +
    Definition: libwebsockets.h:653
    +
    Definition: libwebsockets.h:915
    +
    Definition: libwebsockets.h:632
    +
    Definition: libwebsockets.h:634
    +
    Definition: libwebsockets.h:645
    +
    Definition: libwebsockets.h:844
    diff --git a/doc/html/group__vhost-mounts.html b/doc/html/group__vhost-mounts.html index 4143d018..dbbc999c 100644 --- a/doc/html/group__vhost-mounts.html +++ b/doc/html/group__vhost-mounts.html @@ -129,13 +129,13 @@ Enumerations

    hand by named protocol's callback

    -
    1745  {
    1746  LWSMPRO_HTTP = 0,
    1747  LWSMPRO_HTTPS = 1,
    1748  LWSMPRO_FILE = 2,
    1749  LWSMPRO_CGI = 3,
    1750  LWSMPRO_REDIR_HTTP = 4,
    1751  LWSMPRO_REDIR_HTTPS = 5,
    1752  LWSMPRO_CALLBACK = 6,
    1753 };
    Definition: libwebsockets.h:1749
    -
    Definition: libwebsockets.h:1747
    -
    Definition: libwebsockets.h:1748
    -
    Definition: libwebsockets.h:1750
    -
    Definition: libwebsockets.h:1751
    -
    Definition: libwebsockets.h:1746
    -
    Definition: libwebsockets.h:1752
    +
    1785  {
    1786  LWSMPRO_HTTP = 0,
    1787  LWSMPRO_HTTPS = 1,
    1788  LWSMPRO_FILE = 2,
    1789  LWSMPRO_CGI = 3,
    1790  LWSMPRO_REDIR_HTTP = 4,
    1791  LWSMPRO_REDIR_HTTPS = 5,
    1792  LWSMPRO_CALLBACK = 6,
    1793 };
    Definition: libwebsockets.h:1789
    +
    Definition: libwebsockets.h:1787
    +
    Definition: libwebsockets.h:1788
    +
    Definition: libwebsockets.h:1790
    +
    Definition: libwebsockets.h:1791
    +
    Definition: libwebsockets.h:1786
    +
    Definition: libwebsockets.h:1792
    diff --git a/doc/html/libwebsockets_8h.html b/doc/html/libwebsockets_8h.html index 532b2bfe..6cb14d37 100644 --- a/doc/html/libwebsockets_8h.html +++ b/doc/html/libwebsockets_8h.html @@ -679,8 +679,8 @@ void mbed3_tcp_stream_acce   LWS_VISIBLE LWS_EXTERN void * lws_context_user (struct lws_context *context)   -LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_client_connect_via_info (struct lws_client_connect_info *ccinfo) -  +LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info (struct lws_client_connect_info *ccinfo) +  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   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 diff --git a/doc/html/libwebsockets_8h.js b/doc/html/libwebsockets_8h.js index 5e899524..ebb58553 100644 --- a/doc/html/libwebsockets_8h.js +++ b/doc/html/libwebsockets_8h.js @@ -389,7 +389,7 @@ var libwebsockets_8h = [ "lws_chunked_html_process", "group__html-chunked-substitution.html#ga643073f918c0a7016b690aae9793fd60", null ], [ "lws_client_connect", "group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3", null ], [ "lws_client_connect_extended", "group__client.html#gac6a8558b4410961a880241c2ac1271e2", null ], - [ "lws_client_connect_via_info", "group__client.html#gac30a7be106abd0cedfbb2e8b8fe3a2f5", null ], + [ "lws_client_connect_via_info", "group__client.html#ga0c966136905f467816307cfba6deb5fd", null ], [ "lws_close_reason", "group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262", null ], [ "lws_context_destroy", "group__context-and-vhost.html#ga8ee0314028755f1ddfa9428e09b4fddb", null ], [ "lws_context_user", "group__context-and-vhost.html#gaeb12f934bfd178bd2132a9e73fc641da", null ], diff --git a/doc/html/libwebsockets_8h_source.html b/doc/html/libwebsockets_8h_source.html index d96ac8c2..55b1b6a7 100644 --- a/doc/html/libwebsockets_8h_source.html +++ b/doc/html/libwebsockets_8h_source.html @@ -71,401 +71,402 @@ $(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 #ifdef MBED_OPERATORS
    101 struct sockaddr_in;
    102 #define LWS_POSIX 0
    103 #else
    104 #define LWS_POSIX 1
    105 #endif
    106 
    107 #include "lws_config.h"
    108 
    109 #if defined(WIN32) || defined(_WIN32)
    110 #ifndef WIN32_LEAN_AND_MEAN
    111 #define WIN32_LEAN_AND_MEAN
    112 #endif
    113 
    114 #include <winsock2.h>
    115 #include <ws2tcpip.h>
    116 #include <stddef.h>
    117 #include <basetsd.h>
    118 #ifndef _WIN32_WCE
    119 #include <stdint.h>
    120 #include <fcntl.h>
    121 #else
    122 #define _O_RDONLY 0x0000
    123 #define O_RDONLY _O_RDONLY
    124 #endif
    125 
    126 // Visual studio older than 2015 and WIN_CE has only _stricmp
    127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    128 #define strcasecmp _stricmp
    129 #else
    130 #define strcasecmp stricmp
    131 #endif
    132 #define getdtablesize() 30000
    133 
    134 #define LWS_INLINE __inline
    135 #define LWS_VISIBLE
    136 #define LWS_WARN_UNUSED_RESULT
    137 #define LWS_WARN_DEPRECATED
    138 
    139 #ifdef LWS_DLL
    140 #ifdef LWS_INTERNAL
    141 #define LWS_EXTERN extern __declspec(dllexport)
    142 #else
    143 #define LWS_EXTERN extern __declspec(dllimport)
    144 #endif
    145 #else
    146 #define LWS_EXTERN
    147 #endif
    148 
    149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    150 #define LWS_O_RDONLY _O_RDONLY
    151 
    152 #if !defined(_MSC_VER) || _MSC_VER < 1900 /* Visual Studio 2015 already defines this in <stdio.h> */
    153 #define snprintf _snprintf
    154 #endif
    155 
    156 #ifndef __func__
    157 #define __func__ __FUNCTION__
    158 #endif
    159 
    160 #else /* NOT WIN32 */
    161 #include <unistd.h>
    162 
    163 #if defined(__NetBSD__) || defined(__FreeBSD__)
    164 #include <netinet/in.h>
    165 #endif
    166 
    167 #define LWS_INLINE inline
    168 #define LWS_O_RDONLY O_RDONLY
    169 
    170 #ifndef MBED_OPERATORS
    171 #include <poll.h>
    172 #include <netdb.h>
    173 #define LWS_INVALID_FILE -1
    174 #else
    175 #define getdtablesize() (20)
    176 #define LWS_INVALID_FILE NULL
    177 #endif
    178 
    179 #if defined(__GNUC__)
    180 
    181 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    184 #else
    185 #define LWS_WARN_UNUSED_RESULT
    186 #endif
    187 
    188 #define LWS_VISIBLE __attribute__((visibility("default")))
    189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    190 #else
    191 #define LWS_VISIBLE
    192 #define LWS_WARN_UNUSED_RESULT
    193 #define LWS_WARN_DEPRECATED
    194 #endif
    195 
    196 #if defined(__ANDROID__)
    197 #include <unistd.h>
    198 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    199 #endif
    200 
    201 #endif
    202 
    203 #ifdef LWS_USE_LIBEV
    204 #include <ev.h>
    205 #endif /* LWS_USE_LIBEV */
    206 #ifdef LWS_USE_LIBUV
    207 #include <uv.h>
    208 #endif /* LWS_USE_LIBUV */
    209 
    210 #ifndef LWS_EXTERN
    211 #define LWS_EXTERN extern
    212 #endif
    213 
    214 #ifdef _WIN32
    215 #define random rand
    216 #else
    217 #include <sys/time.h>
    218 #include <unistd.h>
    219 #endif
    220 
    221 #ifdef LWS_OPENSSL_SUPPORT
    222 
    223 #ifdef USE_WOLFSSL
    224 #ifdef USE_OLD_CYASSL
    225 #include <cyassl/openssl/ssl.h>
    226 #include <cyassl/error-ssl.h>
    227 #else
    228 #include <wolfssl/openssl/ssl.h>
    229 #include <wolfssl/error-ssl.h>
    230 #endif /* not USE_OLD_CYASSL */
    231 #else
    232 #if defined(LWS_USE_POLARSSL)
    233 #include <polarssl/ssl.h>
    235  x509_crt ca;
    236  x509_crt certificate;
    237  rsa_context key;
    238 };
    239 typedef struct lws_polarssl_context SSL_CTX;
    240 typedef ssl_context SSL;
    241 #else
    242 #if defined(LWS_USE_MBEDTLS)
    243 #include <mbedtls/ssl.h>
    244 #else
    245 #include <openssl/ssl.h>
    246 #include <openssl/err.h>
    247 #endif /* not USE_MBEDTLS */
    248 #endif /* not USE_POLARSSL */
    249 #endif /* not USE_WOLFSSL */
    250 #endif
    251 
    252 
    253 #define CONTEXT_PORT_NO_LISTEN -1
    254 
    265 
    267 enum lws_log_levels {
    268  LLL_ERR = 1 << 0,
    269  LLL_WARN = 1 << 1,
    270  LLL_NOTICE = 1 << 2,
    271  LLL_INFO = 1 << 3,
    272  LLL_DEBUG = 1 << 4,
    273  LLL_PARSER = 1 << 5,
    274  LLL_HEADER = 1 << 6,
    275  LLL_EXT = 1 << 7,
    276  LLL_CLIENT = 1 << 8,
    277  LLL_LATENCY = 1 << 9,
    278 
    279  LLL_COUNT = 10 /* set to count of valid flags */
    280 };
    281 
    282 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    283 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    293 LWS_VISIBLE LWS_EXTERN int
    294 lwsl_timestamp(int level, char *p, int len);
    295 
    296 /* notice, warn and log are always compiled in */
    297 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    298 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    299 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    300 /*
    301  * weaker logging can be deselected at configure time using --disable-debug
    302  * that gets rid of the overhead of checking while keeping _warn and _err
    303  * active
    304  */
    305 #ifdef _DEBUG
    306 
    307 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    308 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    309 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    310 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    311 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    312 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    313 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    314 
    320 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    321 
    322 #else /* no debug */
    323 
    324 #define lwsl_info(...) {}
    325 #define lwsl_debug(...) {}
    326 #define lwsl_parser(...) {}
    327 #define lwsl_header(...) {}
    328 #define lwsl_ext(...) {}
    329 #define lwsl_client(...) {}
    330 #define lwsl_latency(...) {}
    331 #define lwsl_hexdump(a, b)
    332 
    333 #endif
    334 
    345 LWS_VISIBLE LWS_EXTERN void
    346 lws_set_log_level(int level,
    347  void (*log_emit_function)(int level, const char *line));
    348 
    358 LWS_VISIBLE LWS_EXTERN void
    359 lwsl_emit_syslog(int level, const char *line);
    360 
    362 
    363 
    364 #include <stddef.h>
    365 
    366 #ifndef lws_container_of
    367 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    368 #endif
    369 
    370 
    371 struct lws;
    372 #ifndef ARRAY_SIZE
    373 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    374 #endif
    375 
    376 /* api change list for user code to test against */
    377 
    378 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    379 
    380 /* the struct lws_protocols has the id field present */
    381 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    382 
    383 /* you can call lws_get_peer_write_allowance */
    384 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    385 
    386 /* extra parameter introduced in 917f43ab821 */
    387 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    388 
    389 /* File operations stuff exists */
    390 #define LWS_FEATURE_FOPS
    391 
    392 
    393 #if defined(_WIN32)
    394 typedef SOCKET lws_sockfd_type;
    395 typedef HANDLE lws_filefd_type;
    396 #define lws_sockfd_valid(sfd) (!!sfd)
    397 struct lws_pollfd {
    398  lws_sockfd_type fd;
    399  SHORT events;
    400  SHORT revents;
    401 };
    402 #else
    403 
    404 #if defined(MBED_OPERATORS)
    405 /* it's a class lws_conn * */
    406 typedef void * lws_sockfd_type;
    407 typedef void * lws_filefd_type;
    408 #define lws_sockfd_valid(sfd) (!!sfd)
    409 struct pollfd {
    410  lws_sockfd_type fd;
    411  short events;
    412  short revents;
    413 };
    414 #define POLLIN 0x0001
    415 #define POLLPRI 0x0002
    416 #define POLLOUT 0x0004
    417 #define POLLERR 0x0008
    418 #define POLLHUP 0x0010
    419 #define POLLNVAL 0x0020
    420 
    421 struct lws;
    422 
    423 void * mbed3_create_tcp_stream_socket(void);
    424 void mbed3_delete_tcp_stream_socket(void *sockfd);
    425 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    426 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    427 #else
    428 typedef int lws_sockfd_type;
    429 typedef int lws_filefd_type;
    430 #define lws_sockfd_valid(sfd) (sfd >= 0)
    431 #endif
    432 
    433 #define lws_pollfd pollfd
    434 #endif
    435 
    438 struct lws_pollargs {
    439  lws_sockfd_type fd;
    440  int events;
    442 };
    443 
    444 struct lws_tokens;
    445 struct lws_token_limits;
    446 
    454 
    456 /*
    457  * NOTE: These public enums are part of the abi. If you want to add one,
    458  * add it at where specified so existing users are unaffected.
    459  */
    462  LWS_CLOSE_STATUS_NOSTATUS = 0,
    524  /****** add new things just above ---^ ******/
    525 
    526  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    527 };
    528 
    541 LWS_VISIBLE LWS_EXTERN void
    542 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    543  unsigned char *buf, size_t len);
    544 
    546 
    547 struct lws;
    548 struct lws_context;
    549 /* needed even with extensions disabled for create context */
    550 struct lws_extension;
    551 
    563 
    565 
    566 /*
    567  * NOTE: These public enums are part of the abi. If you want to add one,
    568  * add it at where specified so existing users are unaffected.
    569  */
    773  /* external poll() management support */
    836  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    839  LWS_CALLBACK_CGI = 40,
    841  LWS_CALLBACK_CGI_TERMINATED = 41,
    843  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    845  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    847  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    849  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    851  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    853  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    855  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    857  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    859  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    861  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    863  LWS_CALLBACK_PROCESS_HTML = 52,
    865  LWS_CALLBACK_ADD_HEADERS = 53,
    867  LWS_CALLBACK_SESSION_INFO = 54,
    870  LWS_CALLBACK_GS_EVENT = 55,
    873  /****** add new things just above ---^ ******/
    874 
    877 };
    878 
    879 
    880 
    896 typedef int
    897 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    898  void *user, void *in, size_t len);
    900 
    910 
    912 /*
    913  * NOTE: These public enums are part of the abi. If you want to add one,
    914  * add it at where specified so existing users are unaffected.
    915  */
    916 enum lws_extension_callback_reasons {
    917  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    918  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    919  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    920  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    921  LWS_EXT_CB_CONSTRUCT = 4,
    922  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    923  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    924  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    925  LWS_EXT_CB_DESTROY = 8,
    926  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    927  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    928  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    929  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    930  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    931  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    932  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    933  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    934  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    935  LWS_EXT_CB_1HZ = 18,
    936  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    937  LWS_EXT_CB_IS_WRITEABLE = 20,
    938  LWS_EXT_CB_PAYLOAD_TX = 21,
    939  LWS_EXT_CB_PAYLOAD_RX = 22,
    940  LWS_EXT_CB_OPTION_DEFAULT = 23,
    941  LWS_EXT_CB_OPTION_SET = 24,
    942  LWS_EXT_CB_OPTION_CONFIRM = 25,
    943  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    944 
    945  /****** add new things just above ---^ ******/
    946 };
    947 
    954  /* Add new things just above here ---^
    955  * This is part of the ABI, don't needlessly break compatibility */
    956 };
    957 
    963  const char *name;
    966  /* Add new things just above here ---^
    967  * This is part of the ABI, don't needlessly break compatibility */
    968 };
    969 
    972  const char *option_name;
    974  const char *start;
    975  int len;
    976 };
    977 
    1038 typedef int
    1039 lws_extension_callback_function(struct lws_context *context,
    1040  const struct lws_extension *ext, struct lws *wsi,
    1041  enum lws_extension_callback_reasons reason,
    1042  void *user, void *in, size_t len);
    1043 
    1046  const char *name;
    1048  const char *client_offer;
    1050  /* Add new things just above here ---^
    1051  * This is part of the ABI, don't needlessly break compatibility */
    1052 };
    1053 
    1062 LWS_VISIBLE LWS_EXTERN int
    1063 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1064  const char *opt_name, const char *opt_val);
    1065 
    1066 #ifndef LWS_NO_EXTENSIONS
    1067 /* lws_get_internal_extensions() - DEPRECATED
    1068  *
    1069  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1070  * by user code along with application-specific settings. See the test
    1071  * client and server for how to do.
    1072  */
    1073 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1074 lws_get_internal_extensions() { return NULL; }
    1075 
    1086 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1087 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1088  void *ext_user, const struct lws_ext_options *opts,
    1089  const char *o, int len);
    1090 #endif
    1091 
    1104 LWS_EXTERN
    1106  struct lws_context *context, const struct lws_extension *ext,
    1107  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1108  void *user, void *in, size_t len);
    1109 
    1110 /*
    1111  * The internal exts are part of the public abi
    1112  * If we add more extensions, publish the callback here ------v
    1113  */
    1115 
    1131 
    1136  const char *name;
    1157  unsigned int id;
    1164  void *user;
    1167  /* Add new things just above here ---^
    1168  * This is part of the ABI, don't needlessly break compatibility */
    1169 };
    1170 
    1171 struct lws_vhost;
    1172 
    1181 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1182 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1183 
    1193 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1194 lws_get_protocol(struct lws *wsi);
    1195 
    1197 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1198 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1199 
    1210 LWS_VISIBLE LWS_EXTERN void *
    1211 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1212  int size);
    1213 
    1223 LWS_VISIBLE LWS_EXTERN void *
    1224 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1225 
    1234 LWS_VISIBLE LWS_EXTERN int
    1235 lws_finalize_startup(struct lws_context *context);
    1236 
    1237 #ifdef LWS_WITH_PLUGINS
    1238 
    1239 /* PLUGINS implies LIBUV */
    1240 
    1241 #define LWS_PLUGIN_API_MAGIC 180
    1242 
    1245  unsigned int api_magic;
    1246  const struct lws_protocols *protocols;
    1248  const struct lws_extension *extensions;
    1250 };
    1251 
    1252 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1253  struct lws_plugin_capability *);
    1254 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1255 
    1257 struct lws_plugin {
    1258  struct lws_plugin *list;
    1259 #if (UV_VERSION_MAJOR > 0)
    1260  uv_lib_t lib;
    1261 #else
    1262  void *l;
    1263 #endif
    1264  char name[64];
    1266 };
    1267 
    1268 #endif
    1269 
    1271 
    1272 
    1281 
    1283 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1284 
    1286 /* SHA-1 binary and hexified versions */
    1288 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1290 typedef struct { char id[41]; } lwsgw_hash;
    1291 
    1298 };
    1299 
    1302  char username[32];
    1303  char email[100];
    1304  char ip[72];
    1305  unsigned int mask;
    1307  char session[42];
    1308 };
    1309 
    1314 };
    1315 
    1318  enum lws_gs_event event;
    1319  const char *username;
    1320  const char *email;
    1321 };
    1322 
    1324 
    1325 
    1339 
    1341 /*
    1342  * NOTE: These public enums are part of the abi. If you want to add one,
    1343  * add it at where specified so existing users are unaffected.
    1344  */
    1345 
    1349  (1 << 12),
    1356  (1 << 12),
    1372  (1 << 12),
    1377  (1 << 3) |
    1378  (1 << 12),
    1396  /****** add new things just above ---^ ******/
    1397 };
    1398 
    1399 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1400 
    1411  int port;
    1416  const char *iface;
    1423  const struct lws_protocols *protocols;
    1427  const struct lws_extension *extensions;
    1435  const char *ssl_cert_filepath;
    1445  const char *ssl_ca_filepath;
    1447  const char *ssl_cipher_list;
    1451  const char *http_proxy_address;
    1454  unsigned int http_proxy_port;
    1456  int gid;
    1458  int uid;
    1460  unsigned int options;
    1462  void *user;
    1465  int ka_time;
    1475 #ifdef LWS_OPENSSL_SUPPORT
    1481 #else /* maintain structure layout either way */
    1483 #endif
    1484 
    1495  unsigned int count_threads;
    1497  unsigned int fd_limit_per_thread;
    1501  unsigned int timeout_secs;
    1506  const char *ecdh_curve;
    1508  const char *vhost_name;
    1512  const char * const *plugin_dirs;
    1521  const char *log_filepath;
    1524  const struct lws_http_mount *mounts;
    1526  const char *server_string;
    1529  unsigned int pt_serv_buf_size;
    1545  /* Add new things just above here ---^
    1546  * This is part of the ABI, don't needlessly break compatibility
    1547  *
    1548  * The below is to ensure later library versions with new
    1549  * members added above will see 0 (default) even if the app
    1550  * was not built against the newer headers.
    1551  */
    1552 
    1553  void *_unused[8];
    1554 };
    1555 
    1590 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1592 
    1601 LWS_VISIBLE LWS_EXTERN void
    1602 lws_context_destroy(struct lws_context *context);
    1603 
    1621 LWS_VISIBLE LWS_EXTERN int
    1622 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1623 
    1624 
    1625 struct lws_vhost;
    1626 
    1636 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1637 lws_create_vhost(struct lws_context *context,
    1638  struct lws_context_creation_info *info);
    1639 
    1654 LWS_VISIBLE LWS_EXTERN int
    1655 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1656  char **config_strings, int *len);
    1657 
    1673 LWS_VISIBLE LWS_EXTERN int
    1674 lwsws_get_config_vhosts(struct lws_context *context,
    1675  struct lws_context_creation_info *info, const char *d,
    1676  char **config_strings, int *len);
    1677 
    1679 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1680 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1681 
    1687 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1688 lws_get_vhost(struct lws *wsi);
    1689 
    1697 LWS_VISIBLE LWS_EXTERN int
    1698 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1699 
    1707 LWS_VISIBLE LWS_EXTERN int
    1708 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1709 
    1719 LWS_VISIBLE LWS_EXTERN void *
    1720 lws_context_user(struct lws_context *context);
    1721 
    1727 
    1737  const char *name;
    1738  const char *value;
    1739 };
    1740 
    1753 };
    1754 
    1762  const char *mountpoint;
    1764  const char *origin;
    1766  const char *def;
    1768  const char *protocol;
    1784  unsigned int auth_mask;
    1787  unsigned int cache_reusable:1;
    1788  unsigned int cache_revalidate:1;
    1789  unsigned int cache_intermediaries:1;
    1791  unsigned char origin_protocol;
    1792  unsigned char mountpoint_len;
    1793 };
    1796 
    1802 
    1808  struct lws_context *context;
    1810  const char *address;
    1812  int port;
    1816  const char *path;
    1818  const char *host;
    1820  const char *origin;
    1822  const char *protocol;
    1826  void *userdata;
    1830  const char *method;
    1833  struct lws *parent_wsi;
    1837  const char *uri_replace_from;
    1840  const char *uri_replace_to;
    1842  struct lws_vhost *vhost;
    1845  /* Add new things just above here ---^
    1846  * This is part of the ABI, don't needlessly break compatibility
    1847  *
    1848  * The below is to ensure later library versions with new
    1849  * members added above will see 0 (default) even if the app
    1850  * was not built against the newer headers.
    1851  */
    1852 
    1853  void *_unused[4];
    1854 };
    1855 
    1862 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1864 
    1885 /* deprecated, use lws_client_connect_via_info() */
    1886 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1887 lws_client_connect(struct lws_context *clients, const char *address,
    1888  int port, int ssl_connection, const char *path,
    1889  const char *host, const char *origin, const char *protocol,
    1890  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    1891 /* deprecated, use lws_client_connect_via_info() */
    1912 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1913 lws_client_connect_extended(struct lws_context *clients, const char *address,
    1914  int port, int ssl_connection, const char *path,
    1915  const char *host, const char *origin,
    1916  const char *protocol, int ietf_version_or_minus_one,
    1917  void *userdata) LWS_WARN_DEPRECATED;
    1918 
    1944 LWS_VISIBLE LWS_EXTERN int
    1946  struct lws_vhost *vhost);
    1947 
    1948 LWS_VISIBLE LWS_EXTERN int
    1949 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    1951 
    1959 
    1992 LWS_VISIBLE LWS_EXTERN int
    1993 lws_service(struct lws_context *context, int timeout_ms);
    1994 
    2006 LWS_VISIBLE LWS_EXTERN int
    2007 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2008 
    2024 LWS_VISIBLE LWS_EXTERN void
    2025 lws_cancel_service_pt(struct lws *wsi);
    2026 
    2038 LWS_VISIBLE LWS_EXTERN void
    2039 lws_cancel_service(struct lws_context *context);
    2040 
    2063 LWS_VISIBLE LWS_EXTERN int
    2064 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2065 
    2075 LWS_VISIBLE LWS_EXTERN int
    2076 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2077  int tsi);
    2078 
    2080 
    2086 
    2093 
    2112 LWS_VISIBLE LWS_EXTERN int
    2113 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2114  const char *other_headers, int other_headers_len);
    2115 LWS_VISIBLE LWS_EXTERN int
    2116 lws_serve_http_file_fragment(struct lws *wsi);
    2118 
    2129 
    2130 enum http_status {
    2131  HTTP_STATUS_OK = 200,
    2132  HTTP_STATUS_NO_CONTENT = 204,
    2133 
    2134  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2135  HTTP_STATUS_FOUND = 302,
    2136  HTTP_STATUS_SEE_OTHER = 303,
    2137 
    2138  HTTP_STATUS_BAD_REQUEST = 400,
    2139  HTTP_STATUS_UNAUTHORIZED,
    2140  HTTP_STATUS_PAYMENT_REQUIRED,
    2141  HTTP_STATUS_FORBIDDEN,
    2142  HTTP_STATUS_NOT_FOUND,
    2143  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2144  HTTP_STATUS_NOT_ACCEPTABLE,
    2145  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2146  HTTP_STATUS_REQUEST_TIMEOUT,
    2147  HTTP_STATUS_CONFLICT,
    2148  HTTP_STATUS_GONE,
    2149  HTTP_STATUS_LENGTH_REQUIRED,
    2150  HTTP_STATUS_PRECONDITION_FAILED,
    2151  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2152  HTTP_STATUS_REQ_URI_TOO_LONG,
    2153  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2154  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2155  HTTP_STATUS_EXPECTATION_FAILED,
    2156 
    2157  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2158  HTTP_STATUS_NOT_IMPLEMENTED,
    2159  HTTP_STATUS_BAD_GATEWAY,
    2160  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2161  HTTP_STATUS_GATEWAY_TIMEOUT,
    2162  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2163 };
    2164 
    2166  char *p;
    2167  int len;
    2168  int max_len;
    2169  int final;
    2170 };
    2171 
    2172 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2173 
    2175  char *start;
    2176  char swallow[16];
    2177  int pos;
    2178  void *data;
    2179  const char * const *vars;
    2182  lws_process_html_state_cb replace;
    2183 };
    2184 
    2189 LWS_VISIBLE LWS_EXTERN int
    2191  struct lws_process_html_state *s);
    2193 
    2226 
    2234 struct lws_tokens {
    2235  char *token;
    2237 };
    2238 
    2239 /* enum lws_token_indexes
    2240  * these have to be kept in sync with lextable.h / minilex.c
    2241  *
    2242  * NOTE: These public enums are part of the abi. If you want to add one,
    2243  * add it at where specified so existing users are unaffected.
    2244  */
    2245 enum lws_token_indexes {
    2246  WSI_TOKEN_GET_URI = 0,
    2247  WSI_TOKEN_POST_URI = 1,
    2248  WSI_TOKEN_OPTIONS_URI = 2,
    2249  WSI_TOKEN_HOST = 3,
    2250  WSI_TOKEN_CONNECTION = 4,
    2251  WSI_TOKEN_UPGRADE = 5,
    2252  WSI_TOKEN_ORIGIN = 6,
    2253  WSI_TOKEN_DRAFT = 7,
    2254  WSI_TOKEN_CHALLENGE = 8,
    2255  WSI_TOKEN_EXTENSIONS = 9,
    2256  WSI_TOKEN_KEY1 = 10,
    2257  WSI_TOKEN_KEY2 = 11,
    2258  WSI_TOKEN_PROTOCOL = 12,
    2259  WSI_TOKEN_ACCEPT = 13,
    2260  WSI_TOKEN_NONCE = 14,
    2261  WSI_TOKEN_HTTP = 15,
    2262  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2263  WSI_TOKEN_HTTP_ACCEPT = 17,
    2264  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2265  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2266  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2267  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2268  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2269  WSI_TOKEN_HTTP_PRAGMA = 23,
    2270  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2271  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2272  WSI_TOKEN_HTTP_COOKIE = 26,
    2273  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2274  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2275  WSI_TOKEN_HTTP_DATE = 29,
    2276  WSI_TOKEN_HTTP_RANGE = 30,
    2277  WSI_TOKEN_HTTP_REFERER = 31,
    2278  WSI_TOKEN_KEY = 32,
    2279  WSI_TOKEN_VERSION = 33,
    2280  WSI_TOKEN_SWORIGIN = 34,
    2281 
    2282  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2283  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2284  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2285  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2286  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2287 
    2288  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2289  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2290  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2291  WSI_TOKEN_HTTP_AGE = 43,
    2292  WSI_TOKEN_HTTP_ALLOW = 44,
    2293  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2294  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2295  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2296  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2297  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2298  WSI_TOKEN_HTTP_ETAG = 50,
    2299  WSI_TOKEN_HTTP_EXPECT = 51,
    2300  WSI_TOKEN_HTTP_EXPIRES = 52,
    2301  WSI_TOKEN_HTTP_FROM = 53,
    2302  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2303  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2304  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2305  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2306  WSI_TOKEN_HTTP_LINK = 58,
    2307  WSI_TOKEN_HTTP_LOCATION = 59,
    2308  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2309  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2310  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2311  WSI_TOKEN_HTTP_REFRESH = 63,
    2312  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2313  WSI_TOKEN_HTTP_SERVER = 65,
    2314  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2315  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2316  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2317  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2318  WSI_TOKEN_HTTP_VARY = 70,
    2319  WSI_TOKEN_HTTP_VIA = 71,
    2320  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2321 
    2322  WSI_TOKEN_PATCH_URI = 73,
    2323  WSI_TOKEN_PUT_URI = 74,
    2324  WSI_TOKEN_DELETE_URI = 75,
    2325 
    2326  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2327  WSI_TOKEN_PROXY = 77,
    2328  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2329  WSI_TOKEN_HTTP1_0 = 79,
    2330 
    2331  /****** add new things just above ---^ ******/
    2332 
    2333  /* use token storage to stash these internally, not for
    2334  * user use */
    2335 
    2336  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2337  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2338  _WSI_TOKEN_CLIENT_URI,
    2339  _WSI_TOKEN_CLIENT_HOST,
    2340  _WSI_TOKEN_CLIENT_ORIGIN,
    2341  _WSI_TOKEN_CLIENT_METHOD,
    2342 
    2343  /* always last real token index*/
    2344  WSI_TOKEN_COUNT,
    2345 
    2346  /* parser state additions, no storage associated */
    2347  WSI_TOKEN_NAME_PART,
    2348  WSI_TOKEN_SKIPPING,
    2349  WSI_TOKEN_SKIPPING_SAW_CR,
    2350  WSI_PARSING_COMPLETE,
    2351  WSI_INIT_TOKEN_MUXURL,
    2352 };
    2353 
    2355  unsigned short token_limit[WSI_TOKEN_COUNT];
    2356 };
    2357 
    2363 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2364 lws_token_to_string(enum lws_token_indexes token);
    2365 
    2366 
    2375 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2376 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2377 
    2387 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2388 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2389 
    2403 LWS_VISIBLE LWS_EXTERN int
    2404 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2405 
    2423 LWS_VISIBLE LWS_EXTERN int
    2424 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2425  enum lws_token_indexes h, int frag_idx);
    2426 
    2437 LWS_VISIBLE LWS_EXTERN const char *
    2438 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2440 
    2455 
    2466 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2467 lws_add_http_header_status(struct lws *wsi,
    2468  unsigned int code, unsigned char **p,
    2469  unsigned char *end);
    2482 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2483 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2484  const unsigned char *value, int length,
    2485  unsigned char **p, unsigned char *end);
    2499 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2500 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2501  const unsigned char *value, int length,
    2502  unsigned char **p, unsigned char *end);
    2513 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2514 lws_add_http_header_content_length(struct lws *wsi,
    2515  unsigned long content_length,
    2516  unsigned char **p, unsigned char *end);
    2526 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2527 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2528  unsigned char *end);
    2530 
    2549 
    2559 };
    2560 
    2574 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2575  const char *filename, char *buf, int len,
    2576  enum lws_spa_fileupload_states state);
    2577 
    2580 struct lws_spa;
    2581 
    2600 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2601 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2602  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2603  void *opt_data);
    2604 
    2612 LWS_VISIBLE LWS_EXTERN int
    2613 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2614 
    2620 LWS_VISIBLE LWS_EXTERN int
    2621 lws_spa_finalize(struct lws_spa *spa);
    2622 
    2629 LWS_VISIBLE LWS_EXTERN int
    2630 lws_spa_get_length(struct lws_spa *spa, int n);
    2631 
    2637 LWS_VISIBLE LWS_EXTERN const char *
    2638 lws_spa_get_string(struct lws_spa *spa, int n);
    2639 
    2645 LWS_VISIBLE LWS_EXTERN int
    2646 lws_spa_destroy(struct lws_spa *spa);
    2648 
    2659 
    2670 LWS_VISIBLE LWS_EXTERN const char *
    2671 lws_urlencode(char *escaped, const char *string, int len);
    2672 
    2673 /*
    2674  * URLDECODE 1 / 2
    2675  *
    2676  * This simple urldecode only operates until the first '\0' and requires the
    2677  * data to exist all at once
    2678  */
    2691 LWS_VISIBLE LWS_EXTERN int
    2692 lws_urldecode(char *string, const char *escaped, int len);
    2694 
    2703 LWS_VISIBLE LWS_EXTERN int
    2704 lws_return_http_status(struct lws *wsi, unsigned int code,
    2705  const char *html_body);
    2706 
    2717 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2718 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    2719  unsigned char **p, unsigned char *end);
    2720 
    2729 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2730 lws_http_transaction_completed(struct lws *wsi);
    2732 
    2740 
    2751 LWS_VISIBLE LWS_EXTERN const char *
    2752 lws_sql_purify(char *escaped, const char *string, int len);
    2753 
    2764 LWS_VISIBLE LWS_EXTERN const char *
    2765 lws_json_purify(char *escaped, const char *string, int len);
    2767 
    2774 
    2776 #ifdef LWS_USE_LIBEV
    2777 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    2778 
    2779 LWS_VISIBLE LWS_EXTERN int
    2780 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    2781  lws_ev_signal_cb_t *cb);
    2782 
    2783 LWS_VISIBLE LWS_EXTERN int
    2784 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    2785 
    2786 LWS_VISIBLE LWS_EXTERN void
    2787 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    2788 #endif /* LWS_USE_LIBEV */
    2789 
    2791 
    2798 #ifdef LWS_USE_LIBUV
    2800 LWS_VISIBLE LWS_EXTERN int
    2801 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    2802  uv_signal_cb cb);
    2803 
    2804 LWS_VISIBLE LWS_EXTERN void
    2805 lws_libuv_run(const struct lws_context *context, int tsi);
    2806 
    2807 LWS_VISIBLE LWS_EXTERN void
    2808 lws_libuv_stop(struct lws_context *context);
    2809 
    2810 LWS_VISIBLE LWS_EXTERN int
    2811 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    2812 
    2813 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    2814 lws_uv_getloop(struct lws_context *context, int tsi);
    2815 
    2816 LWS_VISIBLE LWS_EXTERN void
    2817 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    2818 #endif /* LWS_USE_LIBUV */
    2819 
    2826 
    2827 /*
    2828  * NOTE: These public enums are part of the abi. If you want to add one,
    2829  * add it at where specified so existing users are unaffected.
    2830  */
    2831 enum pending_timeout {
    2832  NO_PENDING_TIMEOUT = 0,
    2833  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    2834  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    2835  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    2836  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    2837  PENDING_TIMEOUT_AWAITING_PING = 5,
    2838  PENDING_TIMEOUT_CLOSE_ACK = 6,
    2839  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    2840  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    2841  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    2842  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    2843  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    2844  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    2845  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    2846  PENDING_TIMEOUT_CGI = 14,
    2847  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    2848 
    2849  /****** add new things just above ---^ ******/
    2850 };
    2851 
    2861 LWS_VISIBLE LWS_EXTERN void
    2862 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    2864 
    2870 #if !defined(LWS_SIZEOFPTR)
    2871 #define LWS_SIZEOFPTR (sizeof (void *))
    2872 #endif
    2873 #if !defined(u_int64_t)
    2874 #define u_int64_t unsigned long long
    2875 #endif
    2876 
    2877 #if defined(__x86_64__)
    2878 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    2879 #else
    2880 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    2881 #endif
    2882 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    2883  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    2884 #define LWS_PRE _LWS_PAD(4 + 10)
    2885 /* used prior to 1.7 and retained for backward compatibility */
    2886 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    2887 #define LWS_SEND_BUFFER_POST_PADDING 0
    2888 
    2889 /*
    2890  * NOTE: These public enums are part of the abi. If you want to add one,
    2891  * add it at where specified so existing users are unaffected.
    2892  */
    2907  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2908  LWS_WRITE_PING = 5,
    2909  LWS_WRITE_PONG = 6,
    2910 
    2911  /* Same as write_http but we know this write ends the transaction */
    2912  LWS_WRITE_HTTP_FINAL = 7,
    2913 
    2914  /* HTTP2 */
    2915 
    2923  /****** add new things just above ---^ ******/
    2924 
    2925  /* flags */
    2926 
    2934 };
    2935 
    2936 
    3008 LWS_VISIBLE LWS_EXTERN int
    3009 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3010  enum lws_write_protocol protocol);
    3011 
    3012 /* helper for case where buffer may be const */
    3013 #define lws_write_http(wsi, buf, len) \
    3014  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3015 
    3017 
    3036 
    3049 LWS_VISIBLE LWS_EXTERN int
    3050 lws_callback_on_writable(struct lws *wsi);
    3051 
    3065 LWS_VISIBLE LWS_EXTERN int
    3066 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3067  const struct lws_protocols *protocol);
    3068 
    3082 LWS_VISIBLE LWS_EXTERN int
    3083 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3084  const struct lws_protocols *protocol);
    3085 
    3098 LWS_VISIBLE LWS_EXTERN int
    3099 lws_callback_all_protocol(struct lws_context *context,
    3100  const struct lws_protocols *protocol, int reason);
    3101 
    3114 LWS_VISIBLE LWS_EXTERN int
    3115 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3116  const struct lws_protocols *protocol, int reason);
    3117 
    3131 LWS_VISIBLE LWS_EXTERN int
    3132 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3133 
    3141 LWS_VISIBLE LWS_EXTERN int
    3142 lws_get_socket_fd(struct lws *wsi);
    3143 
    3165 LWS_VISIBLE LWS_EXTERN size_t
    3166 lws_get_peer_write_allowance(struct lws *wsi);
    3168 
    3179 LWS_VISIBLE LWS_EXTERN int
    3180 lws_rx_flow_control(struct lws *wsi, int enable);
    3181 
    3191 LWS_VISIBLE LWS_EXTERN void
    3192 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3193  const struct lws_protocols *protocol);
    3194 
    3211 LWS_VISIBLE LWS_EXTERN size_t
    3212 lws_remaining_packet_payload(struct lws *wsi);
    3213 
    3214 
    3223 
    3236 LWS_VISIBLE LWS_EXTERN struct lws *
    3237 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3260 LWS_VISIBLE LWS_EXTERN struct lws *
    3261 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3262  const char *readbuf, size_t len);
    3264 
    3270 
    3281 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3282 lws_canonical_hostname(struct lws_context *context);
    3283 
    3298 LWS_VISIBLE LWS_EXTERN void
    3299 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3300  int name_len, char *rip, int rip_len);
    3301 
    3312 LWS_VISIBLE LWS_EXTERN const char *
    3313 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3314 
    3326 LWS_VISIBLE LWS_EXTERN int
    3327 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3328  size_t addrlen);
    3330 
    3336 
    3349 LWS_VISIBLE LWS_EXTERN int
    3350 lws_get_random(struct lws_context *context, void *buf, int len);
    3358 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3359 lws_daemonize(const char *_lock_path);
    3365 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3367 
    3374 LWS_VISIBLE LWS_EXTERN void *
    3375 lws_wsi_user(struct lws *wsi);
    3376 
    3388 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3389 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3390  const char **path);
    3391 
    3395 LWS_VISIBLE LWS_EXTERN unsigned long
    3396 lws_now_secs(void);
    3397 
    3407 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3408 lws_get_context(const struct lws *wsi);
    3409 
    3419 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3420 lws_get_count_threads(struct lws_context *context);
    3421 
    3429 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3430 lws_get_parent(const struct lws *wsi);
    3431 
    3438 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3439 lws_get_child(const struct lws *wsi);
    3440 
    3441 
    3442 /*
    3443  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3444  * It's provided in case it is
    3445  * useful when integrating with other app poll loop service code.
    3446  */
    3447 LWS_VISIBLE LWS_EXTERN int
    3448 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3449 
    3457 LWS_VISIBLE LWS_EXTERN void
    3458 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3460 
    3466 
    3473 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3474 lws_send_pipe_choked(struct lws *wsi);
    3475 
    3480 LWS_VISIBLE LWS_EXTERN int
    3481 lws_is_final_fragment(struct lws *wsi);
    3482 
    3487 LWS_VISIBLE LWS_EXTERN unsigned char
    3488 lws_get_reserved_bits(struct lws *wsi);
    3489 
    3506 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3507 lws_partial_buffered(struct lws *wsi);
    3508 
    3518 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3519 lws_frame_is_binary(struct lws *wsi);
    3520 
    3529 LWS_VISIBLE LWS_EXTERN int
    3530 lws_is_ssl(struct lws *wsi);
    3535 LWS_VISIBLE LWS_EXTERN int
    3536 lws_is_cgi(struct lws *wsi);
    3538 
    3539 
    3545 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3547 #define lws_SHA1 SHA1
    3548 #else
    3549 
    3558 LWS_VISIBLE LWS_EXTERN unsigned char *
    3559 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3560 #endif
    3561 
    3571 LWS_VISIBLE LWS_EXTERN int
    3572 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3582 LWS_VISIBLE LWS_EXTERN int
    3583 lws_b64_decode_string(const char *in, char *out, int out_size);
    3585 
    3586 
    3596 #ifdef LWS_WITH_CGI
    3597 enum lws_enum_stdinouterr {
    3598  LWS_STDIN = 0,
    3599  LWS_STDOUT = 1,
    3600  LWS_STDERR = 2,
    3601 };
    3602 
    3603 enum lws_cgi_hdr_state {
    3604  LCHS_HEADER,
    3605  LCHS_CR1,
    3606  LCHS_LF1,
    3607  LCHS_CR2,
    3608  LCHS_LF2,
    3609  LHCS_PAYLOAD,
    3610  LCHS_SINGLE_0A,
    3611 };
    3612 
    3614  struct lws **stdwsi;
    3615  enum lws_enum_stdinouterr ch;
    3616  unsigned char *data;
    3617  enum lws_cgi_hdr_state hdr_state;
    3618  int len;
    3619 };
    3620 
    3621 
    3631 LWS_VISIBLE LWS_EXTERN int
    3632 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3633  int script_uri_path_len, int timeout_secs,
    3634  const struct lws_protocol_vhost_options *mp_cgienv);
    3635 
    3641 LWS_VISIBLE LWS_EXTERN int
    3642 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3643 
    3649 LWS_VISIBLE LWS_EXTERN int
    3650 lws_cgi_kill(struct lws *wsi);
    3651 #endif
    3652 
    3654 
    3671 
    3678  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    3679  unsigned long *filelen, int flags);
    3683  int (*close)(struct lws *wsi, lws_filefd_type fd);
    3685  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    3686  long offset_from_cur_pos);
    3688  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3689  unsigned char *buf, unsigned long len);
    3691  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3692  unsigned char *buf, unsigned long len);
    3695  /* Add new things just above here ---^
    3696  * This is part of the ABI, don't needlessly break compatibility */
    3697 };
    3698 
    3704 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    3705 lws_get_fops(struct lws_context *context);
    3706 
    3715 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    3716 lws_plat_file_open(struct lws *wsi, const char *filename,
    3717  unsigned long *filelen, int flags)
    3718 {
    3719  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    3720  filelen, flags);
    3721 }
    3722 
    3729 static LWS_INLINE int
    3730 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    3731 {
    3732  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    3733 }
    3734 
    3742 static LWS_INLINE unsigned long
    3743 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    3744 {
    3745  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    3746 }
    3756 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3757 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3758  unsigned char *buf, unsigned long len)
    3759 {
    3760  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    3761  len);
    3762 }
    3772 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3773 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3774  unsigned char *buf, unsigned long len)
    3775 {
    3776  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    3777  len);
    3778 }
    3780 
    3812 #ifdef LWS_WITH_SMTP
    3813 
    3825 };
    3826 
    3828 struct lws_email {
    3829  void *data;
    3831  uv_loop_t *loop;
    3834  char email_smtp_ip[32];
    3835  char email_helo[32];
    3836  char email_from[100];
    3837  char email_to[100];
    3839  unsigned int max_content_size;
    3842  /* Fill all the callbacks before init */
    3843 
    3844  int (*on_next)(struct lws_email *email);
    3849  int (*on_sent)(struct lws_email *email);
    3854  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    3860  /* private things */
    3861  uv_timer_t timeout_email;
    3863  uv_connect_t email_connect_req;
    3864  uv_tcp_t email_client;
    3866  char email_buf[256];
    3867  char *content;
    3868 };
    3869 
    3879 LWS_VISIBLE LWS_EXTERN int
    3880 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    3881 
    3890 LWS_VISIBLE LWS_EXTERN void
    3891 lws_email_check(struct lws_email *email);
    3899 LWS_VISIBLE LWS_EXTERN void
    3900 lws_email_destroy(struct lws_email *email);
    3901 
    3902 #endif
    3903 
    3904 
    3905 #ifdef __cplusplus
    3906 }
    3907 #endif
    3908 
    3909 #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 #ifdef MBED_OPERATORS
    101 struct sockaddr_in;
    102 #define LWS_POSIX 0
    103 #else
    104 #define LWS_POSIX 1
    105 #endif
    106 
    107 #include "lws_config.h"
    108 
    109 #if defined(WIN32) || defined(_WIN32)
    110 #ifndef WIN32_LEAN_AND_MEAN
    111 #define WIN32_LEAN_AND_MEAN
    112 #endif
    113 
    114 #include <winsock2.h>
    115 #include <ws2tcpip.h>
    116 #include <stddef.h>
    117 #include <basetsd.h>
    118 #ifndef _WIN32_WCE
    119 #include <stdint.h>
    120 #include <fcntl.h>
    121 #else
    122 #define _O_RDONLY 0x0000
    123 #define O_RDONLY _O_RDONLY
    124 #endif
    125 
    126 // Visual studio older than 2015 and WIN_CE has only _stricmp
    127 #if (defined(_MSC_VER) && _MSC_VER < 1900) || defined(_WIN32_WCE)
    128 #define strcasecmp _stricmp
    129 #else
    130 #define strcasecmp stricmp
    131 #endif
    132 #define getdtablesize() 30000
    133 
    134 #define LWS_INLINE __inline
    135 #define LWS_VISIBLE
    136 #define LWS_WARN_UNUSED_RESULT
    137 #define LWS_WARN_DEPRECATED
    138 
    139 #ifdef LWS_DLL
    140 #ifdef LWS_INTERNAL
    141 #define LWS_EXTERN extern __declspec(dllexport)
    142 #else
    143 #define LWS_EXTERN extern __declspec(dllimport)
    144 #endif
    145 #else
    146 #define LWS_EXTERN
    147 #endif
    148 
    149 #define LWS_INVALID_FILE INVALID_HANDLE_VALUE
    150 #define LWS_O_RDONLY _O_RDONLY
    151 
    152 #if !defined(_MSC_VER) || _MSC_VER < 1900 /* Visual Studio 2015 already defines this in <stdio.h> */
    153 #define snprintf _snprintf
    154 #endif
    155 
    156 #ifndef __func__
    157 #define __func__ __FUNCTION__
    158 #endif
    159 
    160 #else /* NOT WIN32 */
    161 #include <unistd.h>
    162 
    163 #if defined(__NetBSD__) || defined(__FreeBSD__)
    164 #include <netinet/in.h>
    165 #endif
    166 
    167 #define LWS_INLINE inline
    168 #define LWS_O_RDONLY O_RDONLY
    169 
    170 #ifndef MBED_OPERATORS
    171 #include <poll.h>
    172 #include <netdb.h>
    173 #define LWS_INVALID_FILE -1
    174 #else
    175 #define getdtablesize() (20)
    176 #define LWS_INVALID_FILE NULL
    177 #endif
    178 
    179 #if defined(__GNUC__)
    180 
    181 /* warn_unused_result attribute only supported by GCC 3.4 or later */
    182 #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
    183 #define LWS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
    184 #else
    185 #define LWS_WARN_UNUSED_RESULT
    186 #endif
    187 
    188 #define LWS_VISIBLE __attribute__((visibility("default")))
    189 #define LWS_WARN_DEPRECATED __attribute__ ((deprecated))
    190 #else
    191 #define LWS_VISIBLE
    192 #define LWS_WARN_UNUSED_RESULT
    193 #define LWS_WARN_DEPRECATED
    194 #endif
    195 
    196 #if defined(__ANDROID__)
    197 #include <unistd.h>
    198 #define getdtablesize() sysconf(_SC_OPEN_MAX)
    199 #endif
    200 
    201 #endif
    202 
    203 #ifdef LWS_USE_LIBEV
    204 #include <ev.h>
    205 #endif /* LWS_USE_LIBEV */
    206 #ifdef LWS_USE_LIBUV
    207 #include <uv.h>
    208 #endif /* LWS_USE_LIBUV */
    209 
    210 #ifndef LWS_EXTERN
    211 #define LWS_EXTERN extern
    212 #endif
    213 
    214 #ifdef _WIN32
    215 #define random rand
    216 #else
    217 #include <sys/time.h>
    218 #include <unistd.h>
    219 #endif
    220 
    221 #ifdef LWS_OPENSSL_SUPPORT
    222 
    223 #ifdef USE_WOLFSSL
    224 #ifdef USE_OLD_CYASSL
    225 #include <cyassl/openssl/ssl.h>
    226 #include <cyassl/error-ssl.h>
    227 #else
    228 #include <wolfssl/openssl/ssl.h>
    229 #include <wolfssl/error-ssl.h>
    230 #endif /* not USE_OLD_CYASSL */
    231 #else
    232 #if defined(LWS_USE_POLARSSL)
    233 #include <polarssl/ssl.h>
    235  x509_crt ca;
    236  x509_crt certificate;
    237  rsa_context key;
    238 };
    239 typedef struct lws_polarssl_context SSL_CTX;
    240 typedef ssl_context SSL;
    241 #else
    242 #if defined(LWS_USE_MBEDTLS)
    243 #include <mbedtls/ssl.h>
    244 #else
    245 #include <openssl/ssl.h>
    246 #include <openssl/err.h>
    247 #endif /* not USE_MBEDTLS */
    248 #endif /* not USE_POLARSSL */
    249 #endif /* not USE_WOLFSSL */
    250 #endif
    251 
    252 
    253 #define CONTEXT_PORT_NO_LISTEN -1
    254 
    265 
    267 enum lws_log_levels {
    268  LLL_ERR = 1 << 0,
    269  LLL_WARN = 1 << 1,
    270  LLL_NOTICE = 1 << 2,
    271  LLL_INFO = 1 << 3,
    272  LLL_DEBUG = 1 << 4,
    273  LLL_PARSER = 1 << 5,
    274  LLL_HEADER = 1 << 6,
    275  LLL_EXT = 1 << 7,
    276  LLL_CLIENT = 1 << 8,
    277  LLL_LATENCY = 1 << 9,
    278 
    279  LLL_COUNT = 10 /* set to count of valid flags */
    280 };
    281 
    282 LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...);
    283 LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl);
    293 LWS_VISIBLE LWS_EXTERN int
    294 lwsl_timestamp(int level, char *p, int len);
    295 
    296 /* notice, warn and log are always compiled in */
    297 #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)
    298 #define lwsl_warn(...) _lws_log(LLL_WARN, __VA_ARGS__)
    299 #define lwsl_err(...) _lws_log(LLL_ERR, __VA_ARGS__)
    300 /*
    301  * weaker logging can be deselected at configure time using --disable-debug
    302  * that gets rid of the overhead of checking while keeping _warn and _err
    303  * active
    304  */
    305 #ifdef _DEBUG
    306 
    307 #define lwsl_info(...) _lws_log(LLL_INFO, __VA_ARGS__)
    308 #define lwsl_debug(...) _lws_log(LLL_DEBUG, __VA_ARGS__)
    309 #define lwsl_parser(...) _lws_log(LLL_PARSER, __VA_ARGS__)
    310 #define lwsl_header(...) _lws_log(LLL_HEADER, __VA_ARGS__)
    311 #define lwsl_ext(...) _lws_log(LLL_EXT, __VA_ARGS__)
    312 #define lwsl_client(...) _lws_log(LLL_CLIENT, __VA_ARGS__)
    313 #define lwsl_latency(...) _lws_log(LLL_LATENCY, __VA_ARGS__)
    314 
    320 LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len);
    321 
    322 #else /* no debug */
    323 
    324 #define lwsl_info(...) {}
    325 #define lwsl_debug(...) {}
    326 #define lwsl_parser(...) {}
    327 #define lwsl_header(...) {}
    328 #define lwsl_ext(...) {}
    329 #define lwsl_client(...) {}
    330 #define lwsl_latency(...) {}
    331 #define lwsl_hexdump(a, b)
    332 
    333 #endif
    334 
    345 LWS_VISIBLE LWS_EXTERN void
    346 lws_set_log_level(int level,
    347  void (*log_emit_function)(int level, const char *line));
    348 
    358 LWS_VISIBLE LWS_EXTERN void
    359 lwsl_emit_syslog(int level, const char *line);
    360 
    362 
    363 
    364 #include <stddef.h>
    365 
    366 #ifndef lws_container_of
    367 #define lws_container_of(P,T,M) ((T *)((char *)(P) - offsetof(T, M)))
    368 #endif
    369 
    370 
    371 struct lws;
    372 #ifndef ARRAY_SIZE
    373 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
    374 #endif
    375 
    376 /* api change list for user code to test against */
    377 
    378 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_ARG
    379 
    380 /* the struct lws_protocols has the id field present */
    381 #define LWS_FEATURE_PROTOCOLS_HAS_ID_FIELD
    382 
    383 /* you can call lws_get_peer_write_allowance */
    384 #define LWS_FEATURE_PROTOCOLS_HAS_PEER_WRITE_ALLOWANCE
    385 
    386 /* extra parameter introduced in 917f43ab821 */
    387 #define LWS_FEATURE_SERVE_HTTP_FILE_HAS_OTHER_HEADERS_LEN
    388 
    389 /* File operations stuff exists */
    390 #define LWS_FEATURE_FOPS
    391 
    392 
    393 #if defined(_WIN32)
    394 typedef SOCKET lws_sockfd_type;
    395 typedef HANDLE lws_filefd_type;
    396 #define lws_sockfd_valid(sfd) (!!sfd)
    397 struct lws_pollfd {
    398  lws_sockfd_type fd;
    399  SHORT events;
    400  SHORT revents;
    401 };
    402 #else
    403 
    404 #if defined(MBED_OPERATORS)
    405 /* it's a class lws_conn * */
    406 typedef void * lws_sockfd_type;
    407 typedef void * lws_filefd_type;
    408 #define lws_sockfd_valid(sfd) (!!sfd)
    409 struct pollfd {
    410  lws_sockfd_type fd;
    411  short events;
    412  short revents;
    413 };
    414 #define POLLIN 0x0001
    415 #define POLLPRI 0x0002
    416 #define POLLOUT 0x0004
    417 #define POLLERR 0x0008
    418 #define POLLHUP 0x0010
    419 #define POLLNVAL 0x0020
    420 
    421 struct lws;
    422 
    423 void * mbed3_create_tcp_stream_socket(void);
    424 void mbed3_delete_tcp_stream_socket(void *sockfd);
    425 void mbed3_tcp_stream_bind(void *sock, int port, struct lws *);
    426 void mbed3_tcp_stream_accept(void *sock, struct lws *);
    427 #else
    428 typedef int lws_sockfd_type;
    429 typedef int lws_filefd_type;
    430 #define lws_sockfd_valid(sfd) (sfd >= 0)
    431 #endif
    432 
    433 #define lws_pollfd pollfd
    434 #endif
    435 
    438 struct lws_pollargs {
    439  lws_sockfd_type fd;
    440  int events;
    442 };
    443 
    444 struct lws_tokens;
    445 struct lws_token_limits;
    446 
    454 
    456 /*
    457  * NOTE: These public enums are part of the abi. If you want to add one,
    458  * add it at where specified so existing users are unaffected.
    459  */
    462  LWS_CLOSE_STATUS_NOSTATUS = 0,
    524  /****** add new things just above ---^ ******/
    525 
    526  LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY = 9999,
    527 };
    528 
    541 LWS_VISIBLE LWS_EXTERN void
    542 lws_close_reason(struct lws *wsi, enum lws_close_status status,
    543  unsigned char *buf, size_t len);
    544 
    546 
    547 struct lws;
    548 struct lws_context;
    549 /* needed even with extensions disabled for create context */
    550 struct lws_extension;
    551 
    563 
    565 
    566 /*
    567  * NOTE: These public enums are part of the abi. If you want to add one,
    568  * add it at where specified so existing users are unaffected.
    569  */
    813  /* external poll() management support */
    876  LWS_CALLBACK_WS_EXT_DEFAULTS = 39,
    879  LWS_CALLBACK_CGI = 40,
    881  LWS_CALLBACK_CGI_TERMINATED = 41,
    883  LWS_CALLBACK_CGI_STDIN_DATA = 42,
    885  LWS_CALLBACK_CGI_STDIN_COMPLETED = 43,
    887  LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP = 44,
    889  LWS_CALLBACK_CLOSED_CLIENT_HTTP = 45,
    891  LWS_CALLBACK_RECEIVE_CLIENT_HTTP = 46,
    893  LWS_CALLBACK_COMPLETED_CLIENT_HTTP = 47,
    895  LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ = 48,
    897  LWS_CALLBACK_HTTP_BIND_PROTOCOL = 49,
    899  LWS_CALLBACK_HTTP_DROP_PROTOCOL = 50,
    901  LWS_CALLBACK_CHECK_ACCESS_RIGHTS = 51,
    903  LWS_CALLBACK_PROCESS_HTML = 52,
    905  LWS_CALLBACK_ADD_HEADERS = 53,
    907  LWS_CALLBACK_SESSION_INFO = 54,
    910  LWS_CALLBACK_GS_EVENT = 55,
    913  /****** add new things just above ---^ ******/
    914 
    917 };
    918 
    919 
    920 
    936 typedef int
    937 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
    938  void *user, void *in, size_t len);
    940 
    950 
    952 /*
    953  * NOTE: These public enums are part of the abi. If you want to add one,
    954  * add it at where specified so existing users are unaffected.
    955  */
    956 enum lws_extension_callback_reasons {
    957  LWS_EXT_CB_SERVER_CONTEXT_CONSTRUCT = 0,
    958  LWS_EXT_CB_CLIENT_CONTEXT_CONSTRUCT = 1,
    959  LWS_EXT_CB_SERVER_CONTEXT_DESTRUCT = 2,
    960  LWS_EXT_CB_CLIENT_CONTEXT_DESTRUCT = 3,
    961  LWS_EXT_CB_CONSTRUCT = 4,
    962  LWS_EXT_CB_CLIENT_CONSTRUCT = 5,
    963  LWS_EXT_CB_CHECK_OK_TO_REALLY_CLOSE = 6,
    964  LWS_EXT_CB_CHECK_OK_TO_PROPOSE_EXTENSION = 7,
    965  LWS_EXT_CB_DESTROY = 8,
    966  LWS_EXT_CB_DESTROY_ANY_WSI_CLOSING = 9,
    967  LWS_EXT_CB_ANY_WSI_ESTABLISHED = 10,
    968  LWS_EXT_CB_PACKET_RX_PREPARSE = 11,
    969  LWS_EXT_CB_PACKET_TX_PRESEND = 12,
    970  LWS_EXT_CB_PACKET_TX_DO_SEND = 13,
    971  LWS_EXT_CB_HANDSHAKE_REPLY_TX = 14,
    972  LWS_EXT_CB_FLUSH_PENDING_TX = 15,
    973  LWS_EXT_CB_EXTENDED_PAYLOAD_RX = 16,
    974  LWS_EXT_CB_CAN_PROXY_CLIENT_CONNECTION = 17,
    975  LWS_EXT_CB_1HZ = 18,
    976  LWS_EXT_CB_REQUEST_ON_WRITEABLE = 19,
    977  LWS_EXT_CB_IS_WRITEABLE = 20,
    978  LWS_EXT_CB_PAYLOAD_TX = 21,
    979  LWS_EXT_CB_PAYLOAD_RX = 22,
    980  LWS_EXT_CB_OPTION_DEFAULT = 23,
    981  LWS_EXT_CB_OPTION_SET = 24,
    982  LWS_EXT_CB_OPTION_CONFIRM = 25,
    983  LWS_EXT_CB_NAMED_OPTION_SET = 26,
    984 
    985  /****** add new things just above ---^ ******/
    986 };
    987 
    994  /* Add new things just above here ---^
    995  * This is part of the ABI, don't needlessly break compatibility */
    996 };
    997 
    1003  const char *name;
    1006  /* Add new things just above here ---^
    1007  * This is part of the ABI, don't needlessly break compatibility */
    1008 };
    1009 
    1012  const char *option_name;
    1014  const char *start;
    1015  int len;
    1016 };
    1017 
    1078 typedef int
    1079 lws_extension_callback_function(struct lws_context *context,
    1080  const struct lws_extension *ext, struct lws *wsi,
    1081  enum lws_extension_callback_reasons reason,
    1082  void *user, void *in, size_t len);
    1083 
    1086  const char *name;
    1088  const char *client_offer;
    1090  /* Add new things just above here ---^
    1091  * This is part of the ABI, don't needlessly break compatibility */
    1092 };
    1093 
    1102 LWS_VISIBLE LWS_EXTERN int
    1103 lws_set_extension_option(struct lws *wsi, const char *ext_name,
    1104  const char *opt_name, const char *opt_val);
    1105 
    1106 #ifndef LWS_NO_EXTENSIONS
    1107 /* lws_get_internal_extensions() - DEPRECATED
    1108  *
    1109  * \Deprecated There is no longer a set internal extensions table. The table is provided
    1110  * by user code along with application-specific settings. See the test
    1111  * client and server for how to do.
    1112  */
    1113 static LWS_INLINE LWS_WARN_DEPRECATED const struct lws_extension *
    1114 lws_get_internal_extensions() { return NULL; }
    1115 
    1126 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    1127 lws_ext_parse_options(const struct lws_extension *ext, struct lws *wsi,
    1128  void *ext_user, const struct lws_ext_options *opts,
    1129  const char *o, int len);
    1130 #endif
    1131 
    1144 LWS_EXTERN
    1146  struct lws_context *context, const struct lws_extension *ext,
    1147  struct lws *wsi, enum lws_extension_callback_reasons reason,
    1148  void *user, void *in, size_t len);
    1149 
    1150 /*
    1151  * The internal exts are part of the public abi
    1152  * If we add more extensions, publish the callback here ------v
    1153  */
    1155 
    1171 
    1176  const char *name;
    1197  unsigned int id;
    1204  void *user;
    1207  /* Add new things just above here ---^
    1208  * This is part of the ABI, don't needlessly break compatibility */
    1209 };
    1210 
    1211 struct lws_vhost;
    1212 
    1221 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1222 lws_vhost_name_to_protocol(struct lws_vhost *vh, const char *name);
    1223 
    1233 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1234 lws_get_protocol(struct lws *wsi);
    1235 
    1237 LWS_VISIBLE LWS_EXTERN const struct lws_protocols *
    1238 lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1239 
    1250 LWS_VISIBLE LWS_EXTERN void *
    1251 lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot,
    1252  int size);
    1253 
    1263 LWS_VISIBLE LWS_EXTERN void *
    1264 lws_protocol_vh_priv_get(struct lws_vhost *vhost, const struct lws_protocols *prot);
    1265 
    1274 LWS_VISIBLE LWS_EXTERN int
    1275 lws_finalize_startup(struct lws_context *context);
    1276 
    1277 #ifdef LWS_WITH_PLUGINS
    1278 
    1279 /* PLUGINS implies LIBUV */
    1280 
    1281 #define LWS_PLUGIN_API_MAGIC 180
    1282 
    1285  unsigned int api_magic;
    1286  const struct lws_protocols *protocols;
    1288  const struct lws_extension *extensions;
    1290 };
    1291 
    1292 typedef int (*lws_plugin_init_func)(struct lws_context *,
    1293  struct lws_plugin_capability *);
    1294 typedef int (*lws_plugin_destroy_func)(struct lws_context *);
    1295 
    1297 struct lws_plugin {
    1298  struct lws_plugin *list;
    1299 #if (UV_VERSION_MAJOR > 0)
    1300  uv_lib_t lib;
    1301 #else
    1302  void *l;
    1303 #endif
    1304  char name[64];
    1306 };
    1307 
    1308 #endif
    1309 
    1311 
    1312 
    1321 
    1323 #define LWSGS_EMAIL_CONTENT_SIZE 16384
    1324 
    1326 /* SHA-1 binary and hexified versions */
    1328 typedef struct { unsigned char bin[20]; } lwsgw_hash_bin;
    1330 typedef struct { char id[41]; } lwsgw_hash;
    1331 
    1338 };
    1339 
    1342  char username[32];
    1343  char email[100];
    1344  char ip[72];
    1345  unsigned int mask;
    1347  char session[42];
    1348 };
    1349 
    1354 };
    1355 
    1358  enum lws_gs_event event;
    1359  const char *username;
    1360  const char *email;
    1361 };
    1362 
    1364 
    1365 
    1379 
    1381 /*
    1382  * NOTE: These public enums are part of the abi. If you want to add one,
    1383  * add it at where specified so existing users are unaffected.
    1384  */
    1385 
    1389  (1 << 12),
    1396  (1 << 12),
    1412  (1 << 12),
    1417  (1 << 3) |
    1418  (1 << 12),
    1436  /****** add new things just above ---^ ******/
    1437 };
    1438 
    1439 #define lws_check_opt(c, f) (((c) & (f)) == (f))
    1440 
    1451  int port;
    1456  const char *iface;
    1463  const struct lws_protocols *protocols;
    1467  const struct lws_extension *extensions;
    1475  const char *ssl_cert_filepath;
    1485  const char *ssl_ca_filepath;
    1487  const char *ssl_cipher_list;
    1491  const char *http_proxy_address;
    1494  unsigned int http_proxy_port;
    1496  int gid;
    1498  int uid;
    1500  unsigned int options;
    1502  void *user;
    1505  int ka_time;
    1515 #ifdef LWS_OPENSSL_SUPPORT
    1521 #else /* maintain structure layout either way */
    1523 #endif
    1524 
    1535  unsigned int count_threads;
    1537  unsigned int fd_limit_per_thread;
    1541  unsigned int timeout_secs;
    1546  const char *ecdh_curve;
    1548  const char *vhost_name;
    1552  const char * const *plugin_dirs;
    1561  const char *log_filepath;
    1564  const struct lws_http_mount *mounts;
    1566  const char *server_string;
    1569  unsigned int pt_serv_buf_size;
    1585  /* Add new things just above here ---^
    1586  * This is part of the ABI, don't needlessly break compatibility
    1587  *
    1588  * The below is to ensure later library versions with new
    1589  * members added above will see 0 (default) even if the app
    1590  * was not built against the newer headers.
    1591  */
    1592 
    1593  void *_unused[8];
    1594 };
    1595 
    1630 LWS_VISIBLE LWS_EXTERN struct lws_context *
    1632 
    1641 LWS_VISIBLE LWS_EXTERN void
    1642 lws_context_destroy(struct lws_context *context);
    1643 
    1661 LWS_VISIBLE LWS_EXTERN int
    1662 lws_set_proxy(struct lws_vhost *vhost, const char *proxy);
    1663 
    1664 
    1665 struct lws_vhost;
    1666 
    1676 LWS_EXTERN LWS_VISIBLE struct lws_vhost *
    1677 lws_create_vhost(struct lws_context *context,
    1678  struct lws_context_creation_info *info);
    1679 
    1694 LWS_VISIBLE LWS_EXTERN int
    1695 lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d,
    1696  char **config_strings, int *len);
    1697 
    1713 LWS_VISIBLE LWS_EXTERN int
    1714 lwsws_get_config_vhosts(struct lws_context *context,
    1715  struct lws_context_creation_info *info, const char *d,
    1716  char **config_strings, int *len);
    1717 
    1719 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1720 lws_vhost_get(struct lws *wsi) LWS_WARN_DEPRECATED;
    1721 
    1727 LWS_VISIBLE LWS_EXTERN struct lws_vhost *
    1728 lws_get_vhost(struct lws *wsi);
    1729 
    1737 LWS_VISIBLE LWS_EXTERN int
    1738 lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len);
    1739 
    1747 LWS_VISIBLE LWS_EXTERN int
    1748 lws_json_dump_context(const struct lws_context *context, char *buf, int len);
    1749 
    1759 LWS_VISIBLE LWS_EXTERN void *
    1760 lws_context_user(struct lws_context *context);
    1761 
    1767 
    1777  const char *name;
    1778  const char *value;
    1779 };
    1780 
    1793 };
    1794 
    1802  const char *mountpoint;
    1804  const char *origin;
    1806  const char *def;
    1808  const char *protocol;
    1824  unsigned int auth_mask;
    1827  unsigned int cache_reusable:1;
    1828  unsigned int cache_revalidate:1;
    1829  unsigned int cache_intermediaries:1;
    1831  unsigned char origin_protocol;
    1832  unsigned char mountpoint_len;
    1833 };
    1836 
    1842 
    1848  struct lws_context *context;
    1850  const char *address;
    1852  int port;
    1856  const char *path;
    1858  const char *host;
    1860  const char *origin;
    1862  const char *protocol;
    1866  void *userdata;
    1870  const char *method;
    1873  struct lws *parent_wsi;
    1877  const char *uri_replace_from;
    1880  const char *uri_replace_to;
    1882  struct lws_vhost *vhost;
    1884  struct lws **pwsi;
    1896  /* Add new things just above here ---^
    1897  * This is part of the ABI, don't needlessly break compatibility
    1898  *
    1899  * The below is to ensure later library versions with new
    1900  * members added above will see 0 (default) even if the app
    1901  * was not built against the newer headers.
    1902  */
    1903 
    1904  void *_unused[4];
    1905 };
    1906 
    1914 LWS_VISIBLE LWS_EXTERN struct lws *
    1916 
    1937 /* deprecated, use lws_client_connect_via_info() */
    1938 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1939 lws_client_connect(struct lws_context *clients, const char *address,
    1940  int port, int ssl_connection, const char *path,
    1941  const char *host, const char *origin, const char *protocol,
    1942  int ietf_version_or_minus_one) LWS_WARN_DEPRECATED;
    1943 /* deprecated, use lws_client_connect_via_info() */
    1964 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    1965 lws_client_connect_extended(struct lws_context *clients, const char *address,
    1966  int port, int ssl_connection, const char *path,
    1967  const char *host, const char *origin,
    1968  const char *protocol, int ietf_version_or_minus_one,
    1969  void *userdata) LWS_WARN_DEPRECATED;
    1970 
    1996 LWS_VISIBLE LWS_EXTERN int
    1998  struct lws_vhost *vhost);
    1999 
    2000 LWS_VISIBLE LWS_EXTERN int
    2001 lws_http_client_read(struct lws *wsi, char **buf, int *len);
    2003 
    2011 
    2044 LWS_VISIBLE LWS_EXTERN int
    2045 lws_service(struct lws_context *context, int timeout_ms);
    2046 
    2058 LWS_VISIBLE LWS_EXTERN int
    2059 lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi);
    2060 
    2076 LWS_VISIBLE LWS_EXTERN void
    2077 lws_cancel_service_pt(struct lws *wsi);
    2078 
    2090 LWS_VISIBLE LWS_EXTERN void
    2091 lws_cancel_service(struct lws_context *context);
    2092 
    2115 LWS_VISIBLE LWS_EXTERN int
    2116 lws_service_fd(struct lws_context *context, struct lws_pollfd *pollfd);
    2117 
    2127 LWS_VISIBLE LWS_EXTERN int
    2128 lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
    2129  int tsi);
    2130 
    2132 
    2138 
    2145 
    2164 LWS_VISIBLE LWS_EXTERN int
    2165 lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
    2166  const char *other_headers, int other_headers_len);
    2167 LWS_VISIBLE LWS_EXTERN int
    2168 lws_serve_http_file_fragment(struct lws *wsi);
    2170 
    2181 
    2182 enum http_status {
    2183  HTTP_STATUS_OK = 200,
    2184  HTTP_STATUS_NO_CONTENT = 204,
    2185 
    2186  HTTP_STATUS_MOVED_PERMANENTLY = 301,
    2187  HTTP_STATUS_FOUND = 302,
    2188  HTTP_STATUS_SEE_OTHER = 303,
    2189 
    2190  HTTP_STATUS_BAD_REQUEST = 400,
    2191  HTTP_STATUS_UNAUTHORIZED,
    2192  HTTP_STATUS_PAYMENT_REQUIRED,
    2193  HTTP_STATUS_FORBIDDEN,
    2194  HTTP_STATUS_NOT_FOUND,
    2195  HTTP_STATUS_METHOD_NOT_ALLOWED,
    2196  HTTP_STATUS_NOT_ACCEPTABLE,
    2197  HTTP_STATUS_PROXY_AUTH_REQUIRED,
    2198  HTTP_STATUS_REQUEST_TIMEOUT,
    2199  HTTP_STATUS_CONFLICT,
    2200  HTTP_STATUS_GONE,
    2201  HTTP_STATUS_LENGTH_REQUIRED,
    2202  HTTP_STATUS_PRECONDITION_FAILED,
    2203  HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
    2204  HTTP_STATUS_REQ_URI_TOO_LONG,
    2205  HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
    2206  HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
    2207  HTTP_STATUS_EXPECTATION_FAILED,
    2208 
    2209  HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
    2210  HTTP_STATUS_NOT_IMPLEMENTED,
    2211  HTTP_STATUS_BAD_GATEWAY,
    2212  HTTP_STATUS_SERVICE_UNAVAILABLE,
    2213  HTTP_STATUS_GATEWAY_TIMEOUT,
    2214  HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
    2215 };
    2216 
    2218  char *p;
    2219  int len;
    2220  int max_len;
    2221  int final;
    2222 };
    2223 
    2224 typedef const char *(*lws_process_html_state_cb)(void *data, int index);
    2225 
    2227  char *start;
    2228  char swallow[16];
    2229  int pos;
    2230  void *data;
    2231  const char * const *vars;
    2234  lws_process_html_state_cb replace;
    2235 };
    2236 
    2241 LWS_VISIBLE LWS_EXTERN int
    2243  struct lws_process_html_state *s);
    2245 
    2278 
    2286 struct lws_tokens {
    2287  char *token;
    2289 };
    2290 
    2291 /* enum lws_token_indexes
    2292  * these have to be kept in sync with lextable.h / minilex.c
    2293  *
    2294  * NOTE: These public enums are part of the abi. If you want to add one,
    2295  * add it at where specified so existing users are unaffected.
    2296  */
    2297 enum lws_token_indexes {
    2298  WSI_TOKEN_GET_URI = 0,
    2299  WSI_TOKEN_POST_URI = 1,
    2300  WSI_TOKEN_OPTIONS_URI = 2,
    2301  WSI_TOKEN_HOST = 3,
    2302  WSI_TOKEN_CONNECTION = 4,
    2303  WSI_TOKEN_UPGRADE = 5,
    2304  WSI_TOKEN_ORIGIN = 6,
    2305  WSI_TOKEN_DRAFT = 7,
    2306  WSI_TOKEN_CHALLENGE = 8,
    2307  WSI_TOKEN_EXTENSIONS = 9,
    2308  WSI_TOKEN_KEY1 = 10,
    2309  WSI_TOKEN_KEY2 = 11,
    2310  WSI_TOKEN_PROTOCOL = 12,
    2311  WSI_TOKEN_ACCEPT = 13,
    2312  WSI_TOKEN_NONCE = 14,
    2313  WSI_TOKEN_HTTP = 15,
    2314  WSI_TOKEN_HTTP2_SETTINGS = 16,
    2315  WSI_TOKEN_HTTP_ACCEPT = 17,
    2316  WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
    2317  WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
    2318  WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
    2319  WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
    2320  WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
    2321  WSI_TOKEN_HTTP_PRAGMA = 23,
    2322  WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
    2323  WSI_TOKEN_HTTP_AUTHORIZATION = 25,
    2324  WSI_TOKEN_HTTP_COOKIE = 26,
    2325  WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
    2326  WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
    2327  WSI_TOKEN_HTTP_DATE = 29,
    2328  WSI_TOKEN_HTTP_RANGE = 30,
    2329  WSI_TOKEN_HTTP_REFERER = 31,
    2330  WSI_TOKEN_KEY = 32,
    2331  WSI_TOKEN_VERSION = 33,
    2332  WSI_TOKEN_SWORIGIN = 34,
    2333 
    2334  WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
    2335  WSI_TOKEN_HTTP_COLON_METHOD = 36,
    2336  WSI_TOKEN_HTTP_COLON_PATH = 37,
    2337  WSI_TOKEN_HTTP_COLON_SCHEME = 38,
    2338  WSI_TOKEN_HTTP_COLON_STATUS = 39,
    2339 
    2340  WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
    2341  WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
    2342  WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
    2343  WSI_TOKEN_HTTP_AGE = 43,
    2344  WSI_TOKEN_HTTP_ALLOW = 44,
    2345  WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
    2346  WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
    2347  WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
    2348  WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
    2349  WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
    2350  WSI_TOKEN_HTTP_ETAG = 50,
    2351  WSI_TOKEN_HTTP_EXPECT = 51,
    2352  WSI_TOKEN_HTTP_EXPIRES = 52,
    2353  WSI_TOKEN_HTTP_FROM = 53,
    2354  WSI_TOKEN_HTTP_IF_MATCH = 54,
    2355  WSI_TOKEN_HTTP_IF_RANGE = 55,
    2356  WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
    2357  WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
    2358  WSI_TOKEN_HTTP_LINK = 58,
    2359  WSI_TOKEN_HTTP_LOCATION = 59,
    2360  WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
    2361  WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
    2362  WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
    2363  WSI_TOKEN_HTTP_REFRESH = 63,
    2364  WSI_TOKEN_HTTP_RETRY_AFTER = 64,
    2365  WSI_TOKEN_HTTP_SERVER = 65,
    2366  WSI_TOKEN_HTTP_SET_COOKIE = 66,
    2367  WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
    2368  WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
    2369  WSI_TOKEN_HTTP_USER_AGENT = 69,
    2370  WSI_TOKEN_HTTP_VARY = 70,
    2371  WSI_TOKEN_HTTP_VIA = 71,
    2372  WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
    2373 
    2374  WSI_TOKEN_PATCH_URI = 73,
    2375  WSI_TOKEN_PUT_URI = 74,
    2376  WSI_TOKEN_DELETE_URI = 75,
    2377 
    2378  WSI_TOKEN_HTTP_URI_ARGS = 76,
    2379  WSI_TOKEN_PROXY = 77,
    2380  WSI_TOKEN_HTTP_X_REAL_IP = 78,
    2381  WSI_TOKEN_HTTP1_0 = 79,
    2382 
    2383  /****** add new things just above ---^ ******/
    2384 
    2385  /* use token storage to stash these internally, not for
    2386  * user use */
    2387 
    2388  _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
    2389  _WSI_TOKEN_CLIENT_PEER_ADDRESS,
    2390  _WSI_TOKEN_CLIENT_URI,
    2391  _WSI_TOKEN_CLIENT_HOST,
    2392  _WSI_TOKEN_CLIENT_ORIGIN,
    2393  _WSI_TOKEN_CLIENT_METHOD,
    2394 
    2395  /* always last real token index*/
    2396  WSI_TOKEN_COUNT,
    2397 
    2398  /* parser state additions, no storage associated */
    2399  WSI_TOKEN_NAME_PART,
    2400  WSI_TOKEN_SKIPPING,
    2401  WSI_TOKEN_SKIPPING_SAW_CR,
    2402  WSI_PARSING_COMPLETE,
    2403  WSI_INIT_TOKEN_MUXURL,
    2404 };
    2405 
    2407  unsigned short token_limit[WSI_TOKEN_COUNT];
    2408 };
    2409 
    2415 LWS_VISIBLE LWS_EXTERN const unsigned char *
    2416 lws_token_to_string(enum lws_token_indexes token);
    2417 
    2418 
    2427 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2428 lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h);
    2429 
    2439 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2440 lws_hdr_fragment_length(struct lws *wsi, enum lws_token_indexes h, int frag_idx);
    2441 
    2455 LWS_VISIBLE LWS_EXTERN int
    2456 lws_hdr_copy(struct lws *wsi, char *dest, int len, enum lws_token_indexes h);
    2457 
    2475 LWS_VISIBLE LWS_EXTERN int
    2476 lws_hdr_copy_fragment(struct lws *wsi, char *dest, int len,
    2477  enum lws_token_indexes h, int frag_idx);
    2478 
    2489 LWS_VISIBLE LWS_EXTERN const char *
    2490 lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
    2492 
    2507 
    2518 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2519 lws_add_http_header_status(struct lws *wsi,
    2520  unsigned int code, unsigned char **p,
    2521  unsigned char *end);
    2534 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2535 lws_add_http_header_by_name(struct lws *wsi, const unsigned char *name,
    2536  const unsigned char *value, int length,
    2537  unsigned char **p, unsigned char *end);
    2551 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2552 lws_add_http_header_by_token(struct lws *wsi, enum lws_token_indexes token,
    2553  const unsigned char *value, int length,
    2554  unsigned char **p, unsigned char *end);
    2565 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2566 lws_add_http_header_content_length(struct lws *wsi,
    2567  unsigned long content_length,
    2568  unsigned char **p, unsigned char *end);
    2578 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2579 lws_finalize_http_header(struct lws *wsi, unsigned char **p,
    2580  unsigned char *end);
    2582 
    2601 
    2611 };
    2612 
    2626 typedef int (*lws_spa_fileupload_cb)(void *data, const char *name,
    2627  const char *filename, char *buf, int len,
    2628  enum lws_spa_fileupload_states state);
    2629 
    2632 struct lws_spa;
    2633 
    2652 LWS_VISIBLE LWS_EXTERN struct lws_spa *
    2653 lws_spa_create(struct lws *wsi, const char * const *param_names,
    2654  int count_params, int max_storage, lws_spa_fileupload_cb opt_cb,
    2655  void *opt_data);
    2656 
    2664 LWS_VISIBLE LWS_EXTERN int
    2665 lws_spa_process(struct lws_spa *spa, const char *in, int len);
    2666 
    2672 LWS_VISIBLE LWS_EXTERN int
    2673 lws_spa_finalize(struct lws_spa *spa);
    2674 
    2681 LWS_VISIBLE LWS_EXTERN int
    2682 lws_spa_get_length(struct lws_spa *spa, int n);
    2683 
    2689 LWS_VISIBLE LWS_EXTERN const char *
    2690 lws_spa_get_string(struct lws_spa *spa, int n);
    2691 
    2697 LWS_VISIBLE LWS_EXTERN int
    2698 lws_spa_destroy(struct lws_spa *spa);
    2700 
    2711 
    2722 LWS_VISIBLE LWS_EXTERN const char *
    2723 lws_urlencode(char *escaped, const char *string, int len);
    2724 
    2725 /*
    2726  * URLDECODE 1 / 2
    2727  *
    2728  * This simple urldecode only operates until the first '\0' and requires the
    2729  * data to exist all at once
    2730  */
    2743 LWS_VISIBLE LWS_EXTERN int
    2744 lws_urldecode(char *string, const char *escaped, int len);
    2746 
    2755 LWS_VISIBLE LWS_EXTERN int
    2756 lws_return_http_status(struct lws *wsi, unsigned int code,
    2757  const char *html_body);
    2758 
    2769 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2770 lws_http_redirect(struct lws *wsi, int code, const unsigned char *loc, int len,
    2771  unsigned char **p, unsigned char *end);
    2772 
    2781 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    2782 lws_http_transaction_completed(struct lws *wsi);
    2784 
    2792 
    2803 LWS_VISIBLE LWS_EXTERN const char *
    2804 lws_sql_purify(char *escaped, const char *string, int len);
    2805 
    2816 LWS_VISIBLE LWS_EXTERN const char *
    2817 lws_json_purify(char *escaped, const char *string, int len);
    2819 
    2826 
    2828 #ifdef LWS_USE_LIBEV
    2829 typedef void (lws_ev_signal_cb_t)(EV_P_ struct ev_signal *w, int revents);
    2830 
    2831 LWS_VISIBLE LWS_EXTERN int
    2832 lws_ev_sigint_cfg(struct lws_context *context, int use_ev_sigint,
    2833  lws_ev_signal_cb_t *cb);
    2834 
    2835 LWS_VISIBLE LWS_EXTERN int
    2836 lws_ev_initloop(struct lws_context *context, struct ev_loop *loop, int tsi);
    2837 
    2838 LWS_VISIBLE LWS_EXTERN void
    2839 lws_ev_sigint_cb(struct ev_loop *loop, struct ev_signal *watcher, int revents);
    2840 #endif /* LWS_USE_LIBEV */
    2841 
    2843 
    2850 #ifdef LWS_USE_LIBUV
    2852 LWS_VISIBLE LWS_EXTERN int
    2853 lws_uv_sigint_cfg(struct lws_context *context, int use_uv_sigint,
    2854  uv_signal_cb cb);
    2855 
    2856 LWS_VISIBLE LWS_EXTERN void
    2857 lws_libuv_run(const struct lws_context *context, int tsi);
    2858 
    2859 LWS_VISIBLE LWS_EXTERN void
    2860 lws_libuv_stop(struct lws_context *context);
    2861 
    2862 LWS_VISIBLE LWS_EXTERN int
    2863 lws_uv_initloop(struct lws_context *context, uv_loop_t *loop, int tsi);
    2864 
    2865 LWS_VISIBLE LWS_EXTERN uv_loop_t *
    2866 lws_uv_getloop(struct lws_context *context, int tsi);
    2867 
    2868 LWS_VISIBLE LWS_EXTERN void
    2869 lws_uv_sigint_cb(uv_signal_t *watcher, int signum);
    2870 #endif /* LWS_USE_LIBUV */
    2871 
    2878 
    2879 /*
    2880  * NOTE: These public enums are part of the abi. If you want to add one,
    2881  * add it at where specified so existing users are unaffected.
    2882  */
    2883 enum pending_timeout {
    2884  NO_PENDING_TIMEOUT = 0,
    2885  PENDING_TIMEOUT_AWAITING_PROXY_RESPONSE = 1,
    2886  PENDING_TIMEOUT_AWAITING_CONNECT_RESPONSE = 2,
    2887  PENDING_TIMEOUT_ESTABLISH_WITH_SERVER = 3,
    2888  PENDING_TIMEOUT_AWAITING_SERVER_RESPONSE = 4,
    2889  PENDING_TIMEOUT_AWAITING_PING = 5,
    2890  PENDING_TIMEOUT_CLOSE_ACK = 6,
    2891  PENDING_TIMEOUT_AWAITING_EXTENSION_CONNECT_RESPONSE = 7,
    2892  PENDING_TIMEOUT_SENT_CLIENT_HANDSHAKE = 8,
    2893  PENDING_TIMEOUT_SSL_ACCEPT = 9,
    2894  PENDING_TIMEOUT_HTTP_CONTENT = 10,
    2895  PENDING_TIMEOUT_AWAITING_CLIENT_HS_SEND = 11,
    2896  PENDING_FLUSH_STORED_SEND_BEFORE_CLOSE = 12,
    2897  PENDING_TIMEOUT_SHUTDOWN_FLUSH = 13,
    2898  PENDING_TIMEOUT_CGI = 14,
    2899  PENDING_TIMEOUT_HTTP_KEEPALIVE_IDLE = 15,
    2900 
    2901  /****** add new things just above ---^ ******/
    2902 };
    2903 
    2913 LWS_VISIBLE LWS_EXTERN void
    2914 lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs);
    2916 
    2922 #if !defined(LWS_SIZEOFPTR)
    2923 #define LWS_SIZEOFPTR (sizeof (void *))
    2924 #endif
    2925 #if !defined(u_int64_t)
    2926 #define u_int64_t unsigned long long
    2927 #endif
    2928 
    2929 #if defined(__x86_64__)
    2930 #define _LWS_PAD_SIZE 16 /* Intel recommended for best performance */
    2931 #else
    2932 #define _LWS_PAD_SIZE LWS_SIZEOFPTR /* Size of a pointer on the target arch */
    2933 #endif
    2934 #define _LWS_PAD(n) (((n) % _LWS_PAD_SIZE) ? \
    2935  ((n) + (_LWS_PAD_SIZE - ((n) % _LWS_PAD_SIZE))) : (n))
    2936 #define LWS_PRE _LWS_PAD(4 + 10)
    2937 /* used prior to 1.7 and retained for backward compatibility */
    2938 #define LWS_SEND_BUFFER_PRE_PADDING LWS_PRE
    2939 #define LWS_SEND_BUFFER_POST_PADDING 0
    2940 
    2941 /*
    2942  * NOTE: These public enums are part of the abi. If you want to add one,
    2943  * add it at where specified so existing users are unaffected.
    2944  */
    2959  /* LWS_WRITE_CLOSE is handled by lws_close_reason() */
    2960  LWS_WRITE_PING = 5,
    2961  LWS_WRITE_PONG = 6,
    2962 
    2963  /* Same as write_http but we know this write ends the transaction */
    2964  LWS_WRITE_HTTP_FINAL = 7,
    2965 
    2966  /* HTTP2 */
    2967 
    2975  /****** add new things just above ---^ ******/
    2976 
    2977  /* flags */
    2978 
    2986 };
    2987 
    2988 
    3060 LWS_VISIBLE LWS_EXTERN int
    3061 lws_write(struct lws *wsi, unsigned char *buf, size_t len,
    3062  enum lws_write_protocol protocol);
    3063 
    3064 /* helper for case where buffer may be const */
    3065 #define lws_write_http(wsi, buf, len) \
    3066  lws_write(wsi, (unsigned char *)(buf), len, LWS_WRITE_HTTP)
    3067 
    3069 
    3088 
    3101 LWS_VISIBLE LWS_EXTERN int
    3102 lws_callback_on_writable(struct lws *wsi);
    3103 
    3117 LWS_VISIBLE LWS_EXTERN int
    3118 lws_callback_on_writable_all_protocol(const struct lws_context *context,
    3119  const struct lws_protocols *protocol);
    3120 
    3134 LWS_VISIBLE LWS_EXTERN int
    3135 lws_callback_on_writable_all_protocol_vhost(const struct lws_vhost *vhost,
    3136  const struct lws_protocols *protocol);
    3137 
    3150 LWS_VISIBLE LWS_EXTERN int
    3151 lws_callback_all_protocol(struct lws_context *context,
    3152  const struct lws_protocols *protocol, int reason);
    3153 
    3166 LWS_VISIBLE LWS_EXTERN int
    3167 lws_callback_all_protocol_vhost(struct lws_vhost *vh,
    3168  const struct lws_protocols *protocol, int reason);
    3169 
    3183 LWS_VISIBLE LWS_EXTERN int
    3184 lws_callback_vhost_protocols(struct lws *wsi, int reason, void *in, int len);
    3185 
    3193 LWS_VISIBLE LWS_EXTERN int
    3194 lws_get_socket_fd(struct lws *wsi);
    3195 
    3217 LWS_VISIBLE LWS_EXTERN size_t
    3218 lws_get_peer_write_allowance(struct lws *wsi);
    3220 
    3231 LWS_VISIBLE LWS_EXTERN int
    3232 lws_rx_flow_control(struct lws *wsi, int enable);
    3233 
    3243 LWS_VISIBLE LWS_EXTERN void
    3244 lws_rx_flow_allow_all_protocol(const struct lws_context *context,
    3245  const struct lws_protocols *protocol);
    3246 
    3263 LWS_VISIBLE LWS_EXTERN size_t
    3264 lws_remaining_packet_payload(struct lws *wsi);
    3265 
    3266 
    3275 
    3288 LWS_VISIBLE LWS_EXTERN struct lws *
    3289 lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd);
    3312 LWS_VISIBLE LWS_EXTERN struct lws *
    3313 lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd,
    3314  const char *readbuf, size_t len);
    3316 
    3322 
    3333 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3334 lws_canonical_hostname(struct lws_context *context);
    3335 
    3350 LWS_VISIBLE LWS_EXTERN void
    3351 lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name,
    3352  int name_len, char *rip, int rip_len);
    3353 
    3364 LWS_VISIBLE LWS_EXTERN const char *
    3365 lws_get_peer_simple(struct lws *wsi, char *name, int namelen);
    3366 
    3378 LWS_VISIBLE LWS_EXTERN int
    3379 lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
    3380  size_t addrlen);
    3382 
    3388 
    3401 LWS_VISIBLE LWS_EXTERN int
    3402 lws_get_random(struct lws_context *context, void *buf, int len);
    3410 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3411 lws_daemonize(const char *_lock_path);
    3417 LWS_VISIBLE LWS_EXTERN const char * LWS_WARN_UNUSED_RESULT
    3419 
    3426 LWS_VISIBLE LWS_EXTERN void *
    3427 lws_wsi_user(struct lws *wsi);
    3428 
    3440 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3441 lws_parse_uri(char *p, const char **prot, const char **ads, int *port,
    3442  const char **path);
    3443 
    3447 LWS_VISIBLE LWS_EXTERN unsigned long
    3448 lws_now_secs(void);
    3449 
    3459 LWS_VISIBLE LWS_EXTERN struct lws_context * LWS_WARN_UNUSED_RESULT
    3460 lws_get_context(const struct lws *wsi);
    3461 
    3471 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3472 lws_get_count_threads(struct lws_context *context);
    3473 
    3481 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3482 lws_get_parent(const struct lws *wsi);
    3483 
    3490 LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
    3491 lws_get_child(const struct lws *wsi);
    3492 
    3493 
    3494 /*
    3495  * \deprecated DEPRECATED Note: this is not normally needed as a user api.
    3496  * It's provided in case it is
    3497  * useful when integrating with other app poll loop service code.
    3498  */
    3499 LWS_VISIBLE LWS_EXTERN int
    3500 lws_read(struct lws *wsi, unsigned char *buf, size_t len);
    3501 
    3509 LWS_VISIBLE LWS_EXTERN void
    3510 lws_set_allocator(void *(*realloc)(void *ptr, size_t size));
    3512 
    3518 
    3525 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3526 lws_send_pipe_choked(struct lws *wsi);
    3527 
    3532 LWS_VISIBLE LWS_EXTERN int
    3533 lws_is_final_fragment(struct lws *wsi);
    3534 
    3539 LWS_VISIBLE LWS_EXTERN unsigned char
    3540 lws_get_reserved_bits(struct lws *wsi);
    3541 
    3558 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3559 lws_partial_buffered(struct lws *wsi);
    3560 
    3570 LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
    3571 lws_frame_is_binary(struct lws *wsi);
    3572 
    3581 LWS_VISIBLE LWS_EXTERN int
    3582 lws_is_ssl(struct lws *wsi);
    3587 LWS_VISIBLE LWS_EXTERN int
    3588 lws_is_cgi(struct lws *wsi);
    3590 
    3591 
    3597 #ifdef LWS_SHA1_USE_OPENSSL_NAME
    3599 #define lws_SHA1 SHA1
    3600 #else
    3601 
    3610 LWS_VISIBLE LWS_EXTERN unsigned char *
    3611 lws_SHA1(const unsigned char *d, size_t n, unsigned char *md);
    3612 #endif
    3613 
    3623 LWS_VISIBLE LWS_EXTERN int
    3624 lws_b64_encode_string(const char *in, int in_len, char *out, int out_size);
    3634 LWS_VISIBLE LWS_EXTERN int
    3635 lws_b64_decode_string(const char *in, char *out, int out_size);
    3637 
    3638 
    3648 #ifdef LWS_WITH_CGI
    3649 enum lws_enum_stdinouterr {
    3650  LWS_STDIN = 0,
    3651  LWS_STDOUT = 1,
    3652  LWS_STDERR = 2,
    3653 };
    3654 
    3655 enum lws_cgi_hdr_state {
    3656  LCHS_HEADER,
    3657  LCHS_CR1,
    3658  LCHS_LF1,
    3659  LCHS_CR2,
    3660  LCHS_LF2,
    3661  LHCS_PAYLOAD,
    3662  LCHS_SINGLE_0A,
    3663 };
    3664 
    3666  struct lws **stdwsi;
    3667  enum lws_enum_stdinouterr ch;
    3668  unsigned char *data;
    3669  enum lws_cgi_hdr_state hdr_state;
    3670  int len;
    3671 };
    3672 
    3673 
    3683 LWS_VISIBLE LWS_EXTERN int
    3684 lws_cgi(struct lws *wsi, const char * const *exec_array,
    3685  int script_uri_path_len, int timeout_secs,
    3686  const struct lws_protocol_vhost_options *mp_cgienv);
    3687 
    3693 LWS_VISIBLE LWS_EXTERN int
    3694 lws_cgi_write_split_stdout_headers(struct lws *wsi);
    3695 
    3701 LWS_VISIBLE LWS_EXTERN int
    3702 lws_cgi_kill(struct lws *wsi);
    3703 #endif
    3704 
    3706 
    3723 
    3730  lws_filefd_type (*open)(struct lws *wsi, const char *filename,
    3731  unsigned long *filelen, int flags);
    3735  int (*close)(struct lws *wsi, lws_filefd_type fd);
    3737  unsigned long (*seek_cur)(struct lws *wsi, lws_filefd_type fd,
    3738  long offset_from_cur_pos);
    3740  int (*read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3741  unsigned char *buf, unsigned long len);
    3743  int (*write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3744  unsigned char *buf, unsigned long len);
    3747  /* Add new things just above here ---^
    3748  * This is part of the ABI, don't needlessly break compatibility */
    3749 };
    3750 
    3756 LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops * LWS_WARN_UNUSED_RESULT
    3757 lws_get_fops(struct lws_context *context);
    3758 
    3767 static LWS_INLINE lws_filefd_type LWS_WARN_UNUSED_RESULT
    3768 lws_plat_file_open(struct lws *wsi, const char *filename,
    3769  unsigned long *filelen, int flags)
    3770 {
    3771  return lws_get_fops(lws_get_context(wsi))->open(wsi, filename,
    3772  filelen, flags);
    3773 }
    3774 
    3781 static LWS_INLINE int
    3782 lws_plat_file_close(struct lws *wsi, lws_filefd_type fd)
    3783 {
    3784  return lws_get_fops(lws_get_context(wsi))->close(wsi, fd);
    3785 }
    3786 
    3794 static LWS_INLINE unsigned long
    3795 lws_plat_file_seek_cur(struct lws *wsi, lws_filefd_type fd, long offset)
    3796 {
    3797  return lws_get_fops(lws_get_context(wsi))->seek_cur(wsi, fd, offset);
    3798 }
    3808 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3809 lws_plat_file_read(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3810  unsigned char *buf, unsigned long len)
    3811 {
    3812  return lws_get_fops(lws_get_context(wsi))->read(wsi, fd, amount, buf,
    3813  len);
    3814 }
    3824 static LWS_INLINE int LWS_WARN_UNUSED_RESULT
    3825 lws_plat_file_write(struct lws *wsi, lws_filefd_type fd, unsigned long *amount,
    3826  unsigned char *buf, unsigned long len)
    3827 {
    3828  return lws_get_fops(lws_get_context(wsi))->write(wsi, fd, amount, buf,
    3829  len);
    3830 }
    3832 
    3864 #ifdef LWS_WITH_SMTP
    3865 
    3877 };
    3878 
    3880 struct lws_email {
    3881  void *data;
    3883  uv_loop_t *loop;
    3886  char email_smtp_ip[32];
    3887  char email_helo[32];
    3888  char email_from[100];
    3889  char email_to[100];
    3891  unsigned int max_content_size;
    3894  /* Fill all the callbacks before init */
    3895 
    3896  int (*on_next)(struct lws_email *email);
    3901  int (*on_sent)(struct lws_email *email);
    3906  int (*on_get_body)(struct lws_email *email, char *buf, int len);
    3912  /* private things */
    3913  uv_timer_t timeout_email;
    3915  uv_connect_t email_connect_req;
    3916  uv_tcp_t email_client;
    3918  char email_buf[256];
    3919  char *content;
    3920 };
    3921 
    3931 LWS_VISIBLE LWS_EXTERN int
    3932 lws_email_init(struct lws_email *email, uv_loop_t *loop, int max_content);
    3933 
    3942 LWS_VISIBLE LWS_EXTERN void
    3943 lws_email_check(struct lws_email *email);
    3951 LWS_VISIBLE LWS_EXTERN void
    3952 lws_email_destroy(struct lws_email *email);
    3953 
    3954 #endif
    3955 
    3956 
    3957 #ifdef __cplusplus
    3958 }
    3959 #endif
    3960 
    3961 #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:3613
    -
    size_t rx_buffer_size
    Definition: libwebsockets.h:1148
    +
    Definition: libwebsockets.h:3665
    +
    size_t rx_buffer_size
    Definition: libwebsockets.h:1188
    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:638
    -
    Definition: libwebsockets.h:766
    +
    Definition: libwebsockets.h:678
    +
    Definition: libwebsockets.h:806
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_daemonize(const char *_lock_path)
    -
    Definition: libwebsockets.h:1749
    -
    Definition: libwebsockets.h:2904
    -
    Definition: libwebsockets.h:3818
    +
    Definition: libwebsockets.h:1789
    +
    Definition: libwebsockets.h:2956
    +
    Definition: libwebsockets.h:3870
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_readbuf(struct lws_context *context, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
    Definition: libwebsockets.h:234
    -
    unsigned int auth_mask
    Definition: libwebsockets.h:1784
    -
    Definition: libwebsockets.h:2927
    -
    void * data
    Definition: libwebsockets.h:3829
    -
    const char * uri_replace_from
    Definition: libwebsockets.h:1837
    -
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3691
    +
    unsigned int auth_mask
    Definition: libwebsockets.h:1824
    +
    Definition: libwebsockets.h:2979
    +
    void * data
    Definition: libwebsockets.h:3881
    +
    const char * uri_replace_from
    Definition: libwebsockets.h:1877
    +
    int(* write)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3743
    lws_callback_reasons
    Definition: libwebsockets.h:571
    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:1293
    + +
    lwsgs_auth_bits
    Definition: libwebsockets.h:1333
    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:764
    -
    Definition: libwebsockets.h:952
    -
    unsigned int id
    Definition: libwebsockets.h:1157
    +
    Definition: libwebsockets.h:804
    +
    Definition: libwebsockets.h:992
    +
    unsigned int id
    Definition: libwebsockets.h:1197
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_hdr_total_length(struct lws *wsi, enum lws_token_indexes h)
    -
    Definition: libwebsockets.h:950
    -
    Definition: libwebsockets.h:669
    +
    Definition: libwebsockets.h:990
    +
    Definition: libwebsockets.h:709
    LWS_VISIBLE LWS_EXTERN int lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd, int tsi)
    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_get_parent(const struct lws *wsi)
    LWS_VISIBLE LWS_EXTERN size_t lws_get_peer_write_allowance(struct lws *wsi)
    -
    Definition: libwebsockets.h:615
    +
    Definition: libwebsockets.h:655
    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:3849
    -
    Definition: libwebsockets.h:1288
    -
    Definition: libwebsockets.h:649
    -
    const char * path
    Definition: libwebsockets.h:1816
    +
    int(* on_sent)(struct lws_email *email)
    Definition: libwebsockets.h:3901
    +
    Definition: libwebsockets.h:1328
    +
    struct lws ** pwsi
    Definition: libwebsockets.h:1884
    +
    Definition: libwebsockets.h:689
    +
    const char * path
    Definition: libwebsockets.h:1856
    LWS_VISIBLE LWS_EXTERN size_t lws_remaining_packet_payload(struct lws *wsi)
    Definition: libwebsockets.h:490
    -
    Definition: libwebsockets.h:1244
    +
    Definition: libwebsockets.h:1284
    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:3865
    +
    time_t email_connect_started
    Definition: libwebsockets.h:3917
    lws_close_status
    Definition: libwebsockets.h:461
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol(struct lws_context *context, const struct lws_protocols *protocol, int reason)
    Definition: libwebsockets.h:501
    - -
    int token_len
    Definition: libwebsockets.h:2236
    -
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1524
    -
    Definition: libwebsockets.h:790
    + +
    int token_len
    Definition: libwebsockets.h:2288
    +
    const struct lws_http_mount * mounts
    Definition: libwebsockets.h:1564
    +
    Definition: libwebsockets.h:830
    LWS_VISIBLE LWS_EXTERN struct lws_context *LWS_WARN_UNUSED_RESULT lws_get_context(const struct lws *wsi)
    -
    const char * value
    Definition: libwebsockets.h:1738
    -
    Definition: libwebsockets.h:2555
    -
    Definition: libwebsockets.h:3823
    -
    const char * username
    Definition: libwebsockets.h:1319
    -
    const char * protocol
    Definition: libwebsockets.h:1768
    -
    struct lws ** stdwsi
    Definition: libwebsockets.h:3614
    +
    const char * value
    Definition: libwebsockets.h:1778
    +
    Definition: libwebsockets.h:2607
    +
    Definition: libwebsockets.h:3875
    +
    const char * username
    Definition: libwebsockets.h:1359
    +
    LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
    +
    const char * protocol
    Definition: libwebsockets.h:1808
    +
    struct lws ** stdwsi
    Definition: libwebsockets.h:3666
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
    -
    Definition: libwebsockets.h:736
    -
    Definition: libwebsockets.h:1290
    -
    int cache_max_age
    Definition: libwebsockets.h:1782
    -
    long ssl_options_clear
    Definition: libwebsockets.h:1542
    -
    Definition: libwebsockets.h:629
    -
    Definition: libwebsockets.h:1410
    +
    Definition: libwebsockets.h:776
    +
    Definition: libwebsockets.h:1330
    +
    int cache_max_age
    Definition: libwebsockets.h:1822
    +
    long ssl_options_clear
    Definition: libwebsockets.h:1582
    +
    Definition: libwebsockets.h:669
    +
    Definition: libwebsockets.h:1450
    LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
    Definition: libwebsockets.h:517
    -
    char * start
    Definition: libwebsockets.h:2175
    +
    char * start
    Definition: libwebsockets.h:2227
    LWS_VISIBLE LWS_EXTERN void lws_set_allocator(void *(*realloc)(void *ptr, size_t size))
    -
    lws_callback_function * callback
    Definition: libwebsockets.h:1139
    -
    Definition: libwebsockets.h:2894
    +
    lws_callback_function * callback
    Definition: libwebsockets.h:1179
    +
    Definition: libwebsockets.h:2946
    LWS_VISIBLE LWS_EXTERN int lws_get_socket_fd(struct lws *wsi)
    -
    Definition: libwebsockets.h:827
    - -
    const char * protocol
    Definition: libwebsockets.h:1822
    -
    Definition: libwebsockets.h:816
    -
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1529
    +
    Definition: libwebsockets.h:867
    + +
    const char * protocol
    Definition: libwebsockets.h:1862
    +
    Definition: libwebsockets.h:856
    +
    unsigned int pt_serv_buf_size
    Definition: libwebsockets.h:1569
    LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd)
    -
    int len
    Definition: libwebsockets.h:2167
    -
    int ka_time
    Definition: libwebsockets.h:1465
    -
    Definition: libwebsockets.h:1364
    +
    int len
    Definition: libwebsockets.h:2219
    +
    int ka_time
    Definition: libwebsockets.h:1505
    +
    Definition: libwebsockets.h:1404
    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))
    -
    int count_extensions
    Definition: libwebsockets.h:1249
    -
    Definition: libwebsockets.h:2898
    -
    int port
    Definition: libwebsockets.h:1812
    -
    struct lws_context * context
    Definition: libwebsockets.h:1808
    -
    Definition: libwebsockets.h:1296
    -
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:1824
    +
    int count_extensions
    Definition: libwebsockets.h:1289
    +
    Definition: libwebsockets.h:2950
    +
    int port
    Definition: libwebsockets.h:1852
    +
    struct lws_context * context
    Definition: libwebsockets.h:1848
    +
    Definition: libwebsockets.h:1336
    +
    int ietf_version_or_minus_one
    Definition: libwebsockets.h:1864
    LWS_VISIBLE LWS_EXTERN int lws_callback_all_protocol_vhost(struct lws_vhost *vh, const struct lws_protocols *protocol, int reason)
    -
    Definition: libwebsockets.h:3816
    -
    Definition: libwebsockets.h:1734
    +
    Definition: libwebsockets.h:3868
    +
    Definition: libwebsockets.h:1774
    LWS_VISIBLE LWS_EXTERN int lws_callback_on_writable(struct lws *wsi)
    -
    const char *const * vars
    Definition: libwebsockets.h:2179
    +
    const char *const * vars
    Definition: libwebsockets.h:2231
    Definition: libwebsockets.h:469
    -
    Definition: libwebsockets.h:1807
    -
    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:1039
    - -
    int len
    Definition: libwebsockets.h:975
    -
    Definition: libwebsockets.h:1759
    -
    const char * def
    Definition: libwebsockets.h:1766
    -
    Definition: libwebsockets.h:590
    -
    Definition: libwebsockets.h:1376
    -
    lws_context_options
    Definition: libwebsockets.h:1347
    -
    Definition: libwebsockets.h:768
    -
    Definition: libwebsockets.h:1313
    -
    Definition: libwebsockets.h:1383
    -
    Definition: libwebsockets.h:756
    -
    const char * option_name
    Definition: libwebsockets.h:972
    -
    Definition: libwebsockets.h:1747
    +
    Definition: libwebsockets.h:1847
    +
    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:1079
    + +
    int len
    Definition: libwebsockets.h:1015
    +
    Definition: libwebsockets.h:1799
    +
    const char * def
    Definition: libwebsockets.h:1806
    +
    Definition: libwebsockets.h:630
    +
    Definition: libwebsockets.h:1416
    +
    lws_context_options
    Definition: libwebsockets.h:1387
    +
    Definition: libwebsockets.h:808
    +
    Definition: libwebsockets.h:1353
    +
    Definition: libwebsockets.h:1423
    +
    Definition: libwebsockets.h:796
    +
    const char * option_name
    Definition: libwebsockets.h:1012
    +
    Definition: libwebsockets.h:1787
    lws_sockfd_type fd
    Definition: libwebsockets.h:439
    -
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1433
    +
    const char * ssl_private_key_password
    Definition: libwebsockets.h:1473
    short events
    Definition: libwebsockets.h:411
    -
    Definition: libwebsockets.h:1257
    -
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1248
    +
    Definition: libwebsockets.h:1297
    +
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1288
    LWS_VISIBLE LWS_EXTERN void lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
    -
    void * userdata
    Definition: libwebsockets.h:1826
    -
    Definition: libwebsockets.h:587
    -
    Definition: libwebsockets.h:774
    +
    void * userdata
    Definition: libwebsockets.h:1866
    +
    Definition: libwebsockets.h:627
    +
    Definition: libwebsockets.h:814
    LWS_VISIBLE LWS_EXTERN int lws_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
    -
    unsigned char * data
    Definition: libwebsockets.h:3616
    -
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1775
    +
    unsigned char * data
    Definition: libwebsockets.h:3668
    +
    const struct lws_protocol_vhost_options * extra_mimetypes
    Definition: libwebsockets.h:1815
    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:580
    +
    Definition: libwebsockets.h:620
    LWS_VISIBLE LWS_EXTERN const char * lws_urlencode(char *escaped, const char *string, int len)
    -
    Definition: libwebsockets.h:661
    -
    uv_loop_t * loop
    Definition: libwebsockets.h:3831
    -
    Definition: libwebsockets.h:759
    +
    Definition: libwebsockets.h:701
    +
    uv_loop_t * loop
    Definition: libwebsockets.h:3883
    +
    Definition: libwebsockets.h:799
    Definition: libwebsockets.h:72
    -
    Definition: libwebsockets.h:2930
    -
    int pos
    Definition: libwebsockets.h:2177
    -
    struct lws_plugin * list
    Definition: libwebsockets.h:1258
    +
    Definition: libwebsockets.h:2982
    +
    int pos
    Definition: libwebsockets.h:2229
    +
    struct lws_plugin * list
    Definition: libwebsockets.h:1298
    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:1485
    +
    short max_http_header_data
    Definition: libwebsockets.h:1525
    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:1482
    +
    void * provided_client_ssl_ctx
    Definition: libwebsockets.h:1522
    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:1246
    -
    Definition: libwebsockets.h:951
    -
    int ka_probes
    Definition: libwebsockets.h:1468
    +
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1286
    +
    Definition: libwebsockets.h:991
    +
    int ka_probes
    Definition: libwebsockets.h:1508
    void onError(Socket *s, socket_error_t err)
    -
    const char * origin
    Definition: libwebsockets.h:1820
    +
    const char * origin
    Definition: libwebsockets.h:1860
    SHORT revents
    Definition: libwebsockets.h:400
    -
    const char * method
    Definition: libwebsockets.h:1830
    +
    const char * method
    Definition: libwebsockets.h:1870
    LWS_VISIBLE LWS_EXTERN const char * lws_spa_get_string(struct lws_spa *spa, int n)
    -
    Definition: libwebsockets.h:1045
    +
    Definition: libwebsockets.h:1085
    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:796
    -
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:1828
    -
    unsigned char origin_protocol
    Definition: libwebsockets.h:1791
    -
    const char * log_filepath
    Definition: libwebsockets.h:1521
    -
    Definition: libwebsockets.h:636
    -
    unsigned int max_content_size
    Definition: libwebsockets.h:3839
    -
    int option_index
    Definition: libwebsockets.h:973
    +
    Definition: libwebsockets.h:836
    +
    const struct lws_extension * client_exts
    Definition: libwebsockets.h:1868
    +
    unsigned char origin_protocol
    Definition: libwebsockets.h:1831
    +
    const char * log_filepath
    Definition: libwebsockets.h:1561
    +
    Definition: libwebsockets.h:676
    +
    unsigned int max_content_size
    Definition: libwebsockets.h:3891
    +
    int option_index
    Definition: libwebsockets.h:1013
    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:632
    -
    const char * uri_replace_to
    Definition: libwebsockets.h:1840
    -
    struct lws * parent_wsi
    Definition: libwebsockets.h:1833
    +
    Definition: libwebsockets.h:672
    +
    const char * uri_replace_to
    Definition: libwebsockets.h:1880
    +
    struct lws * parent_wsi
    Definition: libwebsockets.h:1873
    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:3862
    +
    enum lwsgs_smtp_states estate
    Definition: libwebsockets.h:3914
    LWS_VISIBLE LWS_EXTERN int lws_spa_finalize(struct lws_spa *spa)
    Definition: libwebsockets.h:572
    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:1512
    -
    char name[64]
    Definition: libwebsockets.h:1264
    +
    const char *const * plugin_dirs
    Definition: libwebsockets.h:1552
    +
    char name[64]
    Definition: libwebsockets.h:1304
    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:3866
    +
    char email_buf[256]
    Definition: libwebsockets.h:3918
    LWS_VISIBLE LWS_EXTERN int lws_is_ssl(struct lws *wsi)
    -
    Definition: libwebsockets.h:1353
    -
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:3683
    -
    uv_lib_t lib
    Definition: libwebsockets.h:1260
    +
    Definition: libwebsockets.h:1393
    +
    int(* close)(struct lws *wsi, lws_filefd_type fd)
    Definition: libwebsockets.h:3735
    +
    uv_lib_t lib
    Definition: libwebsockets.h:1300
    x509_crt certificate
    Definition: libwebsockets.h:236
    LWS_VISIBLE LWS_EXTERN void lws_get_peer_addresses(struct lws *wsi, lws_sockfd_type fd, char *name, int name_len, char *rip, int rip_len)
    -
    Definition: libwebsockets.h:3817
    +
    Definition: libwebsockets.h:3869
    LWS_VISIBLE LWS_EXTERN int lws_is_cgi(struct lws *wsi)
    -
    int ssl_connection
    Definition: libwebsockets.h:1814
    -
    Definition: libwebsockets.h:1312
    -
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1476
    +
    int ssl_connection
    Definition: libwebsockets.h:1854
    +
    Definition: libwebsockets.h:1352
    +
    SSL_CTX * provided_client_ssl_ctx
    Definition: libwebsockets.h:1516
    LWS_VISIBLE LWS_EXTERN int lws_rx_flow_control(struct lws *wsi, int enable)
    -
    Definition: libwebsockets.h:2165
    +
    Definition: libwebsockets.h:2217
    LWS_VISIBLE LWS_EXTERN struct lws_plat_file_ops *LWS_WARN_UNUSED_RESULT lws_get_fops(struct lws_context *context)
    Definition: libwebsockets.h:438
    -
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1771
    -
    const char * name
    Definition: libwebsockets.h:1737
    -
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1792
    -
    Definition: libwebsockets.h:2901
    -
    Definition: libwebsockets.h:1371
    +
    const struct lws_protocol_vhost_options * cgienv
    Definition: libwebsockets.h:1811
    +
    const char * name
    Definition: libwebsockets.h:1777
    +
    unsigned char mountpoint_len
    Definition: libwebsockets.h:1832
    +
    Definition: libwebsockets.h:2953
    +
    Definition: libwebsockets.h:1411
    lws_sockfd_type fd
    Definition: libwebsockets.h:398
    -
    Definition: libwebsockets.h:1748
    +
    Definition: libwebsockets.h:1788
    LWS_VISIBLE LWS_EXTERN int lws_is_final_fragment(struct lws *wsi)
    -
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1427
    -
    Definition: libwebsockets.h:1355
    +
    const struct lws_extension * extensions
    Definition: libwebsockets.h:1467
    +
    Definition: libwebsockets.h:1395
    LWS_VISIBLE LWS_EXTERN void * lws_protocol_vh_priv_zalloc(struct lws_vhost *vhost, const struct lws_protocols *prot, int size)
    -
    Definition: libwebsockets.h:1360
    -
    lws_ext_options_types
    Definition: libwebsockets.h:949
    -
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1423
    +
    Definition: libwebsockets.h:1400
    +
    lws_ext_options_types
    Definition: libwebsockets.h:989
    +
    const struct lws_protocols * protocols
    Definition: libwebsockets.h:1463
    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:974
    -
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1447
    +
    const char * start
    Definition: libwebsockets.h:1014
    +
    const char * ssl_cipher_list
    Definition: libwebsockets.h:1487
    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:1762
    -
    const char * http_proxy_address
    Definition: libwebsockets.h:1451
    -
    LWS_VISIBLE LWS_EXTERN struct lws *LWS_WARN_UNUSED_RESULT lws_client_connect_via_info(struct lws_client_connect_info *ccinfo)
    - +
    const char * mountpoint
    Definition: libwebsockets.h:1802
    +
    const char * http_proxy_address
    Definition: libwebsockets.h:1491
    +
    rsa_context key
    Definition: libwebsockets.h:237
    -
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1435
    -
    const char * ecdh_curve
    Definition: libwebsockets.h:1506
    -
    int cgi_timeout
    Definition: libwebsockets.h:1780
    -
    Definition: libwebsockets.h:1750
    -
    Definition: libwebsockets.h:1297
    +
    const char * ssl_cert_filepath
    Definition: libwebsockets.h:1475
    +
    const char * ecdh_curve
    Definition: libwebsockets.h:1546
    +
    int cgi_timeout
    Definition: libwebsockets.h:1820
    +
    Definition: libwebsockets.h:1790
    +
    Definition: libwebsockets.h:1337
    Definition: libwebsockets.h:409
    Definition: libwebsockets.h:495
    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:600
    +
    Definition: libwebsockets.h:640
    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:634
    +
    Definition: libwebsockets.h:674
    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:1381
    +
    Definition: libwebsockets.h:1421
    LWS_VISIBLE LWS_EXTERN int lwsl_timestamp(int level, char *p, int len)
    -
    Definition: libwebsockets.h:1393
    -
    uv_timer_t timeout_email
    Definition: libwebsockets.h:3861
    -
    Definition: libwebsockets.h:1362
    -
    short max_http_header_pool
    Definition: libwebsockets.h:1488
    +
    Definition: libwebsockets.h:1433
    +
    uv_timer_t timeout_email
    Definition: libwebsockets.h:3913
    +
    Definition: libwebsockets.h:1402
    +
    short max_http_header_pool
    Definition: libwebsockets.h:1528
    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:2166
    +
    char * p
    Definition: libwebsockets.h:2218
    x509_crt ca
    Definition: libwebsockets.h:235
    -
    size_t per_session_data_size
    Definition: libwebsockets.h:1143
    +
    size_t per_session_data_size
    Definition: libwebsockets.h:1183
    Definition: libwebsockets.h:479
    -
    lwsgs_smtp_states
    Definition: libwebsockets.h:3815
    -
    Definition: libwebsockets.h:1374
    -
    Definition: libwebsockets.h:712
    -
    Definition: libwebsockets.h:598
    -
    Definition: libwebsockets.h:1135
    +
    lwsgs_smtp_states
    Definition: libwebsockets.h:3867
    +
    Definition: libwebsockets.h:1414
    +
    Definition: libwebsockets.h:752
    +
    Definition: libwebsockets.h:638
    +
    Definition: libwebsockets.h:1175
    Definition: libwebsockets.h:484
    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:1495
    -
    const char * email
    Definition: libwebsockets.h:1320
    +
    unsigned int count_threads
    Definition: libwebsockets.h:1535
    +
    const char * email
    Definition: libwebsockets.h:1360
    LWS_VISIBLE LWS_EXTERN int lws_get_random(struct lws_context *context, void *buf, int len)
    Definition: libwebsockets.h:466
    -
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:3863
    -
    const char * server_string
    Definition: libwebsockets.h:1526
    -
    Definition: libwebsockets.h:1386
    +
    uv_connect_t email_connect_req
    Definition: libwebsockets.h:3915
    +
    const char * server_string
    Definition: libwebsockets.h:1566
    +
    Definition: libwebsockets.h:1426
    SHORT events
    Definition: libwebsockets.h:399
    -
    Definition: libwebsockets.h:603
    -
    Definition: libwebsockets.h:1369
    -
    const char * vhost_name
    Definition: libwebsockets.h:1508
    -
    Definition: libwebsockets.h:1751
    +
    Definition: libwebsockets.h:643
    +
    Definition: libwebsockets.h:1409
    +
    const char * vhost_name
    Definition: libwebsockets.h:1548
    +
    Definition: libwebsockets.h:1791
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_get_protocol(struct lws *wsi)
    -
    Definition: libwebsockets.h:1295
    -
    Definition: libwebsockets.h:1317
    -
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1497
    +
    Definition: libwebsockets.h:1335
    +
    Definition: libwebsockets.h:1357
    +
    unsigned int fd_limit_per_thread
    Definition: libwebsockets.h:1537
    LWS_VISIBLE LWS_EXTERN int lws_cgi_write_split_stdout_headers(struct lws *wsi)
    -
    lws_gs_event
    Definition: libwebsockets.h:1311
    +
    lws_gs_event
    Definition: libwebsockets.h:1351
    LWS_VISIBLE LWS_EXTERN int lws_finalize_startup(struct lws_context *context)
    -
    int ka_interval
    Definition: libwebsockets.h:1472
    -
    Definition: libwebsockets.h:1294
    -
    int uid
    Definition: libwebsockets.h:1458
    -
    Definition: libwebsockets.h:2557
    +
    int ka_interval
    Definition: libwebsockets.h:1512
    +
    Definition: libwebsockets.h:1334
    +
    int uid
    Definition: libwebsockets.h:1498
    +
    Definition: libwebsockets.h:2609
    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:1136
    +
    const char * name
    Definition: libwebsockets.h:1176
    LWS_VISIBLE LWS_EXTERN int lws_init_vhost_client_ssl(const struct lws_context_creation_info *info, struct lws_vhost *vhost)
    -
    Definition: libwebsockets.h:3821
    -
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1454
    +
    Definition: libwebsockets.h:3873
    +
    unsigned int http_proxy_port
    Definition: libwebsockets.h:1494
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_partial_buffered(struct lws *wsi)
    -
    unsigned int timeout_secs
    Definition: libwebsockets.h:1501
    -
    int port
    Definition: libwebsockets.h:1411
    +
    unsigned int timeout_secs
    Definition: libwebsockets.h:1541
    +
    int port
    Definition: libwebsockets.h:1451
    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:1460
    +
    unsigned int options
    Definition: libwebsockets.h:1500
    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:1736
    +
    const struct lws_protocol_vhost_options * options
    Definition: libwebsockets.h:1776
    int prev_events
    Definition: libwebsockets.h:441
    -
    int keepalive_timeout
    Definition: libwebsockets.h:1518
    -
    Definition: libwebsockets.h:1301
    -
    Definition: libwebsockets.h:962
    -
    Definition: libwebsockets.h:2354
    +
    int keepalive_timeout
    Definition: libwebsockets.h:1558
    +
    Definition: libwebsockets.h:1341
    +
    Definition: libwebsockets.h:1002
    +
    Definition: libwebsockets.h:2406
    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:1515
    -
    const char * host
    Definition: libwebsockets.h:1818
    -
    Definition: libwebsockets.h:971
    +
    const struct lws_protocol_vhost_options * pvo
    Definition: libwebsockets.h:1555
    +
    const char * host
    Definition: libwebsockets.h:1858
    +
    Definition: libwebsockets.h:1011
    Definition: libwebsockets.h:505
    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:3618
    -
    struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1760
    +
    int len
    Definition: libwebsockets.h:3670
    +
    struct lws_http_mount * mount_next
    Definition: libwebsockets.h:1800
    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:1416
    -
    Definition: libwebsockets.h:3677
    +
    const char * iface
    Definition: libwebsockets.h:1456
    +
    Definition: libwebsockets.h:3729
    LWS_VISIBLE LWS_EXTERN void lwsl_hexdump(void *buf, size_t len)
    -
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2552
    +
    lws_spa_fileupload_states
    Definition: libwebsockets.h:2604
    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:463
    Definition: libwebsockets.h:472
    LWS_VISIBLE LWS_EXTERN const char * lws_sql_purify(char *escaped, const char *string, int len)
    -
    uv_tcp_t email_client
    Definition: libwebsockets.h:3864
    +
    uv_tcp_t email_client
    Definition: libwebsockets.h:3916
    LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len)
    Definition: libwebsockets.h:397
    Definition: libwebsockets.h:576
    -
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:3678
    -
    lws_write_protocol
    Definition: libwebsockets.h:2893
    -
    const char * client_offer
    Definition: libwebsockets.h:1048
    -
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3688
    +
    lws_filefd_type(* open)(struct lws *wsi, const char *filename, unsigned long *filelen, int flags)
    Definition: libwebsockets.h:3730
    +
    lws_write_protocol
    Definition: libwebsockets.h:2945
    +
    const char * client_offer
    Definition: libwebsockets.h:1088
    +
    int(* read)(struct lws *wsi, lws_filefd_type fd, unsigned long *amount, unsigned char *buf, unsigned long len)
    Definition: libwebsockets.h:3740
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service(struct lws_context *context)
    -
    Definition: libwebsockets.h:2553
    +
    Definition: libwebsockets.h:2605
    Definition: libwebsockets.h:477
    -
    const char * origin
    Definition: libwebsockets.h:1764
    -
    const char * name
    Definition: libwebsockets.h:963
    +
    const char * origin
    Definition: libwebsockets.h:1804
    +
    const char * name
    Definition: libwebsockets.h:1003
    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:613
    -
    const char * name
    Definition: libwebsockets.h:1046
    -
    Definition: libwebsockets.h:3820
    +
    Definition: libwebsockets.h:653
    +
    const char * name
    Definition: libwebsockets.h:1086
    +
    Definition: libwebsockets.h:3872
    short revents
    Definition: libwebsockets.h:412
    -
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1047
    -
    long ssl_options_set
    Definition: libwebsockets.h:1540
    -
    Definition: libwebsockets.h:875
    +
    lws_extension_callback_function * callback
    Definition: libwebsockets.h:1087
    +
    long ssl_options_set
    Definition: libwebsockets.h:1580
    +
    Definition: libwebsockets.h:915
    LWS_VISIBLE LWS_EXTERN const struct lws_protocols * lws_protocol_get(struct lws *wsi) LWS_WARN_DEPRECATED
    -
    unsigned int mask
    Definition: libwebsockets.h:1305
    +
    unsigned int mask
    Definition: libwebsockets.h:1345
    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:1745
    +
    lws_mount_protocols
    Definition: libwebsockets.h:1785
    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:410
    -
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1535
    -
    Definition: libwebsockets.h:1746
    +
    unsigned int max_http_header_data2
    Definition: libwebsockets.h:1575
    +
    Definition: libwebsockets.h:1786
    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:1777
    +
    const struct lws_protocol_vhost_options * interpret
    Definition: libwebsockets.h:1817
    LWS_VISIBLE LWS_EXTERN int lws_service(struct lws_context *context, int timeout_ms)
    -
    Definition: libwebsockets.h:1367
    +
    Definition: libwebsockets.h:1407
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_http_transaction_completed(struct lws *wsi)
    -
    int count_vars
    Definition: libwebsockets.h:2180
    +
    int count_vars
    Definition: libwebsockets.h:2232
    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:2234
    +
    Definition: libwebsockets.h:2286
    LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(struct lws_context_creation_info *info)
    -
    Definition: libwebsockets.h:592
    -
    void * data
    Definition: libwebsockets.h:2178
    -
    char * content
    Definition: libwebsockets.h:3867
    +
    Definition: libwebsockets.h:632
    +
    void * data
    Definition: libwebsockets.h:2230
    +
    char * content
    Definition: libwebsockets.h:3919
    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:1430
    -
    lws_process_html_state_cb replace
    Definition: libwebsockets.h:2182
    -
    Definition: libwebsockets.h:3828
    -
    const char * address
    Definition: libwebsockets.h:1810
    -
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:3685
    -
    void * user
    Definition: libwebsockets.h:1164
    +
    const struct lws_token_limits * token_limits
    Definition: libwebsockets.h:1470
    +
    lws_process_html_state_cb replace
    Definition: libwebsockets.h:2234
    +
    Definition: libwebsockets.h:3880
    +
    const char * address
    Definition: libwebsockets.h:1850
    +
    unsigned long(* seek_cur)(struct lws *wsi, lws_filefd_type fd, long offset_from_cur_pos)
    Definition: libwebsockets.h:3737
    +
    void * user
    Definition: libwebsockets.h:1204
    int events
    Definition: libwebsockets.h:440
    -
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:3854
    -
    Definition: libwebsockets.h:1752
    -
    void * user
    Definition: libwebsockets.h:1462
    -
    Definition: libwebsockets.h:3824
    -
    Definition: libwebsockets.h:2916
    -
    char * token
    Definition: libwebsockets.h:2235
    +
    int(* on_get_body)(struct lws_email *email, char *buf, int len)
    Definition: libwebsockets.h:3906
    +
    Definition: libwebsockets.h:1792
    +
    void * user
    Definition: libwebsockets.h:1502
    +
    Definition: libwebsockets.h:3876
    +
    Definition: libwebsockets.h:2968
    +
    char * token
    Definition: libwebsockets.h:2287
    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:1247
    -
    void * l
    Definition: libwebsockets.h:1262
    -
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1439
    -
    int max_len
    Definition: libwebsockets.h:2168
    -
    Definition: libwebsockets.h:594
    -
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1735
    -
    Definition: libwebsockets.h:605
    +
    int count_protocols
    Definition: libwebsockets.h:1287
    +
    void * l
    Definition: libwebsockets.h:1302
    +
    const char * ssl_private_key_filepath
    Definition: libwebsockets.h:1479
    +
    int max_len
    Definition: libwebsockets.h:2220
    +
    Definition: libwebsockets.h:634
    +
    const struct lws_protocol_vhost_options * next
    Definition: libwebsockets.h:1775
    +
    Definition: libwebsockets.h:645
    LWS_VISIBLE LWS_EXTERN void lws_rx_flow_allow_all_protocol(const struct lws_context *context, const struct lws_protocols *protocol)
    -
    Definition: libwebsockets.h:2174
    +
    Definition: libwebsockets.h:2226
    LWS_VISIBLE LWS_EXTERN const char *LWS_WARN_UNUSED_RESULT lws_canonical_hostname(struct lws_context *context)
    -
    Definition: libwebsockets.h:804
    -
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1445
    -
    int gid
    Definition: libwebsockets.h:1456
    -
    struct lws_vhost * vhost
    Definition: libwebsockets.h:1842
    -
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:897
    +
    Definition: libwebsockets.h:844
    +
    const char * ssl_ca_filepath
    Definition: libwebsockets.h:1485
    +
    int gid
    Definition: libwebsockets.h:1496
    +
    struct lws_vhost * vhost
    Definition: libwebsockets.h:1882
    +
    int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
    Definition: libwebsockets.h:937
    LWS_VISIBLE LWS_EXTERN void lws_cancel_service_pt(struct lws *wsi)
    -
    Definition: libwebsockets.h:1388
    +
    Definition: libwebsockets.h:1428
    Definition: libwebsockets.h:513
    -
    Definition: libwebsockets.h:3819
    -
    unsigned int api_magic
    Definition: libwebsockets.h:1245
    -
    Definition: libwebsockets.h:1391
    +
    Definition: libwebsockets.h:3871
    +
    unsigned int api_magic
    Definition: libwebsockets.h:1285
    +
    Definition: libwebsockets.h:1431
    LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT lws_send_pipe_choked(struct lws *wsi)
    -
    Definition: libwebsockets.h:3822
    -
    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:2574
    +
    Definition: libwebsockets.h:3874
    +
    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:2626
    diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js index ce87d947..fbd1f9e7 100644 --- a/doc/html/navtreeindex0.js +++ b/doc/html/navtreeindex0.js @@ -52,8 +52,8 @@ var NAVTREEINDEX0 = "group__HTTP-headers-read.html#ga2c0597b2ef1d2cee35736c338bcbd17b":[9,0,0,0,141], "group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[9,0,0,0,95], "group__HTTP-headers-read.html#ga594f3d0ece5b09c2ccf9f98ea533bb4e":[7,6,4,5], -"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[7,6,4,3], "group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[9,0,0,0,93], +"group__HTTP-headers-read.html#ga6ce6aa1c0155ea42b7708bed271d1c77":[7,6,4,3], "group__HTTP-headers-read.html#ga6e747906f9d76532ec118d6ef418b82e":[9,0,0,0,30], "group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[9,0,0,0,91], "group__HTTP-headers-read.html#ga84e9ce5e71a77501a0998ac403a984c2":[7,6,4,2], @@ -187,15 +187,15 @@ var NAVTREEINDEX0 = "group__callback-when-writeable.html#gacf04bbe089f47c971c6408c5efe2ac70":[9,0,0,0,45], "group__cgi.html":[7,19], "group__client.html":[7,2], +"group__client.html#ga0c966136905f467816307cfba6deb5fd":[7,2,3], +"group__client.html#ga0c966136905f467816307cfba6deb5fd":[9,0,0,0,60], "group__client.html#ga4450c34200bf9dab3beb90ef23221870":[9,0,0,0,97], "group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[7,2,1], "group__client.html#ga4af0a20108a95e8b6d94dd4d80055ff3":[9,0,0,0,58], "group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[7,2,4], "group__client.html#ga4f44b8230e6732816ca5cd8d1aaaf340":[9,0,0,0,100], -"group__client.html#gac30a7be106abd0cedfbb2e8b8fe3a2f5":[7,2,3], -"group__client.html#gac30a7be106abd0cedfbb2e8b8fe3a2f5":[9,0,0,0,60], -"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[9,0,0,0,59], "group__client.html#gac6a8558b4410961a880241c2ac1271e2":[7,2,2], +"group__client.html#gac6a8558b4410961a880241c2ac1271e2":[9,0,0,0,59], "group__context-and-vhost.html":[7,4], "group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[7,4,8], "group__context-and-vhost.html#ga06e77ce2916f8bc9826ef8d9d68e3932":[9,0,0,0,92], diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js index 86fdf3e5..408efbc0 100644 --- a/doc/html/navtreeindex1.js +++ b/doc/html/navtreeindex1.js @@ -135,8 +135,8 @@ var NAVTREEINDEX1 = "group__http.html":[7,6], "group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[9,0,0,0,98], "group__http.html#ga8fbf01e473ac421fc33ad9f8da8b8a25":[7,6,7], -"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[7,6,9], "group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[9,0,0,0,118], +"group__http.html#gac8a4a71240857dc6b2ed70456b6923f4":[7,6,9], "group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[9,0,0,0,99], "group__http.html#gad27aed6c66a41b2b89ffe4da2a309e8a":[7,6,8], "group__httpft.html":[7,6,2], @@ -152,8 +152,8 @@ var NAVTREEINDEX1 = "group__log.html#ga74eb146969f0595e12ea835851b4588e":[9,0,0,0,36], "group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[9,0,0,0,153], "group__log.html#ga898b1f03872ad019f507d4e35bbefa90":[7,7,2], -"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[7,7,1], "group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[9,0,0,0,152], +"group__log.html#gab7c0fc936cc9f1eb58e2bb234c15147c":[7,7,1], "group__log.html#gaf5f07837692b2f231a79da8a058288aa":[9,0,0,0,35], "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa083a44e71966a0e768426e477e1bc358":[9,0,0,0,27,8], "group__log.html#gga14542b84d2c76efa7814124bb10f9c5fa2be9c1d50d05756078e9abc72c9e50cc":[9,0,0,0,27,5], @@ -191,8 +191,8 @@ var NAVTREEINDEX1 = "group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[9,0,0,0,66], "group__misc.html#gace5171b1dbbc03ec89a98f8afdb5c9af":[7,8,0], "group__net.html":[7,9], -"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,0,0,0,84], "group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[7,9,1], +"group__net.html#ga092e5f473b3347f03ffeef8a950080f3":[9,0,0,0,84], "group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[7,9,3], "group__net.html#ga869d8bdffb0f2a7ce08e3ce10d6be3d8":[9,0,0,0,101], "group__net.html#gad01014fed09759741b6d23afccfdaacc":[7,9,2], diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js index cdbb2cc6..578f950d 100644 --- a/doc/html/navtreeindex2.js +++ b/doc/html/navtreeindex2.js @@ -1,8 +1,8 @@ var NAVTREEINDEX2 = { "group__smtp.html#ga25298a5afc1074e13b2d5711a86432b2":[9,0,0,0,68], -"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[7,14,2], "group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[9,0,0,0,67], +"group__smtp.html#ga5e535e346d92a9daf00be33abf79d4eb":[7,14,2], "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[7,14,4], "group__smtp.html#ga77fc9b56a1bb39484844981ec375fc29":[9,0,0,0,69], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad":[7,14,1,3], @@ -17,15 +17,15 @@ var NAVTREEINDEX2 = "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14":[9,0,0,0,33,6], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[7,14,1,4], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab":[9,0,0,0,33,4], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[7,14,1,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[9,0,0,0,33,5], -"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,0,0,0,33,2], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83":[7,14,1,5], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[7,14,1,2], +"group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d":[9,0,0,0,33,2], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[7,14,1,1], "group__smtp.html#gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933":[9,0,0,0,33,1], "group__sock-adopt.html":[7,15], -"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,0,0,0,42], "group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[7,15,1], +"group__sock-adopt.html#gab2d045df0f81afe00891aaed312d552b":[9,0,0,0,42], "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[7,15,0], "group__sock-adopt.html#gabe71b7462afb21c767bdc67334f305af":[9,0,0,0,41], "group__timeout.html":[7,3], @@ -65,8 +65,8 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493":[7,16,1,22], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79":[9,0,0,0,19,36], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79":[7,16,1,36], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[7,16,1,9], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[9,0,0,0,19,9], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9":[7,16,1,9], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a182a4a14c3278784505cea6d516a8308":[9,0,0,0,19,47], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46":[9,0,0,0,19,26], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46":[7,16,1,26], @@ -84,8 +84,8 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a45d538082dec32dbecfe9d9a05ddfecd":[9,0,0,0,19,50], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[9,0,0,0,19,4], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8":[7,16,1,4], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[7,16,1,6], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[9,0,0,0,19,6], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c":[7,16,1,6], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa":[9,0,0,0,19,28], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa":[7,16,1,28], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a659539cfa65c66e0d813113b09900d31":[9,0,0,0,19,42], @@ -96,13 +96,13 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604":[7,16,1,3], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[9,0,0,0,19,11], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc":[7,16,1,11], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,0,0,0,19,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[7,16,1,5], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba":[9,0,0,0,19,5], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[7,16,1,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428":[9,0,0,0,19,35], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a89862929a72bff65257ca1d51a0fce4d":[9,0,0,0,19,52], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[7,16,1,10], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[9,0,0,0,19,10], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514":[7,16,1,10], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[9,0,0,0,19,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f":[7,16,1,24], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a":[9,0,0,0,19,56], @@ -151,8 +151,8 @@ var NAVTREEINDEX2 = "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3":[7,16,1,19], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7af6cf80e57aae8ba0a57a5c456b1fe026":[9,0,0,0,19,55], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afc4b2f72cc9e424a750b506ce0cc4310":[9,0,0,0,19,51], -"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,0,0,0,19,29], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[7,16,1,29], +"group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01":[9,0,0,0,19,29], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[9,0,0,0,19,16], "group__usercb.html#ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09":[7,16,1,16], "group__uv.html":[7,22], @@ -165,23 +165,23 @@ var NAVTREEINDEX2 = "group__vhost-mounts.html":[7,4,0], "group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[7,4,0,2], "group__vhost-mounts.html#ga31eca18e50cb4357480f2fcad36ff437":[9,0,0,0,28], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,0,0,0,28,3], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[7,4,0,2,3], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69":[9,0,0,0,28,3], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[7,4,0,2,0], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0":[9,0,0,0,28,0], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[7,4,0,2,2], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[9,0,0,0,28,2], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2":[7,4,0,2,2], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[7,4,0,2,5], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67":[9,0,0,0,28,5], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,0,0,0,28,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[7,4,0,2,6], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,0,0,0,28,4], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da":[9,0,0,0,28,6], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[7,4,0,2,4], -"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[7,4,0,2,1], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970":[9,0,0,0,28,4], "group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[9,0,0,0,28,1], +"group__vhost-mounts.html#gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1":[7,4,0,2,1], "group__wsclose.html":[7,17], -"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[7,17,1], "group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[9,0,0,0,61], +"group__wsclose.html#gaa1c863415d1783cd8de7938aa6efa262":[7,17,1], "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[9,0,0,0,21], "group__wsclose.html#gae399c571df32ba532c0ca67da9284985":[7,17,0], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a1bb501d212fa4d57053db681b1dfab98":[9,0,0,0,21,3], @@ -195,14 +195,14 @@ var NAVTREEINDEX2 = "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a462c99b05459df700919cfd3f53c8276":[7,17,0,3], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[9,0,0,0,21,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a4b8a3b7ce6f731e5248e4b0fb64a5044":[7,17,0,5], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[7,17,0,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[9,0,0,0,21,7], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[7,17,0,7], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a68b3d34bebd88547dcfa5cadba0acd6c":[7,17,0,6], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[9,0,0,0,21,8], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a7aef2da0062da606eeb35aaca5cf9050":[7,17,0,7], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[7,17,0,1], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985a9737a68759e739856b150ff9dfa30218":[9,0,0,0,21,2], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[7,17,0,10], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[9,0,0,0,21,11], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ac6a161822783ee873be1c66f48d14e0e":[7,17,0,10], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985acc9a317c70363dd88e823e066b2c73b7":[9,0,0,0,21,0], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[9,0,0,0,21,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad0869604d79e13700ae5d196a431b350":[7,17,0,11], @@ -210,26 +210,26 @@ var NAVTREEINDEX2 = "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad09e68295eabdddcba4e332fbea70ae5":[7,17,0,8], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[7,17,0,12], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985ad2b477a91c8445bf34ecd43977f9b390":[9,0,0,0,21,13], -"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,0,0,0,21,5], "group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[7,17,0,4], +"group__wsclose.html#ggae399c571df32ba532c0ca67da9284985af90cb98d983ad3d4c79df9b6f3d4a4d2":[9,0,0,0,21,5], "group__wsstatus.html":[7,18], -"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[7,18,3], "group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[9,0,0,0,103], -"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[7,18,4], +"group__wsstatus.html#ga08e9ee165fca503fd9427d55cfecac37":[7,18,3], "group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[9,0,0,0,104], +"group__wsstatus.html#ga26a140623d202dd2bf2004deb6994baa":[7,18,4], "group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[7,18,6], "group__wsstatus.html#ga2bb3655329b4651cd06f79ee3a764421":[9,0,0,0,121], "group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[7,18,1], "group__wsstatus.html#ga3df5045656dfb6b0e63a38de2dca79d2":[9,0,0,0,89], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[9,0,0,0,102], "group__wsstatus.html#ga4ad226d5e01024b4046f4a5a37199aa1":[7,18,2], -"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,0,0,0,77], "group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[7,18,0], +"group__wsstatus.html#gaccd9c59336efad8af0554f79cc5966fd":[9,0,0,0,77], "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[9,0,0,0,112], "group__wsstatus.html#gaeca4afc94b1f026034f99cbba37e2f85":[7,18,5], "hierarchy.html":[8,2], -"index.html":[0], "index.html":[], +"index.html":[0], "libwebsockets_8h.html":[9,0,0,0], "libwebsockets_8h.html#a0b056fdcf949a838ff82209b4a627dd9":[9,0,0,0,157], "libwebsockets_8h.html#a2271141d8be8d72b47ba327130b4905f":[9,0,0,0,23], diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js index 97fe48e6..572cfad4 100644 --- a/doc/html/navtreeindex3.js +++ b/doc/html/navtreeindex3.js @@ -22,17 +22,18 @@ var NAVTREEINDEX3 = "structlws__cgi__args.html#a8ac842084688c02f3f94694ef700d8f7":[8,0,0,1], "structlws__cgi__args.html#adeee220b29aeacc34632c38e50f0f5a5":[8,0,0,0], "structlws__client__connect__info.html":[7,2,0], -"structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a":[7,2,0,13], +"structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a":[7,2,0,14], +"structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e":[7,2,0,12], "structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9":[7,2,0,10], -"structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be":[7,2,0,16], +"structlws__client__connect__info.html#a3893181d728f326f9f5b47c1459cb8be":[7,2,0,17], "structlws__client__connect__info.html#a6843a60e1050b10db9d98d7eeb45f587":[7,2,0,8], "structlws__client__connect__info.html#a69abb5aeed755750b9755e5c91db6895":[7,2,0,5], "structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185":[7,2,0,9], "structlws__client__connect__info.html#a7732b996e977393c3e1076be2a8ded6c":[7,2,0,2], "structlws__client__connect__info.html#a8595f83e64147cb687b6418cf500dd4c":[7,2,0,7], -"structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836":[7,2,0,15], -"structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d":[7,2,0,12], -"structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3":[7,2,0,14], +"structlws__client__connect__info.html#a9831b9f9ab54a1aec4bb15324f1c3836":[7,2,0,16], +"structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d":[7,2,0,13], +"structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3":[7,2,0,15], "structlws__client__connect__info.html#a9b36d47c3422329df32c21040a35ebc7":[7,2,0,4], "structlws__client__connect__info.html#aa364094f94ef1bcaaabbd9161971d502":[7,2,0,1], "structlws__client__connect__info.html#aa9e8e3da4e783a0651b0dea62c2dd1db":[7,2,0,6], @@ -173,16 +174,16 @@ var NAVTREEINDEX3 = "structlws__process__html__state.html#adcafd17704775b4bbeea9561fb340968":[7,6,1,1,0], "structlws__process__html__state.html#af0732884ef891e24fe5fa237ebaa21a3":[7,6,1,1,4], "structlws__process__html__state.html#af21119890fdfebe28fb5c4dabfc1bdf5":[7,6,1,1,1], -"structlws__protocol__vhost__options.html":[7,4,2], "structlws__protocol__vhost__options.html":[7,4,0,0], -"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[7,4,2,3], +"structlws__protocol__vhost__options.html":[7,4,2], "structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[7,4,0,0,3], +"structlws__protocol__vhost__options.html#a0640a92513c70ee6b9b295a9ad1658e7":[7,4,2,3], "structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[7,4,0,0,1], "structlws__protocol__vhost__options.html#abc714ddb4171756fc8196e9823a1e21c":[7,4,2,1], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[7,4,0,0,0], "structlws__protocol__vhost__options.html#acf9db77f8eb64cd4e314be9b43d8a8b9":[7,4,2,0], -"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[7,4,2,2], "structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[7,4,0,0,2], +"structlws__protocol__vhost__options.html#afd99fbc90be51ea2465b550c2ec47822":[7,4,2,2], "structlws__protocols.html":[7,10,1], "structlws__protocols.html#a0d1d4996d81b2f5e125bcec981e461c5":[7,10,1,4], "structlws__protocols.html#a0e63edb457a613c3fa4271e0a8f19624":[7,10,1,2], @@ -200,10 +201,10 @@ var NAVTREEINDEX3 = "structlws__token__limits.html#a6ec712306cbf8585bce7a56758a3ceff":[7,6,4,1,0], "structlws__tokens.html":[7,6,4,0], "structlws__tokens.html":[7,6,6], -"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[7,6,4,0,1], "structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[7,6,6,1], -"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[7,6,4,0,0], +"structlws__tokens.html#a855b7375d1d58516c0ecd4b60e9a7766":[7,6,4,0,1], "structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[7,6,6,0], +"structlws__tokens.html#a9f3635412bc71a5cb78e9862b55f10cd":[7,6,4,0,0], "structlwsgw__hash.html":[7,10,0,1], "structlwsgw__hash.html#a29435f5cf78747d4257695b0f141d164":[7,10,0,1,0], "structlwsgw__hash__bin.html":[7,10,0,0], diff --git a/doc/html/structlws__client__connect__info.html b/doc/html/structlws__client__connect__info.html index 7da79a40..c673802a 100644 --- a/doc/html/structlws__client__connect__info.html +++ b/doc/html/structlws__client__connect__info.html @@ -112,11 +112,13 @@ Data Fields   struct lws_vhost * vhost   +struct lws ** pwsi +  void * _unused [4]  

    Detailed Description

    -

    struct lws_client_connect_info - parameters to connect with when using lws_client_connect_via_info()

    +

    struct lws_client_connect_info - parameters to connect with when using lws_client_connect_via_info()

    Field Documentation

    @@ -272,6 +274,19 @@ Data Fields

    list of ws protocols we could accept

    +
    +
    + +
    +
    + + + + +
    struct lws** lws_client_connect_info::pwsi
    +
    +

    if not NULL, store the new wsi here early in the connection process. Although we return the new wsi, the call to create the client connection does progress the connection somewhat and may meet an error that will result in the connection being scrubbed and NULL returned. While the wsi exists though, he may process a callback like CLIENT_CONNECTION_ERROR with his wsi: this gives the user callback a way to identify which wsi it is that faced the error even before the new wsi is returned and even if ultimately no wsi is returned.

    +
    diff --git a/doc/html/structlws__client__connect__info.js b/doc/html/structlws__client__connect__info.js index 49e32a0f..042b3d92 100644 --- a/doc/html/structlws__client__connect__info.js +++ b/doc/html/structlws__client__connect__info.js @@ -12,6 +12,7 @@ var structlws__client__connect__info = [ "path", "structlws__client__connect__info.html#a76a8388733f114fb8fd3643874781185", null ], [ "port", "structlws__client__connect__info.html#a1af124d81c3c22a46d39387c5bc3d6b9", null ], [ "protocol", "structlws__client__connect__info.html#aba35adfb74845a5fd0c3dc141cbdddd2", null ], + [ "pwsi", "structlws__client__connect__info.html#a065063b5117ecd0a59567c97f04bda2e", null ], [ "ssl_connection", "structlws__client__connect__info.html#a9862297827639238a7a0b4054c3ddf3d", null ], [ "uri_replace_from", "structlws__client__connect__info.html#a03c305fdca809667b6a9a83b3edfd83a", null ], [ "uri_replace_to", "structlws__client__connect__info.html#a9959ba103d3d2484e559a9f7879eebe3", null ], diff --git a/doc/latex/group__client.tex b/doc/latex/group__client.tex index 4ab28102..6ddc7a08 100644 --- a/doc/latex/group__client.tex +++ b/doc/latex/group__client.tex @@ -8,7 +8,7 @@ struct \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect \subsection*{Functions} \begin{DoxyCompactItemize} \item -L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN struct lws $\ast$L\+W\+S\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT \hyperlink{group__client_gac30a7be106abd0cedfbb2e8b8fe3a2f5}{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info} (struct \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} $\ast$ccinfo) +L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN struct lws $\ast$ \hyperlink{group__client_ga0c966136905f467816307cfba6deb5fd}{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info} (struct \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} $\ast$ccinfo) \item L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN struct lws $\ast$L\+W\+S\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT \hyperlink{group__client_ga4af0a20108a95e8b6d94dd4d80055ff3}{lws\+\_\+client\+\_\+connect} (struct lws\+\_\+context $\ast$clients, const char $\ast$address, int port, int ssl\+\_\+connection, const char $\ast$path, const char $\ast$host, const char $\ast$origin, const char $\ast$protocol, int ietf\+\_\+version\+\_\+or\+\_\+minus\+\_\+one) L\+W\+S\+\_\+\+W\+A\+R\+N\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED \item @@ -115,18 +115,19 @@ This function creates a connection to a remote server \index{Client@{Client}!lws \end{DoxyParams} \index{Client@{Client}!lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info}} \index{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info}!Client@{Client}} -\subsubsection[{\texorpdfstring{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info(struct lws\+\_\+client\+\_\+connect\+\_\+info $\ast$ccinfo)}{lws\_client\_connect\_via\_info(struct lws\_client\_connect\_info *ccinfo)}}]{\setlength{\rightskip}{0pt plus 5cm}L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN struct lws$\ast$ L\+W\+S\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info ( +\subsubsection[{\texorpdfstring{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info(struct lws\+\_\+client\+\_\+connect\+\_\+info $\ast$ccinfo)}{lws\_client\_connect\_via\_info(struct lws\_client\_connect\_info *ccinfo)}}]{\setlength{\rightskip}{0pt plus 5cm}L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN struct lws$\ast$ lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info ( \begin{DoxyParamCaption} \item[{struct {\bf lws\+\_\+client\+\_\+connect\+\_\+info} $\ast$}]{ccinfo} \end{DoxyParamCaption} -)}\hypertarget{group__client_gac30a7be106abd0cedfbb2e8b8fe3a2f5}{}\label{group__client_gac30a7be106abd0cedfbb2e8b8fe3a2f5} +)}\hypertarget{group__client_ga0c966136905f467816307cfba6deb5fd}{}\label{group__client_ga0c966136905f467816307cfba6deb5fd} {\ttfamily \#include $<$\hyperlink{libwebsockets_8h}{lib/libwebsockets.\+h}$>$} -\hyperlink{group__client_gac30a7be106abd0cedfbb2e8b8fe3a2f5}{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info()} -\/ Connect to another websocket server +\hyperlink{group__client_ga0c966136905f467816307cfba6deb5fd}{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info()} -\/ Connect to another websocket server \begin{DoxyParams}{Parameters} -{\em ccinfo} & pointer to \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} struct \begin{DoxyVerb} This function creates a connection to a remote server\end{DoxyVerb} +{\em ccinfo} & pointer to \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} struct \begin{DoxyVerb} This function creates a connection to a remote server using the + information provided in ccinfo.\end{DoxyVerb} \\ \hline \end{DoxyParams} diff --git a/doc/latex/group__context-and-vhost.tex b/doc/latex/group__context-and-vhost.tex index 94f1ef24..15a74574 100644 --- a/doc/latex/group__context-and-vhost.tex +++ b/doc/latex/group__context-and-vhost.tex @@ -122,41 +122,41 @@ L\+W\+S\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+O\+P\+T\+I\+O\+N\+\_\+\+I\+P\+V6\+\_\+\+V \end{Desc} \begin{DoxyCode} -1347 \{ -1348 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092}{LWS\_SERVER\_OPTION\_REQUIRE\_VALID\_OPENSSL\_CLIENT\_CERT} +1387 \{ +1388 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a274ed462a1a9239eb6ddf9007f5b7092}{LWS\_SERVER\_OPTION\_REQUIRE\_VALID\_OPENSSL\_CLIENT\_CERT} = (1 << 1) | -1349 (1 << 12), -1353 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c}{LWS\_SERVER\_OPTION\_SKIP\_SERVER\_CANONICAL\_NAME} +1389 (1 << 12), +1393 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a6582c985ee0ceaadc1d277030eae2d7c}{LWS\_SERVER\_OPTION\_SKIP\_SERVER\_CANONICAL\_NAME} = (1 << 2), -1355 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d}{LWS\_SERVER\_OPTION\_ALLOW\_NON\_SSL\_ON\_SSL\_PORT} = ( +1395 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a1cc4562d05cba52a6dfa0697a65ade0d}{LWS\_SERVER\_OPTION\_ALLOW\_NON\_SSL\_ON\_SSL\_PORT} = ( 1 << 3) | -1356 (1 << 12), -1360 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6}{LWS\_SERVER\_OPTION\_LIBEV} = (1 << 4), -1362 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9}{LWS\_SERVER\_OPTION\_DISABLE\_IPV6} = (1 << 5), -1364 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93}{LWS\_SERVER\_OPTION\_DISABLE\_OS\_CA\_CERTS} = ( +1396 (1 << 12), +1400 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a273d9975675130de0c6dc937dde7c8a6}{LWS\_SERVER\_OPTION\_LIBEV} = (1 << 4), +1402 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a34ab36e68c0d593b6f19b8d5ef1240a9}{LWS\_SERVER\_OPTION\_DISABLE\_IPV6} = (1 << 5), +1404 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a4933347a821e73c3f1e13fb6bfc7ad93}{LWS\_SERVER\_OPTION\_DISABLE\_OS\_CA\_CERTS} = ( 1 << 6), -1367 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc}{LWS\_SERVER\_OPTION\_PEER\_CERT\_NOT\_REQUIRED} = ( +1407 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5ac56a8a6590e74a8016d0fae09fb404fc}{LWS\_SERVER\_OPTION\_PEER\_CERT\_NOT\_REQUIRED} = ( 1 << 7), -1369 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f}{LWS\_SERVER\_OPTION\_VALIDATE\_UTF8} = (1 << 8), -1371 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c}{LWS\_SERVER\_OPTION\_SSL\_ECDH} = (1 << 9) | -1372 (1 << 12), -1374 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e}{LWS\_SERVER\_OPTION\_LIBUV} = (1 << 10), -1376 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada}{LWS\_SERVER\_OPTION\_REDIRECT\_HTTP\_TO\_HTTPS} = ( +1409 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aa0158b4e85420811e6b0f1378c6ded0f}{LWS\_SERVER\_OPTION\_VALIDATE\_UTF8} = (1 << 8), +1411 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a1b2f8bde0f62adc7ebe81b2043f34c0c}{LWS\_SERVER\_OPTION\_SSL\_ECDH} = (1 << 9) | +1412 (1 << 12), +1414 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aff121db04a10cf8b2c5df9d4f2b89f1e}{LWS\_SERVER\_OPTION\_LIBUV} = (1 << 10), +1416 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a4832187186c4d130c68051214cd42ada}{LWS\_SERVER\_OPTION\_REDIRECT\_HTTP\_TO\_HTTPS} = ( 1 << 11) | -1377 (1 << 3) | -1378 (1 << 12), -1381 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a}{LWS\_SERVER\_OPTION\_DO\_SSL\_GLOBAL\_INIT} = ( +1417 (1 << 3) | +1418 (1 << 12), +1421 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a7fed6a527c8d5e0acac1b4179644583a}{LWS\_SERVER\_OPTION\_DO\_SSL\_GLOBAL\_INIT} = ( 1 << 12), -1383 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e}{LWS\_SERVER\_OPTION\_EXPLICIT\_VHOSTS} = (1 << 13) +1423 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5accc9d0d11d1124a21659586164b0962e}{LWS\_SERVER\_OPTION\_EXPLICIT\_VHOSTS} = (1 << 13) , -1386 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941}{LWS\_SERVER\_OPTION\_UNIX\_SOCK} = (1 << 14), -1388 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016}{LWS\_SERVER\_OPTION\_STS} = (1 << 15), -1391 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_MODIFY} = ( +1426 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5a9637e9001d8c8b2521086bcafbd8a941}{LWS\_SERVER\_OPTION\_UNIX\_SOCK} = (1 << 14), +1428 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5ac962efd35abf6c402f9fb14aa14f5016}{LWS\_SERVER\_OPTION\_STS} = (1 << 15), +1431 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5af62887536e25e053e68741006dba46d8}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_MODIFY} = ( 1 << 16), -1393 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_VALUE} = (1 << 17) +1433 \hyperlink{group__context-and-vhost_gga41c2d763f78cc248df3b9f8645dbd2a5aca5d42820b65eac5618ec3f0bd8a1160}{LWS\_SERVER\_OPTION\_IPV6\_V6ONLY\_VALUE} = (1 << 17) , -1396 \textcolor{comment}{/****** add new things just above ---^ ******/} -1397 \}; +1436 \textcolor{comment}{/****** add new things just above ---^ ******/} +1437 \}; \end{DoxyCode} diff --git a/doc/latex/group__extensions.tex b/doc/latex/group__extensions.tex index e8391c80..a9dfde6c 100644 --- a/doc/latex/group__extensions.tex +++ b/doc/latex/group__extensions.tex @@ -174,13 +174,13 @@ E\+X\+T\+A\+R\+G\+\_\+\+O\+P\+T\+\_\+\+D\+EC\hypertarget{group__extensions_ggacc \end{Desc} \begin{DoxyCode} -949 \{ -950 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c}{EXTARG\_NONE}, -951 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e}{EXTARG\_DEC}, -952 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880}{EXTARG\_OPT\_DEC} -954 \textcolor{comment}{/* Add new things just above here ---^} -955 \textcolor{comment}{ * This is part of the ABI, don't needlessly break compatibility */} -956 \}; +989 \{ +990 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89eaabcf56c456c1ff6e81dc82586a16f14c}{EXTARG\_NONE}, +991 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89ea1c86adf924c8786a12bee9687094673e}{EXTARG\_DEC}, +992 \hyperlink{group__extensions_ggacc9f55936dc165257a2e1f7d47bce89ea5265abe3e1c3f64412f2affe7bffd880}{EXTARG\_OPT\_DEC} +994 \textcolor{comment}{/* Add new things just above here ---^} +995 \textcolor{comment}{ * This is part of the ABI, don't needlessly break compatibility */} +996 \}; \end{DoxyCode} diff --git a/doc/latex/group__form-parsing.tex b/doc/latex/group__form-parsing.tex index f6f7ab86..dbbb54bf 100644 --- a/doc/latex/group__form-parsing.tex +++ b/doc/latex/group__form-parsing.tex @@ -89,11 +89,11 @@ L\+W\+S\+\_\+\+U\+F\+S\+\_\+\+O\+P\+EN\hypertarget{group__form-parsing_gga41a74a \end{Desc} \begin{DoxyCode} -2552 \{ -2553 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f}{LWS\_UFS\_CONTENT}, -2555 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7}{LWS\_UFS\_FINAL\_CONTENT}, -2557 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83}{LWS\_UFS\_OPEN} -2559 \}; +2604 \{ +2605 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aead3a958e7719ac273c3ba4f684f00c87f}{LWS\_UFS\_CONTENT}, +2607 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea6ce2a55a4c3695cdb640c893d95bd3a7}{LWS\_UFS\_FINAL\_CONTENT}, +2609 \hyperlink{group__form-parsing_gga41a74a822771d3dce89751aa3bce28aea2d25de44865bd44e5a3903a2bab9ca83}{LWS\_UFS\_OPEN} +2611 \}; \end{DoxyCode} diff --git a/doc/latex/group__generic-sessions.tex b/doc/latex/group__generic-sessions.tex index 7c582ce6..25faf39c 100644 --- a/doc/latex/group__generic-sessions.tex +++ b/doc/latex/group__generic-sessions.tex @@ -50,10 +50,10 @@ L\+W\+S\+G\+S\+E\+\_\+\+D\+E\+L\+E\+T\+ED\hypertarget{group__generic-sessions_gg \end{Desc} \begin{DoxyCode} -1311 \{ -1312 \hyperlink{group__generic-sessions_ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308}{LWSGSE\_CREATED}, -1313 \hyperlink{group__generic-sessions_ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde}{LWSGSE\_DELETED} -1314 \}; +1351 \{ +1352 \hyperlink{group__generic-sessions_ggaa93946b3d921072209d5cd8cdfa5332ea596010a165bf13473c5eea3a34cd4308}{LWSGSE\_CREATED}, +1353 \hyperlink{group__generic-sessions_ggaa93946b3d921072209d5cd8cdfa5332ead908cdc5689c5d22c9d3c8934e94dcde}{LWSGSE\_DELETED} +1354 \}; \end{DoxyCode} \index{plugin\+: generic-\/sessions@{plugin\+: generic-\/sessions}!lwsgs\+\_\+auth\+\_\+bits@{lwsgs\+\_\+auth\+\_\+bits}} \index{lwsgs\+\_\+auth\+\_\+bits@{lwsgs\+\_\+auth\+\_\+bits}!plugin\+: generic-\/sessions@{plugin\+: generic-\/sessions}} @@ -77,10 +77,10 @@ L\+W\+S\+G\+S\+\_\+\+A\+U\+T\+H\+\_\+\+F\+O\+R\+G\+O\+T\+\_\+\+F\+L\+OW\hypertar \end{Desc} \begin{DoxyCode} -1293 \{ -1294 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57}{LWSGS\_AUTH\_LOGGED\_IN} = 1, -1295 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf}{LWSGS\_AUTH\_ADMIN} = 2, -1296 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887}{LWSGS\_AUTH\_VERIFIED} = 4, -1297 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a}{LWSGS\_AUTH\_FORGOT\_FLOW} = 8, -1298 \}; +1333 \{ +1334 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a81e63075115dedd150265d81b8f7fa57}{LWSGS\_AUTH\_LOGGED\_IN} = 1, +1335 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a0657a9e846814781b128c397fe4b10bf}{LWSGS\_AUTH\_ADMIN} = 2, +1336 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a5a607e4668d20cadada62c4b8007f887}{LWSGS\_AUTH\_VERIFIED} = 4, +1337 \hyperlink{group__generic-sessions_gga7c2dc7bfb4ccb91c5d771f9e9ea237e1a2cd8fb86e3b85c106e7711c03f0ddd0a}{LWSGS\_AUTH\_FORGOT\_FLOW} = 8, +1338 \}; \end{DoxyCode} diff --git a/doc/latex/group__sending-data.tex b/doc/latex/group__sending-data.tex index eb24bb9d..2d90a8d3 100644 --- a/doc/latex/group__sending-data.tex +++ b/doc/latex/group__sending-data.tex @@ -57,28 +57,28 @@ L\+W\+S\+\_\+\+W\+R\+I\+T\+E\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+I\+G\+N\+O\+R\+E\+\_ \end{Desc} \begin{DoxyCode} -2893 \{ -2894 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db}{LWS\_WRITE\_TEXT} = 0, -2898 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2}{LWS\_WRITE\_BINARY} = 1, -2901 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826}{LWS\_WRITE\_CONTINUATION} = 2, -2904 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e}{LWS\_WRITE\_HTTP} = 3, -2907 \textcolor{comment}{/* LWS\_WRITE\_CLOSE is handled by lws\_close\_reason() */} -2908 LWS\_WRITE\_PING = 5, -2909 LWS\_WRITE\_PONG = 6, -2910 -2911 \textcolor{comment}{/* Same as write\_http but we know this write ends the transaction */} -2912 LWS\_WRITE\_HTTP\_FINAL = 7, -2913 -2914 \textcolor{comment}{/* HTTP2 */} -2915 -2916 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917}{LWS\_WRITE\_HTTP\_HEADERS} = 8, -2923 \textcolor{comment}{/****** add new things just above ---^ ******/} -2924 -2925 \textcolor{comment}{/* flags */} -2926 -2927 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3}{LWS\_WRITE\_NO\_FIN} = 0x40, -2930 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce}{LWS\_WRITE\_CLIENT\_IGNORE\_XOR\_MASK} = 0x80 -2934 \}; +2945 \{ +2946 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da80e8f169fda236c56bfb795ed62903db}{LWS\_WRITE\_TEXT} = 0, +2950 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193daf6486c0dba50c44198100717721d9ab2}{LWS\_WRITE\_BINARY} = 1, +2953 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da10047eb05b5e1c298151dc47a5b44826}{LWS\_WRITE\_CONTINUATION} = 2, +2956 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dabb6705e1d1327cdda5025be28f07712e}{LWS\_WRITE\_HTTP} = 3, +2959 \textcolor{comment}{/* LWS\_WRITE\_CLOSE is handled by lws\_close\_reason() */} +2960 LWS\_WRITE\_PING = 5, +2961 LWS\_WRITE\_PONG = 6, +2962 +2963 \textcolor{comment}{/* Same as write\_http but we know this write ends the transaction */} +2964 LWS\_WRITE\_HTTP\_FINAL = 7, +2965 +2966 \textcolor{comment}{/* HTTP2 */} +2967 +2968 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193dafe5a38e940ce56708ac814627e9c0917}{LWS\_WRITE\_HTTP\_HEADERS} = 8, +2975 \textcolor{comment}{/****** add new things just above ---^ ******/} +2976 +2977 \textcolor{comment}{/* flags */} +2978 +2979 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da115440f272a5d55518adfc8099acfee3}{LWS\_WRITE\_NO\_FIN} = 0x40, +2982 \hyperlink{group__sending-data_gga98b099cf8c1c7e38ad78501f270e193da220d8e8652d9b97fb66e476e2a60ffce}{LWS\_WRITE\_CLIENT\_IGNORE\_XOR\_MASK} = 0x80 +2986 \}; \end{DoxyCode} diff --git a/doc/latex/group__smtp.tex b/doc/latex/group__smtp.tex index 2ce915ad..5b2cc78d 100644 --- a/doc/latex/group__smtp.tex +++ b/doc/latex/group__smtp.tex @@ -88,17 +88,17 @@ L\+G\+S\+S\+M\+T\+P\+\_\+\+S\+E\+N\+T\+\_\+\+Q\+U\+IT\hypertarget{group__smtp_gg \end{Desc} \begin{DoxyCode} -3815 \{ -3816 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c}{LGSSMTP\_IDLE}, -3817 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933}{LGSSMTP\_CONNECTING}, -3818 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d}{LGSSMTP\_CONNECTED}, -3819 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad}{LGSSMTP\_SENT\_HELO}, -3820 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab}{LGSSMTP\_SENT\_FROM}, -3821 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83}{LGSSMTP\_SENT\_TO}, -3822 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14}{LGSSMTP\_SENT\_DATA}, -3823 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69}{LGSSMTP\_SENT\_BODY}, -3824 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5}{LGSSMTP\_SENT\_QUIT}, -3825 \}; +3867 \{ +3868 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a29e5b0ecf75375b5a643faa3d6222b7c}{LGSSMTP\_IDLE}, +3869 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab89442b7a3ca2b94c3cdcf33756eb933}{LGSSMTP\_CONNECTING}, +3870 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0ab61778f70ecac007b334bb14942eb41d}{LGSSMTP\_CONNECTED}, +3871 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a1dfec948a864205cec875f63cbe0d4ad}{LGSSMTP\_SENT\_HELO}, +3872 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a929bb4623ff3f585108aba2a1b047fab}{LGSSMTP\_SENT\_FROM}, +3873 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0aae20a0cb95b97a70f6b45d0ed2d5be83}{LGSSMTP\_SENT\_TO}, +3874 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a85e3c452950c09a79086bff4b9be5c14}{LGSSMTP\_SENT\_DATA}, +3875 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a38fba41f28d754e38079b31418a86a69}{LGSSMTP\_SENT\_BODY}, +3876 \hyperlink{group__smtp_gga116be79bf44f9dc2a97f46e051fe4dc0a2c2ed16ffc572326e3040684084b21d5}{LGSSMTP\_SENT\_QUIT}, +3877 \}; \end{DoxyCode} diff --git a/doc/latex/group__usercb.tex b/doc/latex/group__usercb.tex index b765d4c4..568d77d9 100644 --- a/doc/latex/group__usercb.tex +++ b/doc/latex/group__usercb.tex @@ -135,7 +135,45 @@ enum lws\+\_\+callback\+\_\+reasons -\/ reason you\textquotesingle{}re getting a L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+E\+S\+T\+A\+B\+L\+I\+S\+H\+ED\hypertarget{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439}{}\label{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439} }](VH) after the server completes a handshake with an incoming client. If you built the library with ssl support, in is a pointer to the ssl struct associated with the connection or N\+U\+LL. \index{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+E\+R\+R\+OR@{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+E\+R\+R\+OR}!User Callback@{User Callback}}\index{User Callback@{User Callback}!L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+E\+R\+R\+OR@{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+E\+R\+R\+OR}}\item[{\em L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+E\+R\+R\+OR\hypertarget{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8}{}\label{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8} -}]the request client connection has been unable to complete a handshake with the remote server. If in is non-\/\+N\+U\+LL, you can find an error string of length len where it points to. \index{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+F\+I\+L\+T\+E\+R\+\_\+\+P\+R\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+SH@{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+F\+I\+L\+T\+E\+R\+\_\+\+P\+R\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+SH}!User Callback@{User Callback}}\index{User Callback@{User Callback}!L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+F\+I\+L\+T\+E\+R\+\_\+\+P\+R\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+SH@{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+F\+I\+L\+T\+E\+R\+\_\+\+P\+R\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+SH}}\item[{\em +}]the request client connection has been unable to complete a handshake with the remote server. If in is non-\/\+N\+U\+LL, you can find an error string of length len where it points to + +Diagnostic strings that may be returned include \begin{DoxyVerb} "getaddrinfo (ipv6) failed" + "unknown address family" + "getaddrinfo (ipv4) failed" + "set socket opts failed" + "insert wsi failed" + "lws_ssl_client_connect1 failed" + "lws_ssl_client_connect2 failed" + "Peer hung up" + "read failed" + "HS: URI missing" + "HS: Redirect code but no Location" + "HS: URI did not parse" + "HS: Redirect failed" + "HS: Server did not return 200" + "HS: OOM" + "HS: disallowed by client filter" + "HS: disallowed at ESTABLISHED" + "HS: ACCEPT missing" + "HS: ws upgrade response not 101" + "HS: UPGRADE missing" + "HS: Upgrade to something other than websocket" + "HS: CONNECTION missing" + "HS: UPGRADE malformed" + "HS: PROTOCOL malformed" + "HS: Cannot match protocol" + "HS: EXT: list too big" + "HS: EXT: failed setting defaults" + "HS: EXT: failed parsing defaults" + "HS: EXT: failed parsing options" + "HS: EXT: Rejects server options" + "HS: EXT: unknown ext" + "HS: Accept hash wrong" + "HS: Rejected by filter cb" + "HS: OOM" + "HS: SO_SNDBUF failed" + "HS: Rejected at CLIENT_ESTABLISHED"\end{DoxyVerb} + \index{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+F\+I\+L\+T\+E\+R\+\_\+\+P\+R\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+SH@{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+F\+I\+L\+T\+E\+R\+\_\+\+P\+R\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+SH}!User Callback@{User Callback}}\index{User Callback@{User Callback}!L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+F\+I\+L\+T\+E\+R\+\_\+\+P\+R\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+SH@{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+F\+I\+L\+T\+E\+R\+\_\+\+P\+R\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+SH}}\item[{\em L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+F\+I\+L\+T\+E\+R\+\_\+\+P\+R\+E\+\_\+\+E\+S\+T\+A\+B\+L\+I\+SH\hypertarget{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2}{}\label{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2} }]this is the last chance for the client user code to examine the http headers and decide to reject the connection. If the content in the headers is interesting to the client (url, etc) it needs to copy it out at this point since it will be destroyed before the C\+L\+I\+E\+N\+T\+\_\+\+E\+S\+T\+A\+B\+L\+I\+S\+H\+ED call \index{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+E\+S\+T\+A\+B\+L\+I\+S\+H\+ED@{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+E\+S\+T\+A\+B\+L\+I\+S\+H\+ED}!User Callback@{User Callback}}\index{User Callback@{User Callback}!L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+E\+S\+T\+A\+B\+L\+I\+S\+H\+ED@{L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+E\+S\+T\+A\+B\+L\+I\+S\+H\+ED}}\item[{\em L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+E\+S\+T\+A\+B\+L\+I\+S\+H\+ED\hypertarget{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604}{}\label{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604} @@ -239,74 +277,74 @@ L\+W\+S\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+U\+S\+ER\hypertarget{group__usercb_ 572 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a24d39bf1cfc0bad9d92da9ac1717e439}{LWS\_CALLBACK\_ESTABLISHED} = 0, 576 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ad8c6207b0c4e732f3d507f0fb79370e8}{LWS\_CALLBACK\_CLIENT\_CONNECTION\_ERROR} = 1, -580 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2}{LWS\_CALLBACK\_CLIENT\_FILTER\_PRE\_ESTABLISH} = +620 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa536e574a642ff3ab9e12bff7ba2c6a2}{LWS\_CALLBACK\_CLIENT\_FILTER\_PRE\_ESTABLISH} = 2, -587 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604}{LWS\_CALLBACK\_CLIENT\_ESTABLISHED} = 3, -590 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8}{LWS\_CALLBACK\_CLOSED} = 4, -592 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba}{LWS\_CALLBACK\_CLOSED\_HTTP} = 5, -594 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c}{LWS\_CALLBACK\_RECEIVE} = 6, -598 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738}{LWS\_CALLBACK\_RECEIVE\_PONG} = 7, -600 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1}{LWS\_CALLBACK\_CLIENT\_RECEIVE} = 8, -603 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9}{LWS\_CALLBACK\_CLIENT\_RECEIVE\_PONG} = 9, -605 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514}{LWS\_CALLBACK\_CLIENT\_WRITEABLE} = 10, -613 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc}{LWS\_CALLBACK\_SERVER\_WRITEABLE} = 11, -615 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e}{LWS\_CALLBACK\_HTTP} = 12, -629 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae}{LWS\_CALLBACK\_HTTP\_BODY} = 13, -632 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804}{LWS\_CALLBACK\_HTTP\_BODY\_COMPLETION} = 14, -634 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587}{LWS\_CALLBACK\_HTTP\_FILE\_COMPLETION} = 15, -636 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09}{LWS\_CALLBACK\_HTTP\_WRITEABLE} = 16, -638 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6}{LWS\_CALLBACK\_FILTER\_NETWORK\_CONNECTION} = +627 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7e12418eec9bce85735e6460176ab604}{LWS\_CALLBACK\_CLIENT\_ESTABLISHED} = 3, +630 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a48a9590e5e18c7920282e094a0bfd9d8}{LWS\_CALLBACK\_CLOSED} = 4, +632 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a838b18d255c1b94a533287ba302a2eba}{LWS\_CALLBACK\_CLOSED\_HTTP} = 5, +634 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a492c1b1c0ac0ed980042ee732fe2990c}{LWS\_CALLBACK\_RECEIVE} = 6, +638 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a2db02fc6e1c17ab62b52109d1aa9d738}{LWS\_CALLBACK\_RECEIVE\_PONG} = 7, +640 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7abbbe7a0a67c5866ca9109d46823fc5b1}{LWS\_CALLBACK\_CLIENT\_RECEIVE} = 8, +643 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a136a7cec11c3afd13245623bd84e76c9}{LWS\_CALLBACK\_CLIENT\_RECEIVE\_PONG} = 9, +645 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a8e8b2e6dbeac76d8d126947d2166a514}{LWS\_CALLBACK\_CLIENT\_WRITEABLE} = 10, +653 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a7ec8e2e9557ee02a4fc9f7dec7e2babc}{LWS\_CALLBACK\_SERVER\_WRITEABLE} = 11, +655 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae8d1de0bb56e03aa58cb4d44b18edd2e}{LWS\_CALLBACK\_HTTP} = 12, +669 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ac4c68e00efcf1ff7bda7ada462aff8ae}{LWS\_CALLBACK\_HTTP\_BODY} = 13, +672 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a2fce9a8608220f32abbf1422a5498804}{LWS\_CALLBACK\_HTTP\_BODY\_COMPLETION} = 14, +674 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa627548e1296e654fcfab463ec3c9587}{LWS\_CALLBACK\_HTTP\_FILE\_COMPLETION} = 15, +676 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7afedadfb3cde37a8ea4c84ed535f26d09}{LWS\_CALLBACK\_HTTP\_WRITEABLE} = 16, +678 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a026502768778b8d79d62dd0fe4375fc6}{LWS\_CALLBACK\_FILTER\_NETWORK\_CONNECTION} = 17, -649 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c}{LWS\_CALLBACK\_FILTER\_HTTP\_CONNECTION} = 18, -661 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3}{LWS\_CALLBACK\_SERVER\_NEW\_CLIENT\_INSTANTIATED} = +689 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a75199176c82c1a56e4a6bbf1cc30c12c}{LWS\_CALLBACK\_FILTER\_HTTP\_CONNECTION} = 18, +701 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae9734e1d7af2abf291665ce9e4a728d3}{LWS\_CALLBACK\_SERVER\_NEW\_CLIENT\_INSTANTIATED} = 19, -669 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d}{LWS\_CALLBACK\_FILTER\_PROTOCOL\_CONNECTION} = +709 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7accd8753672d319a30b4b4c2fb775e84d}{LWS\_CALLBACK\_FILTER\_PROTOCOL\_CONNECTION} = 20, -681 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c}{LWS\_CALLBACK\_OPENSSL\_LOAD\_EXTRA\_CLIENT\_VERIFY\_CERTS} +721 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae4986291b7a810fe290851d73bebeb1c}{LWS\_CALLBACK\_OPENSSL\_LOAD\_EXTRA\_CLIENT\_VERIFY\_CERTS} = 21, -688 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493}{LWS\_CALLBACK\_OPENSSL\_LOAD\_EXTRA\_SERVER\_VERIFY\_CERTS} +728 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a06006e98d27e1e884364d88317f83493}{LWS\_CALLBACK\_OPENSSL\_LOAD\_EXTRA\_SERVER\_VERIFY\_CERTS} = 22, -694 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac}{LWS\_CALLBACK\_OPENSSL\_PERFORM\_CLIENT\_CERT\_VERIFICATION} +734 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ae5ad65d779b7eab32ab67ceff91a3bac}{LWS\_CALLBACK\_OPENSSL\_PERFORM\_CLIENT\_CERT\_VERIFICATION} = 23, -712 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f}{LWS\_CALLBACK\_CLIENT\_APPEND\_HANDSHAKE\_HEADER} = +752 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a909cc2a7018864b0b71abacc4058fd8f}{LWS\_CALLBACK\_CLIENT\_APPEND\_HANDSHAKE\_HEADER} = 24, -736 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e}{LWS\_CALLBACK\_CONFIRM\_EXTENSION\_OKAY} = 25, -747 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46}{LWS\_CALLBACK\_CLIENT\_CONFIRM\_EXTENSION\_SUPPORTED} +776 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a390da3639296660a78cc1a5dcb19037e}{LWS\_CALLBACK\_CONFIRM\_EXTENSION\_OKAY} = 25, +787 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a1ce5b22039ca37ee224d00047596ea46}{LWS\_CALLBACK\_CLIENT\_CONFIRM\_EXTENSION\_SUPPORTED} = 26, -756 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49}{LWS\_CALLBACK\_PROTOCOL\_INIT} = 27, -759 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa}{LWS\_CALLBACK\_PROTOCOL\_DESTROY} = 28, -764 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01}{LWS\_CALLBACK\_WSI\_CREATE} = 29, -766 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e}{LWS\_CALLBACK\_WSI\_DESTROY} = 30, -768 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34}{LWS\_CALLBACK\_GET\_THREAD\_ID} = 31, -773 \textcolor{comment}{/* external poll() management support */} -774 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412}{LWS\_CALLBACK\_ADD\_POLL\_FD} = 32, -790 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768}{LWS\_CALLBACK\_DEL\_POLL\_FD} = 33, -796 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e}{LWS\_CALLBACK\_CHANGE\_MODE\_POLL\_FD} = 34, -804 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428}{LWS\_CALLBACK\_LOCK\_POLL} = 35, -816 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79}{LWS\_CALLBACK\_UNLOCK\_POLL} = 36, -819 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b}{LWS\_CALLBACK\_OPENSSL\_CONTEXT\_REQUIRES\_PRIVATE\_KEY} +796 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ad5d34583e3556e153eda91620b48cc49}{LWS\_CALLBACK\_PROTOCOL\_INIT} = 27, +799 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a54269ca88508e6efd3afdb9d360a9caa}{LWS\_CALLBACK\_PROTOCOL\_DESTROY} = 28, +804 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7afd8fd77a1cc9405fcb4f26915d7f2d01}{LWS\_CALLBACK\_WSI\_CREATE} = 29, +806 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aca834dc035b7f7486f9ce40fde54fe9e}{LWS\_CALLBACK\_WSI\_DESTROY} = 30, +808 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7adfb41c92e2522712207ef7f2462b5e34}{LWS\_CALLBACK\_GET\_THREAD\_ID} = 31, +813 \textcolor{comment}{/* external poll() management support */} +814 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ab69783a9fbf2ca71ad70706bda77b412}{LWS\_CALLBACK\_ADD\_POLL\_FD} = 32, +830 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a1df60f314710236f9b53efbf468da768}{LWS\_CALLBACK\_DEL\_POLL\_FD} = 33, +836 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa87d2e82fffa42c3680c7403ef94216e}{LWS\_CALLBACK\_CHANGE\_MODE\_POLL\_FD} = 34, +844 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a8909732521d379179003d97ab7a05428}{LWS\_CALLBACK\_LOCK\_POLL} = 35, +856 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a0e9e3dd667c0c42cdbe1a3d921f4fd79}{LWS\_CALLBACK\_UNLOCK\_POLL} = 36, +859 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7aa46f705dcf97502e95627ffde614f98b}{LWS\_CALLBACK\_OPENSSL\_CONTEXT\_REQUIRES\_PRIVATE\_KEY} = 37, -827 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51}{LWS\_CALLBACK\_WS\_PEER\_INITIATED\_CLOSE} = +867 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7ac3fc5bbb55e69f90396526287ee84a51}{LWS\_CALLBACK\_WS\_PEER\_INITIATED\_CLOSE} = 38, -836 LWS\_CALLBACK\_WS\_EXT\_DEFAULTS = 39, -839 LWS\_CALLBACK\_CGI = 40, -841 LWS\_CALLBACK\_CGI\_TERMINATED = 41, -843 LWS\_CALLBACK\_CGI\_STDIN\_DATA = 42, -845 LWS\_CALLBACK\_CGI\_STDIN\_COMPLETED = 43, -847 LWS\_CALLBACK\_ESTABLISHED\_CLIENT\_HTTP = 44, -849 LWS\_CALLBACK\_CLOSED\_CLIENT\_HTTP = 45, -851 LWS\_CALLBACK\_RECEIVE\_CLIENT\_HTTP = 46, -853 LWS\_CALLBACK\_COMPLETED\_CLIENT\_HTTP = 47, -855 LWS\_CALLBACK\_RECEIVE\_CLIENT\_HTTP\_READ = 48, -857 LWS\_CALLBACK\_HTTP\_BIND\_PROTOCOL = 49, -859 LWS\_CALLBACK\_HTTP\_DROP\_PROTOCOL = 50, -861 LWS\_CALLBACK\_CHECK\_ACCESS\_RIGHTS = 51, -863 LWS\_CALLBACK\_PROCESS\_HTML = 52, -865 LWS\_CALLBACK\_ADD\_HEADERS = 53, -867 LWS\_CALLBACK\_SESSION\_INFO = 54, -870 LWS\_CALLBACK\_GS\_EVENT = 55, -873 \textcolor{comment}{/****** add new things just above ---^ ******/} -874 -875 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a}{LWS\_CALLBACK\_USER} = 1000, -877 \}; +876 LWS\_CALLBACK\_WS\_EXT\_DEFAULTS = 39, +879 LWS\_CALLBACK\_CGI = 40, +881 LWS\_CALLBACK\_CGI\_TERMINATED = 41, +883 LWS\_CALLBACK\_CGI\_STDIN\_DATA = 42, +885 LWS\_CALLBACK\_CGI\_STDIN\_COMPLETED = 43, +887 LWS\_CALLBACK\_ESTABLISHED\_CLIENT\_HTTP = 44, +889 LWS\_CALLBACK\_CLOSED\_CLIENT\_HTTP = 45, +891 LWS\_CALLBACK\_RECEIVE\_CLIENT\_HTTP = 46, +893 LWS\_CALLBACK\_COMPLETED\_CLIENT\_HTTP = 47, +895 LWS\_CALLBACK\_RECEIVE\_CLIENT\_HTTP\_READ = 48, +897 LWS\_CALLBACK\_HTTP\_BIND\_PROTOCOL = 49, +899 LWS\_CALLBACK\_HTTP\_DROP\_PROTOCOL = 50, +901 LWS\_CALLBACK\_CHECK\_ACCESS\_RIGHTS = 51, +903 LWS\_CALLBACK\_PROCESS\_HTML = 52, +905 LWS\_CALLBACK\_ADD\_HEADERS = 53, +907 LWS\_CALLBACK\_SESSION\_INFO = 54, +910 LWS\_CALLBACK\_GS\_EVENT = 55, +913 \textcolor{comment}{/****** add new things just above ---^ ******/} +914 +915 \hyperlink{group__usercb_ggad62860e19975ba4c4af401c3cdb6abf7a982579753e70e59a9ea13ce628ac891a}{LWS\_CALLBACK\_USER} = 1000, +917 \}; \end{DoxyCode} diff --git a/doc/latex/group__vhost-mounts.tex b/doc/latex/group__vhost-mounts.tex index 053ca1ff..691a57ce 100644 --- a/doc/latex/group__vhost-mounts.tex +++ b/doc/latex/group__vhost-mounts.tex @@ -55,13 +55,13 @@ L\+W\+S\+M\+P\+R\+O\+\_\+\+C\+A\+L\+L\+B\+A\+CK\hypertarget{group__vhost-mounts_ \end{Desc} \begin{DoxyCode} -1745 \{ -1746 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0}{LWSMPRO\_HTTP} = 0, -1747 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1}{LWSMPRO\_HTTPS} = 1, -1748 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2}{LWSMPRO\_FILE} = 2, -1749 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69}{LWSMPRO\_CGI} = 3, -1750 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970}{LWSMPRO\_REDIR\_HTTP} = 4, -1751 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67}{LWSMPRO\_REDIR\_HTTPS} = 5, -1752 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da}{LWSMPRO\_CALLBACK} = 6, -1753 \}; +1785 \{ +1786 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a1e9f0842b0e85db50fe648ed4ba9a4b0}{LWSMPRO\_HTTP} = 0, +1787 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437afbd10eb4777517ed1f6bfdcf3b9ea1d1}{LWSMPRO\_HTTPS} = 1, +1788 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a42f2361cfe76cd287fa8fcfc502357e2}{LWSMPRO\_FILE} = 2, +1789 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a13ab58b01ac6e05f595977f1e0f0db69}{LWSMPRO\_CGI} = 3, +1790 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437aec137a2434851bd856ceebfb697b9970}{LWSMPRO\_REDIR\_HTTP} = 4, +1791 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a8894d16316863077dfe530963ca59f67}{LWSMPRO\_REDIR\_HTTPS} = 5, +1792 \hyperlink{group__vhost-mounts_gga31eca18e50cb4357480f2fcad36ff437a946a88cf9c852eed2c0317f4115d19da}{LWSMPRO\_CALLBACK} = 6, +1793 \}; \end{DoxyCode} diff --git a/doc/latex/libwebsockets_8h.tex b/doc/latex/libwebsockets_8h.tex index a4eb64f3..e3caff51 100644 --- a/doc/latex/libwebsockets_8h.tex +++ b/doc/latex/libwebsockets_8h.tex @@ -590,7 +590,7 @@ L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN int \hyperlink{gr \item L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN void $\ast$ \hyperlink{group__context-and-vhost_gaeb12f934bfd178bd2132a9e73fc641da}{lws\+\_\+context\+\_\+user} (struct lws\+\_\+context $\ast$context) \item -L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN struct lws $\ast$L\+W\+S\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT \hyperlink{group__client_gac30a7be106abd0cedfbb2e8b8fe3a2f5}{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info} (struct \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} $\ast$ccinfo) +L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN struct lws $\ast$ \hyperlink{group__client_ga0c966136905f467816307cfba6deb5fd}{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info} (struct \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} $\ast$ccinfo) \item L\+W\+S\+\_\+\+V\+I\+S\+I\+B\+LE L\+W\+S\+\_\+\+E\+X\+T\+E\+RN struct lws $\ast$L\+W\+S\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT \hyperlink{group__client_ga4af0a20108a95e8b6d94dd4d80055ff3}{lws\+\_\+client\+\_\+connect} (struct lws\+\_\+context $\ast$clients, const char $\ast$address, int port, int ssl\+\_\+connection, const char $\ast$path, const char $\ast$host, const char $\ast$origin, const char $\ast$protocol, int ietf\+\_\+version\+\_\+or\+\_\+minus\+\_\+one) L\+W\+S\+\_\+\+W\+A\+R\+N\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED \item diff --git a/doc/latex/structlws__client__connect__info.tex b/doc/latex/structlws__client__connect__info.tex index 541a9806..4432cd9d 100644 --- a/doc/latex/structlws__client__connect__info.tex +++ b/doc/latex/structlws__client__connect__info.tex @@ -39,12 +39,14 @@ const char $\ast$ \hyperlink{structlws__client__connect__info_a9959ba103d3d2484e \item struct lws\+\_\+vhost $\ast$ \hyperlink{structlws__client__connect__info_a3893181d728f326f9f5b47c1459cb8be}{vhost} \item +struct lws $\ast$$\ast$ \hyperlink{structlws__client__connect__info_a065063b5117ecd0a59567c97f04bda2e}{pwsi} +\item void $\ast$ \hyperlink{structlws__client__connect__info_ad47f50d1633dc5df74548606c9a66d73}{\+\_\+unused} \mbox{[}4\mbox{]} \end{DoxyCompactItemize} \subsection{Detailed Description} -struct \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} -\/ parameters to connect with when using \hyperlink{group__client_gac30a7be106abd0cedfbb2e8b8fe3a2f5}{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info()} +struct \hyperlink{structlws__client__connect__info}{lws\+\_\+client\+\_\+connect\+\_\+info} -\/ parameters to connect with when using \hyperlink{group__client_ga0c966136905f467816307cfba6deb5fd}{lws\+\_\+client\+\_\+connect\+\_\+via\+\_\+info()} \subsection{Field Documentation} \index{lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+info}!\+\_\+unused@{\+\_\+unused}} @@ -83,7 +85,10 @@ uri path \index{lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+con remote port to connect to \index{lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+info}!protocol@{protocol}} \index{protocol@{protocol}!lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+info}} \subsubsection[{\texorpdfstring{protocol}{protocol}}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ lws\+\_\+client\+\_\+connect\+\_\+info\+::protocol}\hypertarget{structlws__client__connect__info_aba35adfb74845a5fd0c3dc141cbdddd2}{}\label{structlws__client__connect__info_aba35adfb74845a5fd0c3dc141cbdddd2} -list of ws protocols we could accept \index{lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+info}!ssl\+\_\+connection@{ssl\+\_\+connection}} +list of ws protocols we could accept \index{lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+info}!pwsi@{pwsi}} +\index{pwsi@{pwsi}!lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+info}} +\subsubsection[{\texorpdfstring{pwsi}{pwsi}}]{\setlength{\rightskip}{0pt plus 5cm}struct lws$\ast$$\ast$ lws\+\_\+client\+\_\+connect\+\_\+info\+::pwsi}\hypertarget{structlws__client__connect__info_a065063b5117ecd0a59567c97f04bda2e}{}\label{structlws__client__connect__info_a065063b5117ecd0a59567c97f04bda2e} +if not N\+U\+LL, store the new wsi here early in the connection process. Although we return the new wsi, the call to create the client connection does progress the connection somewhat and may meet an error that will result in the connection being scrubbed and N\+U\+LL returned. While the wsi exists though, he may process a callback like C\+L\+I\+E\+N\+T\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+E\+R\+R\+OR with his wsi\+: this gives the user callback a way to identify which wsi it is that faced the error even before the new wsi is returned and even if ultimately no wsi is returned. \index{lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+info}!ssl\+\_\+connection@{ssl\+\_\+connection}} \index{ssl\+\_\+connection@{ssl\+\_\+connection}!lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+info}} \subsubsection[{\texorpdfstring{ssl\+\_\+connection}{ssl\_connection}}]{\setlength{\rightskip}{0pt plus 5cm}int lws\+\_\+client\+\_\+connect\+\_\+info\+::ssl\+\_\+connection}\hypertarget{structlws__client__connect__info_a9862297827639238a7a0b4054c3ddf3d}{}\label{structlws__client__connect__info_a9862297827639238a7a0b4054c3ddf3d} nonzero for ssl \index{lws\+\_\+client\+\_\+connect\+\_\+info@{lws\+\_\+client\+\_\+connect\+\_\+info}!uri\+\_\+replace\+\_\+from@{uri\+\_\+replace\+\_\+from}} diff --git a/lib/client-handshake.c b/lib/client-handshake.c index 5c0d356b..678979fb 100644 --- a/lib/client-handshake.c +++ b/lib/client-handshake.c @@ -12,6 +12,7 @@ lws_client_connect_2(struct lws *wsi) struct sockaddr_in server_addr4; struct lws_pollfd pfd; struct sockaddr *v; + const char *cce = NULL; int n, plen = 0; const char *ads; @@ -72,6 +73,7 @@ lws_client_connect_2(struct lws *wsi) #else lwsl_err("getaddrinfo: %s\n", gai_strerror(n)); #endif + cce = "getaddrinfo (ipv6) failed"; goto oom4; } @@ -97,6 +99,7 @@ lws_client_connect_2(struct lws *wsi) default: lwsl_err("Unknown address family\n"); freeaddrinfo(result); + cce = "unknown address family"; goto oom4; } @@ -114,6 +117,7 @@ lws_client_connect_2(struct lws *wsi) if (getaddrinfo(ads, NULL, &ai, &result)) { lwsl_err("getaddrinfo failed\n"); + cce = "getaddrinfo (ipv4) failed"; goto oom4; } @@ -157,6 +161,7 @@ lws_client_connect_2(struct lws *wsi) if (lws_plat_set_socket_options(wsi->vhost, wsi->sock)) { lwsl_err("Failed to set wsi socket options\n"); compatible_close(wsi->sock); + cce = "set socket opts failed"; goto oom4; } @@ -166,6 +171,7 @@ lws_client_connect_2(struct lws *wsi) lws_libuv_accept(wsi, wsi->sock); if (insert_wsi_socket_into_fds(context, wsi)) { compatible_close(wsi->sock); + cce = "insert wsi failed"; goto oom4; } @@ -291,10 +297,12 @@ oom4: /* we're closing, losing some rx is OK */ wsi->u.hdr.ah->rxpos = wsi->u.hdr.ah->rxlen; //lwsl_err("%d\n", wsi->mode); - if (wsi->mode == LWSCM_HTTP_CLIENT) + if (wsi->mode == LWSCM_HTTP_CLIENT) { wsi->vhost->protocols[0].callback(wsi, LWS_CALLBACK_CLIENT_CONNECTION_ERROR, - wsi->user_space, NULL, 0); + wsi->user_space, (void *)cce, strlen(cce)); + wsi->already_did_cce = 1; + } /* take care that we might be inserted in fds already */ if (wsi->position_in_fds_table != -1) goto failed; @@ -566,12 +574,20 @@ lws_client_connect_via_info(struct lws_client_connect_info *i) wsi->u.hdr.stash->protocol[sizeof(wsi->u.hdr.stash->protocol) - 1] = '\0'; wsi->u.hdr.stash->method[sizeof(wsi->u.hdr.stash->method) - 1] = '\0'; + if (i->pwsi) + *i->pwsi = wsi; + /* if we went on the waiting list, no probs just return the wsi * when we get the ah, now or later, he will call * lws_client_connect_via_info2() below. */ - if (lws_header_table_attach(wsi, 0) < 0) - return NULL; + if (lws_header_table_attach(wsi, 0) < 0) { + /* + * if we failed here, the connection is already closed + * and freed. + */ + goto bail1; + } if (i->parent_wsi) { lwsl_info("%s: created child %p of parent %p\n", __func__, @@ -592,6 +608,10 @@ lws_client_connect_via_info(struct lws_client_connect_info *i) bail: lws_free(wsi); +bail1: + if (i->pwsi) + *i->pwsi = NULL; + return NULL; } diff --git a/lib/client.c b/lib/client.c index 618f5bb9..11030792 100755 --- a/lib/client.c +++ b/lib/client.c @@ -72,8 +72,9 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, { struct lws_context_per_thread *pt = &context->pt[(int)wsi->tsi]; char *p = (char *)&pt->serv_buf[0]; - char *sb = p; + const char *cce = NULL; unsigned char c; + char *sb = p; int n, len; switch (wsi->mode) { @@ -155,8 +156,10 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, n = lws_ssl_client_connect1(wsi); if (!n) return 0; - if (n < 0) + if (n < 0) { + cce = "lws_ssl_client_connect1 failed"; goto bail3; + } } else wsi->ssl = NULL; @@ -168,8 +171,10 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, n = lws_ssl_client_connect2(wsi); if (!n) return 0; - if (n < 0) + if (n < 0) { + cce = "lws_ssl_client_connect2 failed"; goto bail3; + } } else wsi->ssl = NULL; #endif @@ -220,7 +225,7 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, lwsl_debug("Server connection %p (fd=%d) dead\n", (void *)wsi, pollfd->fd); - + cce = "Peer hung up"; goto bail3; } @@ -255,6 +260,7 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, switch (n) { case 0: case LWS_SSL_CAPABLE_ERROR: + cce = "read failed"; goto bail3; case LWS_SSL_CAPABLE_MORE_SERVICE: return 0; @@ -287,7 +293,8 @@ bail3: lwsl_info("closing conn at LWS_CONNMODE...SERVER_REPLY\n"); wsi->vhost->protocols[0].callback(wsi, LWS_CALLBACK_CLIENT_CONNECTION_ERROR, - wsi->user_space, NULL, 0); + wsi->user_space, (void *)cce, cce ? strlen(cce) : 0); + wsi->already_did_cce = 1; lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS); return -1; @@ -357,10 +364,10 @@ lws_http_transaction_completed_client(struct lws *wsi) int lws_client_interpret_server_handshake(struct lws *wsi) { - int n, len, okay = 0, isErrorCodeReceived = 0, port = 0, ssl = 0; + int n, len, okay = 0, port = 0, ssl = 0; int close_reason = LWS_CLOSE_STATUS_PROTOCOL_ERR; struct lws_context *context = wsi->context; - const char *pc, *prot, *ads = NULL, *path; + const char *pc, *prot, *ads = NULL, *path, *cce = NULL; struct allocated_headers *ah; char *p; #ifndef LWS_NO_EXTENSIONS @@ -404,6 +411,7 @@ lws_client_interpret_server_handshake(struct lws *wsi) p = lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP); if (wsi->do_ws && !p) { lwsl_info("no URI\n"); + cce = "HS: URI missing"; goto bail3; } if (!p) { @@ -411,23 +419,29 @@ lws_client_interpret_server_handshake(struct lws *wsi) wsi->u.http.connection_type = HTTP_CONNECTION_CLOSE; } if (!p) { + cce = "HS: URI missing"; lwsl_info("no URI\n"); goto bail3; } n = atoi(p); if (n == 301 || n == 302 || n == 303 || n == 307 || n == 308) { p = lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_LOCATION); - if (!p) + if (!p) { + cce = "HS: Redirect code but no Location"; goto bail3; + } - if (lws_parse_uri(p, &prot, &ads, &port, &path)) + if (lws_parse_uri(p, &prot, &ads, &port, &path)) { + cce = "HS: URI did not parse"; goto bail3; + } if (!strcmp(prot, "wss://") || !strcmp(prot, "https://")) ssl = 1; if (lws_client_reset(wsi, ssl, ads, port, path, ads)) { lwsl_err("Redirect failed\n"); + cce = "HS: Redirect failed"; goto bail3; } return 0; @@ -436,6 +450,7 @@ lws_client_interpret_server_handshake(struct lws *wsi) if (!wsi->do_ws) { if (n != 200) { lwsl_notice("Connection failed with code %d", n); + cce = "HS: Server did not return 200"; goto bail2; } @@ -451,6 +466,7 @@ lws_client_interpret_server_handshake(struct lws *wsi) /* allocate the per-connection user memory (if any) */ if (lws_ensure_user_space(wsi)) { lwsl_err("Problem allocating wsi user mem\n"); + cce = "HS: OOM"; goto bail2; } @@ -481,8 +497,11 @@ lws_client_interpret_server_handshake(struct lws *wsi) * headers and OK it */ if (wsi->protocol->callback(wsi, LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH, - wsi->user_space, NULL, 0)) + wsi->user_space, NULL, 0)) { + + cce = "HS: disallowed by client filter"; goto bail2; + } /* clear his proxy connection timeout */ lws_set_timeout(wsi, NO_PENDING_TIMEOUT, 0); @@ -492,8 +511,10 @@ lws_client_interpret_server_handshake(struct lws *wsi) /* call him back to inform him he is up */ if (wsi->protocol->callback(wsi, LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP, - wsi->user_space, NULL, 0)) + wsi->user_space, NULL, 0)) { + cce = "HS: disallowed at ESTABLISHED"; goto bail3; + } /* free up his parsing allocations */ lws_header_table_detach(wsi, 0); @@ -505,36 +526,41 @@ lws_client_interpret_server_handshake(struct lws *wsi) if (lws_hdr_total_length(wsi, WSI_TOKEN_ACCEPT) == 0) { lwsl_info("no ACCEPT\n"); - isErrorCodeReceived = 1; + cce = "HS: ACCEPT missing"; goto bail3; } if (p && strncmp(p, "101", 3)) { lwsl_warn( "lws_client_handshake: got bad HTTP response '%s'\n", p); + cce = "HS: ws upgrade response not 101"; goto bail3; } p = lws_hdr_simple_ptr(wsi, WSI_TOKEN_UPGRADE); if (!p) { lwsl_info("no UPGRADE\n"); + cce = "HS: UPGRADE missing"; goto bail3; } strtolower(p); if (strcmp(p, "websocket")) { lwsl_warn( "lws_client_handshake: got bad Upgrade header '%s'\n", p); + cce = "HS: Upgrade to something other than websocket"; goto bail3; } p = lws_hdr_simple_ptr(wsi, WSI_TOKEN_CONNECTION); if (!p) { lwsl_info("no Connection hdr\n"); + cce = "HS: CONNECTION missing"; goto bail3; } strtolower(p); if (strcmp(p, "upgrade")) { lwsl_warn("lws_client_int_s_hs: bad header %s\n", p); + cce = "HS: UPGRADE malformed"; goto bail3; } @@ -577,6 +603,7 @@ lws_client_interpret_server_handshake(struct lws *wsi) if (!okay) { lwsl_err("lws_client_int_s_hs: got bad protocol %s\n", p); + cce = "HS: PROTOCOL malformed"; goto bail2; } @@ -595,6 +622,7 @@ lws_client_interpret_server_handshake(struct lws *wsi) if (wsi->protocol == NULL) { lwsl_err("lws_client_int_s_hs: fail protocol %s\n", p); + cce = "HS: Cannot match protocol"; goto bail2; } @@ -615,6 +643,7 @@ check_extensions: if (lws_hdr_copy(wsi, sb, context->pt_serv_buf_size, WSI_TOKEN_EXTENSIONS) < 0) { lwsl_warn("ext list from server failed to copy\n"); + cce = "HS: EXT: list too big"; goto bail2; } @@ -688,8 +717,10 @@ check_extensions: if (user_callback_handle_rxflow(wsi->protocol->callback, wsi, LWS_CALLBACK_WS_EXT_DEFAULTS, (char *)ext->name, ext_name, - sizeof(ext_name))) + sizeof(ext_name))) { + cce = "HS: EXT: failed setting defaults"; goto bail2; + } if (ext_name[0] && lws_ext_parse_options(ext, wsi, wsi->act_ext_user[ @@ -697,6 +728,7 @@ check_extensions: strlen(ext_name))) { lwsl_err("%s: unable to parse user defaults '%s'", __func__, ext_name); + cce = "HS: EXT: failed parsing defaults"; goto bail2; } @@ -708,6 +740,7 @@ check_extensions: opts, a, c - a)) { lwsl_err("%s: unable to parse remote def '%s'", __func__, a); + cce = "HS: EXT: failed parsing options"; goto bail2; } @@ -717,6 +750,7 @@ check_extensions: NULL, 0)) { lwsl_err("%s: ext %s rejects server options %s", ext->name, a); + cce = "HS: EXT: Rejects server options"; goto bail2; } @@ -727,6 +761,7 @@ check_extensions: if (n == 0) { lwsl_warn("Unknown ext '%s'!\n", ext_name); + cce = "HS: EXT: unknown ext"; goto bail2; } @@ -745,12 +780,14 @@ check_accept: if (strcmp(p, wsi->u.hdr.ah->initial_handshake_hash_base64)) { lwsl_warn("lws_client_int_s_hs: accept '%s' wrong vs '%s'\n", p, wsi->u.hdr.ah->initial_handshake_hash_base64); + cce = "HS: Accept hash wrong"; goto bail2; } /* allocate the per-connection user memory (if any) */ if (lws_ensure_user_space(wsi)) { lwsl_err("Problem allocating wsi user mem\n"); + cce = "HS: OOM"; goto bail2; } @@ -759,8 +796,10 @@ check_accept: * headers and OK it */ if (wsi->protocol->callback(wsi, LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH, - wsi->user_space, NULL, 0)) + wsi->user_space, NULL, 0)) { + cce = "HS: Rejected by filter cb"; goto bail2; + } /* clear his proxy connection timeout */ lws_set_timeout(wsi, NO_PENDING_TIMEOUT, 0); @@ -785,6 +824,7 @@ check_accept: wsi->u.ws.rx_ubuf = lws_malloc(n + 4 /* 0x0000ffff zlib */); if (!wsi->u.ws.rx_ubuf) { lwsl_err("Out of Mem allocating rx buffer %d\n", n); + cce = "HS: OOM"; goto bail2; } wsi->u.ws.rx_ubuf_alloc = n; @@ -793,6 +833,7 @@ check_accept: if (setsockopt(wsi->sock, SOL_SOCKET, SO_SNDBUF, (const char *)&n, sizeof n)) { lwsl_warn("Failed to set SNDBUF to %d", n); + cce = "HS: SO_SNDBUF failed"; goto bail3; } @@ -801,8 +842,10 @@ check_accept: /* call him back to inform him he is up */ if (wsi->protocol->callback(wsi, LWS_CALLBACK_CLIENT_ESTABLISHED, - wsi->user_space, NULL, 0)) + wsi->user_space, NULL, 0)) { + cce = "HS: Rejected at CLIENT_ESTABLISHED"; goto bail3; + } #ifndef LWS_NO_EXTENSIONS /* * inform all extensions, not just active ones since they @@ -828,18 +871,10 @@ bail3: close_reason = LWS_CLOSE_STATUS_NOSTATUS; bail2: - if (wsi->protocol && wsi->state == LWSS_ESTABLISHED) { - if (isErrorCodeReceived && p) { - wsi->protocol->callback(wsi, - LWS_CALLBACK_CLIENT_CONNECTION_ERROR, - wsi->user_space, p, - (unsigned int)strlen(p)); - } else { - wsi->protocol->callback(wsi, - LWS_CALLBACK_CLIENT_CONNECTION_ERROR, - wsi->user_space, NULL, 0); - } - } + wsi->protocol->callback(wsi, LWS_CALLBACK_CLIENT_CONNECTION_ERROR, + wsi->user_space, (void *)cce, + (unsigned int) (cce ? strlen(cce): 0)); + wsi->already_did_cce = 1; lwsl_info("closing connection due to bail2 connection error\n"); diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index df1e18a9..586dab3e 100755 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -480,22 +480,12 @@ just_kill_connection: lwsl_debug("calling back CLOSED_HTTP\n"); wsi->vhost->protocols->callback(wsi, LWS_CALLBACK_CLOSED_HTTP, wsi->user_space, NULL, 0 ); - } else if (wsi->mode == LWSCM_WSCL_WAITING_SERVER_REPLY || - wsi->mode == LWSCM_WSCL_WAITING_CONNECT) { - char* errorString; - - lwsl_debug("Connection closed before server reply\n"); - errorString = lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP); - if (errorString) { - wsi->vhost->protocols[0].callback(wsi, - LWS_CALLBACK_CLIENT_CONNECTION_ERROR, - wsi->user_space, errorString, - (unsigned int)strlen(errorString)); - } else { + } else if ((wsi->mode == LWSCM_WSCL_WAITING_SERVER_REPLY || + wsi->mode == LWSCM_WSCL_WAITING_CONNECT) && + !wsi->already_did_cce) { wsi->vhost->protocols[0].callback(wsi, LWS_CALLBACK_CLIENT_CONNECTION_ERROR, wsi->user_space, NULL, 0); - } } else lwsl_debug("not calling back closed mode=%d state=%d\n", wsi->mode, wsi->state_pre_close); diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 5b69136b..e927276e 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -576,7 +576,47 @@ enum lws_callback_reasons { LWS_CALLBACK_CLIENT_CONNECTION_ERROR = 1, /**< the request client connection has been unable to complete a * handshake with the remote server. If in is non-NULL, you can - * find an error string of length len where it points to. */ + * find an error string of length len where it points to + * + * Diagnostic strings that may be returned include + * + * "getaddrinfo (ipv6) failed" + * "unknown address family" + * "getaddrinfo (ipv4) failed" + * "set socket opts failed" + * "insert wsi failed" + * "lws_ssl_client_connect1 failed" + * "lws_ssl_client_connect2 failed" + * "Peer hung up" + * "read failed" + * "HS: URI missing" + * "HS: Redirect code but no Location" + * "HS: URI did not parse" + * "HS: Redirect failed" + * "HS: Server did not return 200" + * "HS: OOM" + * "HS: disallowed by client filter" + * "HS: disallowed at ESTABLISHED" + * "HS: ACCEPT missing" + * "HS: ws upgrade response not 101" + * "HS: UPGRADE missing" + * "HS: Upgrade to something other than websocket" + * "HS: CONNECTION missing" + * "HS: UPGRADE malformed" + * "HS: PROTOCOL malformed" + * "HS: Cannot match protocol" + * "HS: EXT: list too big" + * "HS: EXT: failed setting defaults" + * "HS: EXT: failed parsing defaults" + * "HS: EXT: failed parsing options" + * "HS: EXT: Rejects server options" + * "HS: EXT: unknown ext" + * "HS: Accept hash wrong" + * "HS: Rejected by filter cb" + * "HS: OOM" + * "HS: SO_SNDBUF failed" + * "HS: Rejected at CLIENT_ESTABLISHED" + */ LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH = 2, /**< this is the last chance for the client user code to examine the * http headers and decide to reject the connection. If the @@ -1841,6 +1881,17 @@ struct lws_client_connect_info { /**< see uri_replace_from */ struct lws_vhost *vhost; /**< vhost to bind to (used to determine related SSL_CTX) */ + struct lws **pwsi; + /**< if not NULL, store the new wsi here early in the connection + * process. Although we return the new wsi, the call to create the + * client connection does progress the connection somewhat and may + * meet an error that will result in the connection being scrubbed and + * NULL returned. While the wsi exists though, he may process a + * callback like CLIENT_CONNECTION_ERROR with his wsi: this gives the + * user callback a way to identify which wsi it is that faced the error + * even before the new wsi is returned and even if ultimately no wsi + * is returned. + */ /* Add new things just above here ---^ * This is part of the ABI, don't needlessly break compatibility @@ -1857,9 +1908,10 @@ struct lws_client_connect_info { * lws_client_connect_via_info() - Connect to another websocket server * \param ccinfo: pointer to lws_client_connect_info struct * - * This function creates a connection to a remote server + * This function creates a connection to a remote server using the + * information provided in ccinfo. */ -LWS_VISIBLE LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT +LWS_VISIBLE LWS_EXTERN struct lws * lws_client_connect_via_info(struct lws_client_connect_info * ccinfo); /** diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index b71b78d8..6cdfdd54 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -1259,6 +1259,7 @@ struct lws { unsigned int cache_intermediaries:1; unsigned int favoured_pollin:1; unsigned int sending_chunked:1; + unsigned int already_did_cce:1; #ifdef LWS_WITH_ACCESS_LOG unsigned int access_log_pending:1; #endif diff --git a/lib/service.c b/lib/service.c index e14709ee..8d1a9b3b 100644 --- a/lib/service.c +++ b/lib/service.c @@ -349,7 +349,7 @@ lws_service_timeout_check(struct lws *wsi, unsigned int sec) if (wsi->mode == LWSCM_WSCL_WAITING_SSL) wsi->vhost->protocols[0].callback(wsi, LWS_CALLBACK_CLIENT_CONNECTION_ERROR, - wsi->user_space, NULL, 0); + wsi->user_space, (void *)"Timed out waiting SSL", 21); lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS); diff --git a/test-server/test-client.c b/test-server/test-client.c index 688c513e..828e2a21 100644 --- a/test-server/test-client.c +++ b/test-server/test-client.c @@ -85,6 +85,8 @@ static int callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len) { + const char *which = "http"; + switch (reason) { case LWS_CALLBACK_CLIENT_ESTABLISHED: @@ -104,14 +106,12 @@ callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason, /* because we are protocols[0] ... */ case LWS_CALLBACK_CLIENT_CONNECTION_ERROR: - if (wsi == wsi_dumb) { - lwsl_err("dumb: LWS_CALLBACK_CLIENT_CONNECTION_ERROR\n"); - wsi_dumb = NULL; - } - if (wsi == wsi_mirror) { - lwsl_err("mirror: LWS_CALLBACK_CLIENT_CONNECTION_ERROR\n"); - wsi_mirror = NULL; - } + if (wsi == wsi_dumb) + which = "dumb"; + if (wsi == wsi_mirror) + which = "mirror"; + + lwsl_err("CLIENT_CONNECTION_ERROR: %s: %s %p\n", which, in); break; case LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED: @@ -520,18 +520,21 @@ int main(int argc, char **argv) if (!wsi_dumb && ratelimit_connects(&rl_dumb, 2u)) { lwsl_notice("dumb: connecting\n"); i.protocol = protocols[PROTOCOL_DUMB_INCREMENT].name; - wsi_dumb = lws_client_connect_via_info(&i); + i.pwsi = &wsi_dumb; + lws_client_connect_via_info(&i); } if (!wsi_mirror && ratelimit_connects(&rl_mirror, 2u)) { lwsl_notice("mirror: connecting\n"); i.protocol = protocols[PROTOCOL_LWS_MIRROR].name; + i.pwsi = &wsi_mirror; wsi_mirror = lws_client_connect_via_info(&i); } } else if (!wsi_dumb && ratelimit_connects(&rl_dumb, 2u)) { lwsl_notice("http: connecting\n"); - wsi_dumb = lws_client_connect_via_info(&i); + i.pwsi = &wsi_dumb; + lws_client_connect_via_info(&i); } lws_service(context, 500);