]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11668: [verto] Fix polling of secure verto sockets
authorMike Jerris <mike@signalwire.com>
Tue, 26 Feb 2019 21:07:40 +0000 (14:07 -0700)
committerMike Jerris <mike@signalwire.com>
Thu, 6 Jun 2019 15:17:22 +0000 (11:17 -0400)
src/mod/endpoints/mod_verto/mod_verto.c

index 0db8a63f42659ba91b7650aef9f52b388b3e5f41..0143b8487ff119a9c963734eb102e91d7b280157 100644 (file)
@@ -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); }