From: Anthony Minessale Date: Thu, 6 Apr 2017 22:06:35 +0000 (-0500) Subject: FS-10150: [freeswitch-core] Reduce writes to closed ssl sockets X-Git-Tag: v1.8.0~629 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=014f40d0b836b70360a3f1c099aa29fe2dda4a1d;p=thirdparty%2Ffreeswitch.git FS-10150: [freeswitch-core] Reduce writes to closed ssl sockets --- diff --git a/libs/libks/src/kws.c b/libs/libks/src/kws.c index 36e9ca37be..6afc066b24 100644 --- a/libs/libks/src/kws.c +++ b/libs/libks/src/kws.c @@ -448,10 +448,12 @@ KS_DECLARE(ks_ssize_t) kws_raw_write(kws_t *kws, void *data, ks_size_t bytes) } if (r == -1) { - ssl_err = SSL_get_error(kws->ssl, r); + if ((ssl_err = SSL_get_error(kws->ssl, r)) != SSL_ERROR_WANT_WRITE) { + break; + } } - } while (--sanity > 0 && ((r == -1 && ssl_err == SSL_ERROR_WANT_WRITE) || (kws->block && wrote < bytes))); + } while (--sanity > 0 && kws->block && wrote < bytes); if (ssl_err) { r = ssl_err * -1; diff --git a/libs/sofia-sip/libsofia-sip-ua/tport/ws.c b/libs/sofia-sip/libsofia-sip-ua/tport/ws.c index 931e152045..8d3db0a73e 100644 --- a/libs/sofia-sip/libsofia-sip-ua/tport/ws.c +++ b/libs/sofia-sip/libsofia-sip-ua/tport/ws.c @@ -442,10 +442,12 @@ ssize_t ws_raw_write(wsh_t *wsh, void *data, size_t bytes) } if (r == -1) { - ssl_err = SSL_get_error(wsh->ssl, r); + if ((ssl_err = SSL_get_error(wsh->ssl, r)) != SSL_ERROR_WANT_WRITE) { + break; + } } - } while (--sanity > 0 && ((r == -1 && ssl_err == SSL_ERROR_WANT_WRITE) || (wsh->block && wrote < bytes))); + } while (--sanity > 0 && wsh->block && wrote < bytes); if (ssl_err) { r = ssl_err * -1; diff --git a/src/mod/endpoints/mod_verto/ws.c b/src/mod/endpoints/mod_verto/ws.c index 931e152045..8d3db0a73e 100644 --- a/src/mod/endpoints/mod_verto/ws.c +++ b/src/mod/endpoints/mod_verto/ws.c @@ -442,10 +442,12 @@ ssize_t ws_raw_write(wsh_t *wsh, void *data, size_t bytes) } if (r == -1) { - ssl_err = SSL_get_error(wsh->ssl, r); + if ((ssl_err = SSL_get_error(wsh->ssl, r)) != SSL_ERROR_WANT_WRITE) { + break; + } } - } while (--sanity > 0 && ((r == -1 && ssl_err == SSL_ERROR_WANT_WRITE) || (wsh->block && wrote < bytes))); + } while (--sanity > 0 && wsh->block && wrote < bytes); if (ssl_err) { r = ssl_err * -1;