1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-16 00:00:07 +01:00
libwebsockets/lib
Wojtek Kaniewski ea50c8722c openssl: handle negotiation errors handling in client
If a client connects to a SSL server and the server sends handshake
alert (e.g. no matching ciphers) SSL_connect() fails, but because
SSL_ERROR_SSL return value is not handled, it's not considered a
failure. SSL_want_read() will return 1 and the client will happily wait
for more data from the server. Now if the server closes connection after
sending handshake alert, POLLIN event will be triggered,
lws_tls_client_connect() called again, but SSL_connect() will fail
without calling read(), so the client will end up consuming 100% CPU
because POLLIN will be triggered repeatedly.

Similar error handling is used in lws_tls_server_accept() and the
condition checks for SSL_ERROR_SSL. Using the same condition in
lws_tls_client_connect() fixes the problem.

Tested with OpenSSL 1.0.2k.
2019-12-19 21:30:09 +00:00
..
abstract format strings: ban %.*s as some platforms lack it 2019-11-04 13:49:14 +00:00
core lws_strexp: flexible string expansion helper 2019-12-16 18:16:01 +00:00
core-net close.c: close reason length wrong 2019-12-14 23:55:28 +00:00
event-libs unix: sul schedule rename internal api and call regardless of existing timeout 2019-11-01 07:07:33 +00:00
jose format strings: ban %.*s as some platforms lack it 2019-11-04 13:49:14 +00:00
misc license: fix up last mentions of lgpl outside of the source file license grant part 2019-12-02 11:19:30 +00:00
plat async dns: android: fix build error 2019-12-08 14:28:40 +00:00
roles basic auth: add callback option 2019-12-14 23:55:28 +00:00
system adopt: pass wsi opaque so its set from the start 2019-12-09 14:48:54 +00:00
tls openssl: handle negotiation errors handling in client 2019-12-19 21:30:09 +00:00
README.md JOSE: refactor and prepare for JWE 2018-12-27 06:45:31 +08: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/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/tls Code supporting the various TLS libraries
libwebsockets.h Public API header for the whole of lws