From 879b3b9d0c3f619dcf06552971fa4c33c2299c38 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 6 Apr 2017 17:06:35 -0500 Subject: [PATCH] FS-10150: [freeswitch-core] Reduce writes to closed ssl sockets --- libs/sofia-sip/.update | 2 +- libs/sofia-sip/libsofia-sip-ua/tport/ws.c | 6 ++++-- src/mod/endpoints/mod_verto/ws.c | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index e24a7c97f1..49ea97e571 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Mon Mar 20 17:03:26 CDT 2017 +Thu Apr 6 17:08:19 CDT 2017 diff --git a/libs/sofia-sip/libsofia-sip-ua/tport/ws.c b/libs/sofia-sip/libsofia-sip-ua/tport/ws.c index 71b862ac62..fc6174efb6 100644 --- a/libs/sofia-sip/libsofia-sip-ua/tport/ws.c +++ b/libs/sofia-sip/libsofia-sip-ua/tport/ws.c @@ -430,10 +430,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 018648884a..bb64e7f8aa 100644 --- a/src/mod/endpoints/mod_verto/ws.c +++ b/src/mod/endpoints/mod_verto/ws.c @@ -430,10 +430,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;