From: Mike Jerris Date: Tue, 26 Feb 2019 21:07:40 +0000 (-0700) Subject: FS-11668: [verto] Fix polling of secure verto sockets X-Git-Tag: v1.8.6~1^2~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a255bd3d628fd1a1caa80413e97c880e725b273a;p=thirdparty%2Ffreeswitch.git FS-11668: [verto] Fix polling of secure verto sockets --- diff --git a/src/mod/endpoints/mod_verto/mod_verto.c b/src/mod/endpoints/mod_verto/mod_verto.c index 0db8a63f42..0143b8487f 100644 --- a/src/mod/endpoints/mod_verto/mod_verto.c +++ b/src/mod/endpoints/mod_verto/mod_verto.c @@ -1798,7 +1798,13 @@ done: *wsh->buffer = '\0'; while(jsock->profile->running) { - int pflags = switch_wait_sock(jsock->client_socket, 3000, SWITCH_POLL_READ | SWITCH_POLL_ERROR | SWITCH_POLL_HUP); + int pflags; + + if (wsh->ssl && SSL_pending(wsh->ssl) > 0) { + pflags = SWITCH_POLL_READ; + } else { + pflags = switch_wait_sock(jsock->client_socket, 3000, SWITCH_POLL_READ | SWITCH_POLL_ERROR | SWITCH_POLL_HUP); + } if (jsock->drop) { die("%s Dropping Connection\n", jsock->name); } if (pflags < 0 && (errno != EINTR)) { die_errnof("%s POLL FAILED with %d", jsock->name, pflags); } @@ -1867,7 +1873,13 @@ static void client_run(jsock_t *jsock) } while(jsock->profile->running) { - int pflags = switch_wait_sock(jsock->client_socket, 50, SWITCH_POLL_READ | SWITCH_POLL_ERROR | SWITCH_POLL_HUP); + int pflags; + + if (jsock->ws.ssl && SSL_pending(jsock->ws.ssl) > 0) { + pflags = SWITCH_POLL_READ; + } else { + pflags = switch_wait_sock(jsock->client_socket, 50, SWITCH_POLL_READ | SWITCH_POLL_ERROR | SWITCH_POLL_HUP); + } if (jsock->drop) { die("%s Dropping Connection\n", jsock->name); } if (pflags < 0 && (errno != EINTR)) { die_errnof("%s POLL FAILED with %d", jsock->name, pflags); }