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;