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.6.17~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=879b3b9d0c3f619dcf06552971fa4c33c2299c38;p=thirdparty%2Ffreeswitch.git FS-10150: [freeswitch-core] Reduce writes to closed ssl sockets --- 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;