1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-23 00:00:06 +01:00
libwebsockets/lib
Andy Green 21697b3210 ss: handle DESTROY_ME from inside ss creation
Normally when doing a Client Connection Error handling,
we can action any ss relationship straight away since
we are in a wsi callback without any ss-aware parents
in the call stack.

But in the specific case we're doing the initial onward
wsi connection part on behalf of a ss, in fact the call
stack does have earlier  parents holding references on
the related ss.

For example

  secstream_h1 (ss-h1.c:470)                          CCE
  lws_inform_client_conn_fail (close.c:319)           fails early
  lws_client_connect_2_dnsreq (connect2.c:349)
  lws_http_client_connect_via_info2 (connect.c:71)
  lws_header_table_attach (parsers.c:291)
  rops_client_bind_h1 (ops-h1.c:1001)
  lws_client_connect_via_info (connect.c:429)         start onward connect
  _lws_ss_client_connect (secure-streams.c:859)
  _lws_ss_request_tx (secure-streams.c:1577)
  lws_ss_request_tx (secure-streams.c:1515)           request tx
  ss_cpd_state (captive-portal-detect.c:50)
  lws_ss_event_helper (secure-streams.c:408)
  lws_ss_create (secure-streams.c:1256)                SS Create

Under these conditions, we can't action the DESTROY_ME that
is coming when the CCE exhausts the retries.

This patch adds a flag that is set during the SS's onward wsi
connection attempt and causes it to stash rather than action
the result code.

The result code is brought out from the stash when we return to
_lws_ss_client_connect level, and passed up in the SS flow until
it is actioned, cleanly aborting the ss create.
2021-08-13 05:47:00 +01:00
..
abstract license: fix two old headers from pre-MIT change 2021-05-04 18:35:00 +01:00
core tls: add option to serialize ssl handshake 2021-07-07 08:49:36 +01:00
core-net iface: score binds 2021-07-20 10:30:58 +01:00
drivers drivers: spi: avoid leaking uninitialized bits 2021-04-15 17:41:53 +01:00
event-libs event libs: glib: use glib.h specifically 2021-07-08 06:24:52 +01:00
jose jwt: sign via info 2021-03-25 08:40:52 +00:00
misc b64: add downcasts for gcc 4.4 2021-07-22 05:01:52 +01:00
plat types: handle ssize_t is int 2021-08-13 05:45:12 +01:00
roles http: date: use timegm 2021-08-13 05:46:05 +01:00
secure-streams ss: handle DESTROY_ME from inside ss creation 2021-08-13 05:47:00 +01:00
system ss: proxy: fix conn deref on onward 2021-04-21 19:31:45 +01:00
tls types: handle ssize_t is int 2021-08-13 05:45:12 +01:00
CMakeLists.txt cmake: enable user cmake to use FetchContent on lws 2021-04-15 17:41:34 +01:00
README.md cleaning 2020-01-05 22:17:58 +00:00

Library sources layout

Code that goes in the libwebsockets library itself lives down ./lib

Path Sources
lib/core Core lws code related to generic fd and wsi servicing and management
lib/core-net Core lws code that applies only if networking enabled
lib/event-libs Code containing optional event-lib specific adaptations
lib/jose JOSE / JWS / JWK / JWE implementations
lib/misc Code for various mostly optional miscellaneous features
lib/plat Platform-specific adaptation code
lib/roles Code for specific optional wsi roles, eg, http/1, h2, ws, raw, etc
lib/system Code for system-level features, eg, dhcpclient
lib/tls Code supporting the various TLS libraries