Skip to content
Snippets Groups Projects
Commit 26eef6e0 authored by Santeri Hernejärvi's avatar Santeri Hernejärvi Committed by Andy Green
Browse files

mbedtls: Fix reads getting stuck when the socket has disconnected

We've seen this behaviour when iOS resumes from sleep:

dbg> 0x11cd03750: ssl err dbg> lws_ssl_capable_read: WANT_READ
dbg> 0x11cd03750: LWS_SSL_CAPABLE_MORE_SERVICE
dbg> SSL Capable more service
dbg> 0x11cd03750: SSL_read says -1
dbg> 0x11cd03750: ssl err 2 errno 57
dbg> lws_ssl_capable_read: WANT_READ
dbg> 0x11cd0375dbg> SSL Capable more service
dbg> 0x11cd03750: SSL_read says -1
dbg> 0x11cd03750: ssl err 2 errno 57
dbg> lws_ssl_capable_read: WANT_READ
parent 5ea31d19
No related branches found
No related tags found
No related merge requests found
...@@ -52,3 +52,4 @@ doc ...@@ -52,3 +52,4 @@ doc
/cov-int/ /cov-int/
/.vs/ /.vs/
/build-mtls/ /build-mtls/
/build-mingw64/
...@@ -99,6 +99,11 @@ lws_ssl_capable_read(struct lws *wsi, unsigned char *buf, int len) ...@@ -99,6 +99,11 @@ lws_ssl_capable_read(struct lws *wsi, unsigned char *buf, int len)
if (n < 0) { if (n < 0) {
m = SSL_get_error(wsi->tls.ssl, n); m = SSL_get_error(wsi->tls.ssl, n);
lwsl_debug("%p: ssl err %d errno %d\n", wsi, m, errno); lwsl_debug("%p: ssl err %d errno %d\n", wsi, m, errno);
if (errno == LWS_ENOTCONN) {
/* If the socket isn't connected anymore, bail out. */
wsi->socket_is_permanently_unusable = 1;
return LWS_SSL_CAPABLE_ERROR;
}
if (m == SSL_ERROR_ZERO_RETURN || if (m == SSL_ERROR_ZERO_RETURN ||
m == SSL_ERROR_SYSCALL) m == SSL_ERROR_SYSCALL)
return LWS_SSL_CAPABLE_ERROR; return LWS_SSL_CAPABLE_ERROR;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment