1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-16 00:00:07 +01:00
libwebsockets/lib/tls
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
..
mbedtls tls: lws_system per-connection client certs 2019-12-09 14:48:54 +00:00
openssl openssl: handle negotiation errors handling in client 2019-12-19 21:30:09 +00:00
lws-gencrypto-common.c private.h: rename to contain dir 2019-08-15 10:49:52 +01:00
lws-genec-common.c private.h: rename to contain dir 2019-08-15 10:49:52 +01:00
private-lib-tls.h freertos: rename esp32 plat to freertos 2019-08-26 09:58:57 +01:00
private-network.h clean: internally use LWS_WITH_CLIENT and _SERVER 2019-08-26 09:58:57 +01:00
tls-client.c http_proxy: fix for mbedtls 2019-11-16 09:00:15 +00:00
tls-network.c client: improve redirect 2019-09-22 03:07:57 -07:00
tls-server.c alpn: move out of tls-server so it can be used if server disabled 2019-11-06 06:39:28 +00:00
tls.c alpn: move out of tls-server so it can be used if server disabled 2019-11-06 06:39:28 +00:00