]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8761
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 12 Sep 2016 16:24:34 +0000 (11:24 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 12 Sep 2016 16:24:41 +0000 (11:24 -0500)
libs/sofia-sip/.update
libs/sofia-sip/libsofia-sip-ua/tport/ws.c
src/mod/endpoints/mod_verto/ws.c

index eb6dc88486aa8d55ea5a3a62c619d0c2506a1262..896d0890c433ff6419d4d773876f307f65f5c699 100644 (file)
@@ -1 +1 @@
-Tue Aug 16 13:39:03 CDT 2016
+Mon Sep 12 11:23:22 CDT 2016
index 5e5bbd638d1e1e8005794eb489d73c260910a969..0c07afa3bf3fe7c3f6156232542de168488541ca 100644 (file)
@@ -352,14 +352,16 @@ ssize_t ws_raw_read(wsh_t *wsh, void *data, size_t bytes, int block)
                        if (r == -1) {
                                err = SSL_get_error(wsh->ssl, r);
                                
-                               if (!block && err == SSL_ERROR_WANT_READ) {
-                                       r = -2;
-                                       goto end;
-                               }
-
-                               if (block) {
+                               if (err == SSL_ERROR_WANT_READ) {
+                                       if (!block) {
+                                               r = -2;
+                                               goto end;
+                                       }
                                        wsh->x++;
                                        ms_sleep(10);
+                               } else {
+                                       r = -1;
+                                       goto end;
                                }
                        }
 
@@ -385,12 +387,12 @@ ssize_t ws_raw_read(wsh_t *wsh, void *data, size_t bytes, int block)
                }
        } while (r == -1 && xp_is_blocking(xp_errno()) && wsh->x < 1000);
        
+ end:
+
        if (wsh->x >= 10000 || (block && wsh->x >= 1000)) {
                r = -1;
        }
 
- end:
-
        if (r > 0) {
                *((char *)data + r) = '\0';
        }
index 265dd10d8e3741de635dc265f8d99dcc5c9a8fca..0c07afa3bf3fe7c3f6156232542de168488541ca 100644 (file)
@@ -352,14 +352,16 @@ ssize_t ws_raw_read(wsh_t *wsh, void *data, size_t bytes, int block)
                        if (r == -1) {
                                err = SSL_get_error(wsh->ssl, r);
                                
-                               if (!block && err == SSL_ERROR_WANT_READ) {
-                                       r = -2;
-                                       goto end;
-                               }
-
-                               if (block) {
+                               if (err == SSL_ERROR_WANT_READ) {
+                                       if (!block) {
+                                               r = -2;
+                                               goto end;
+                                       }
                                        wsh->x++;
                                        ms_sleep(10);
+                               } else {
+                                       r = -1;
+                                       goto end;
                                }
                        }
 
@@ -385,12 +387,12 @@ ssize_t ws_raw_read(wsh_t *wsh, void *data, size_t bytes, int block)
                }
        } while (r == -1 && xp_is_blocking(xp_errno()) && wsh->x < 1000);
        
+ end:
+
        if (wsh->x >= 10000 || (block && wsh->x >= 1000)) {
                r = -1;
        }
 
- end:
-
        if (r > 0) {
                *((char *)data + r) = '\0';
        }
@@ -500,7 +502,7 @@ static int restore_socket(ws_socket_t sock)
 #endif
 
 
-static int establish_logical_layer(wsh_t *wsh)
+int establish_logical_layer(wsh_t *wsh)
 {
 
        if (!wsh->sanity) {
@@ -929,38 +931,6 @@ ssize_t ws_read_frame(wsh_t *wsh, ws_opcode_t *oc, uint8_t **data)
        }
 }
 
-
-ssize_t ws_feed_buf(wsh_t *wsh, void *data, size_t bytes)
-{
-
-       if (bytes + wsh->wdatalen > wsh->buflen) {
-               return -1;
-       }
-
-       memcpy((unsigned char *)wsh->write_buffer + wsh->write_buffer_len, data, bytes);
-       
-       wsh->write_buffer_len += bytes;
-
-       return bytes;
-}
-
-
-ssize_t ws_send_buf(wsh_t *wsh, ws_opcode_t oc)
-{
-       ssize_t r = 0;
-
-       if (!wsh->wdatalen) {
-               return -1;
-       }
-       
-       r = ws_write_frame(wsh, oc, wsh->write_buffer, wsh->write_buffer_len);
-       
-       wsh->wdatalen = 0;
-
-       return r;
-}
-
-
 ssize_t ws_write_frame(wsh_t *wsh, ws_opcode_t oc, void *data, size_t bytes)
 {
        uint8_t hdr[14] = { 0 };