]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8761
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 8 Aug 2016 21:39:44 +0000 (16:39 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 8 Aug 2016 21:39:44 +0000 (16:39 -0500)
libs/sofia-sip/.update
libs/sofia-sip/libsofia-sip-ua/tport/tport_type_ws.c
libs/sofia-sip/libsofia-sip-ua/tport/tport_ws.h

index b824aceab01b4cd0e55794b13f1fb25c9d34d099..0ef1bfcdf6bb4cd0d0493dbae42db617211192f7 100644 (file)
@@ -1 +1 @@
-Sat Aug  6 11:48:53 CDT 2016
+Mon Aug  8 16:39:35 CDT 2016
index 1390689513d2b6380ce0e1f78a82d092784bddb0..6b525581f14676738e9a757ee120c0ab861c2e45 100644 (file)
@@ -494,6 +494,8 @@ int tport_ws_init_secondary(tport_t *self, int socket, int accepted,
          return *return_reason = "WS_INIT", -1;
   }
 
+  wstp->connected = time(NULL);
+
   wstp->ws_initialized = 1;
   self->tp_pre_framed = 1;
   
@@ -594,19 +596,31 @@ int tport_ws_next_timer(tport_t *self,
                         char const **return_why)
 {
        tport_ws_t *wstp = (tport_ws_t *)self;
-
-       if (establish_logical_layer(&wstp->ws) < 0) {
-               if (wstp->tos++ == 1) {
-                       tport_close(self);
-                       SU_DEBUG_7(("%s(%p): %s to " TPN_FORMAT "%s\n",
-                                               __func__, (void *)self,
-                                               "timeout establishing connection\n", TPN_ARGS(self->tp_name), ""));
-                       return -1;
+       int ll = establish_logical_layer(&wstp->ws);
+       int punt = 0;
+
+       if (ll == -1) {
+               punt = 1;
+       } else if (ll < 0) {
+               time_t now = time(NULL);
+               if (now - wstp->connected > 5) {
+                       punt = 2;
                }
        } else {
-               self->tp_params->tpp_keepalive = 30000;
+               self->tp_params->tpp_keepalive = 0;
        }
 
+       if (punt) {
+               tport_close(self);
+
+               SU_DEBUG_7(("%s(%p): %s to " TPN_FORMAT "%s\n",
+                                       __func__, (void *)self,
+                                       (punt == 2 ? "Timeout establishing SSL" : "Error establishing SSL"), TPN_ARGS(self->tp_name), ""));
+
+               return -1;
+       }
+
+
   return
     tport_next_recv_timeout(self, return_target, return_why) |
     tport_next_keepalive(self, return_target, return_why);
index 4e2e0f474d8b94ec3625837ad8a963f6fba11d2c..d43e02e2cad9a00ee3abacef8479b5718e360bf3 100644 (file)
@@ -59,7 +59,7 @@ typedef struct tport_ws_s {
   char     wstp_buffer[65536];
   size_t   wstp_buflen;
   SU_S8_T  ws_initialized;
-  unsigned char tos;
+  time_t connected;
   unsigned ws_secure:1;
   unsigned:0;
 } tport_ws_t;