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 fd70c1ac81 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:32:31 +00:00
..
abstract sequencer: upgrade timeout to use us 2019-08-08 09:45:09 +01:00
core lws_context_create: clean up cancel pipes on fail 2019-11-16 16:55:09 +00:00
core-net close.c: close reason length wrong 2019-12-18 14:45:31 +00:00
event-libs unix: sul schedule rename internal api and call regardless of existing timeout 2019-11-01 12:35:31 +00:00
jose COV225132: check if no JOSE alg 2019-09-17 09:25:31 +01:00
misc illumos: fix build errors and warnings for v3.2-stable on illumos 2019-10-07 10:14:02 +01:00
plat unix: sul schedule rename internal api and call regardless of existing timeout 2019-11-01 12:35:31 +00:00
roles server vfs: close: cleanup also at just_kill_connection 2019-11-16 08:20:48 +00:00
tls openssl: handle negotiation errors handling in client 2019-12-19 21:32:31 +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