]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10150: [freeswitch-core] Reduce writes to closed ssl sockets
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 6 Apr 2017 22:06:35 +0000 (17:06 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 6 Apr 2017 22:06:44 +0000 (17:06 -0500)
libs/libks/src/kws.c
libs/sofia-sip/libsofia-sip-ua/tport/ws.c
src/mod/endpoints/mod_verto/ws.c

index 36e9ca37bee338fcf2cdc74ae11797615061f082..6afc066b249bba5c9cb8ccbfe59b772b521d8cc6 100644 (file)
@@ -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;
index 931e1520455dd87b2ec3c6f975d92c32dc425183..8d3db0a73e29fdbd59da13f678201fdae0f96dda 100644 (file)
@@ -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;
index 931e1520455dd87b2ec3c6f975d92c32dc425183..8d3db0a73e29fdbd59da13f678201fdae0f96dda 100644 (file)
@@ -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;