1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-16 00:00:07 +01:00
No description
Find a file
Andy Green 406b79e440 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-16 08:07:35 +01:00
cmake http: date: use timegm 2021-08-13 05:25:00 +01:00
contrib cmake: support iOS armv7 build 2020-11-09 07:40:40 +00:00
doc-assets tls: JIT Trust 2021-06-22 15:55:29 +01:00
include cpd: pass up lws_ss_request_tx ret 2021-08-16 08:07:32 +01:00
lib ss: handle DESTROY_ME from inside ss creation 2021-08-16 08:07:35 +01:00
lwsws lws_metrics 2021-03-08 21:47:28 +00:00
minimal-examples cpd: pass up lws_ss_request_tx ret 2021-08-16 08:07:32 +01:00
plugin-standalone plugins: add option LWS_WITH_PLUGINS_BUILTIN 2021-01-31 20:24:29 +00:00
plugins Wextra 2021-07-04 10:29:54 +01:00
READMEs docs: event loops intro 2021-08-09 17:31:16 +01:00
scripts tls: JIT Trust 2021-06-22 15:55:29 +01:00
test-apps Wextra 2021-07-04 10:29:54 +01:00
win32port mingw: libevent build fixes 2020-11-28 10:58:38 +00:00
.gitignore dhcp: clean 2021-02-17 11:39:15 +00:00
.mailmap mailmap 2018-08-14 08:00:30 +08:00
.sai.json tls: JIT Trust 2021-06-22 15:55:29 +01:00
bug_report.md docs: switch to use main 2020-10-19 16:35:03 +01:00
changelog v4.2.0 release 2021-04-15 17:44:02 +01:00
CMakeLists-implied-options.txt windows: work well with vcpkg pthreads 2021-04-05 10:55:04 +01:00
CMakeLists.txt http: date: use timegm 2021-08-13 05:25:00 +01:00
component.mk Fixes to track updates in esp-idf 2018-06-20 16:41:28 +08:00
Kconfig esp32: enforce ssl nonblocking 2017-04-03 14:09:37 +08:00
libwebsockets.dox ss: server: add foreach client cb api 2020-11-11 06:58:20 +00:00
LICENSE tls: JIT Trust 2021-06-22 15:55:29 +01:00
Makefile.projbuild esp32-selfsigned 2017-12-01 11:37:35 +08:00
README.md README.md: update 2021-07-13 08:27:25 +01:00

CI status Coverity Scan Build Status CII Best Practices Codacy Badge Total alerts Language grade: C/C++ Language grade: JavaScript

Libwebsockets

Libwebsockets is a simple-to-use, MIT-license, pure C library providing client and server for http/1, http/2, websockets, MQTT and other protocols in a security-minded, lightweight, configurable, scalable and flexible way. It's easy to build and cross-build via cmake and is suitable for tasks from embedded RTOS through mass cloud serving.

80+ independent minimal examples for various scenarios, CC0-licensed (public domain) for cut-and-paste, allow you to get started quickly.

There are a lot of READMEs on a variety of topics.

We do a huge amount of CI testing per push, currently 495 builds on 27 platforms.

overview

News

v4.2 is released

See the changelog

Support

This is the libwebsockets C library for lightweight websocket clients and servers. For support, visit

https://libwebsockets.org

and consider joining the project mailing list at

https://libwebsockets.org/mailman/listinfo/libwebsockets

You can get the latest version of the library from git:

Doxygen API docs for development: https://libwebsockets.org/lws-api-doc-main/html/index.html