]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Add application layer keepalive options to sofia and expose config options
authorBrian West <brian@freeswitch.org>
Thu, 25 Apr 2013 18:34:07 +0000 (13:34 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 25 Apr 2013 17:19:20 +0000 (12:19 -0500)
Conflicts:
src/mod/endpoints/mod_sofia/mod_sofia.h

src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia.c

index 269b5577e05b021d8caf0c4644c3ce3718cd65f1..e0833e6b6275b7f34d048cc0f398944a271b63d9 100644 (file)
@@ -282,6 +282,9 @@ typedef enum {
        PFLAG_FIRE_MESSAGE_EVENTS,
        PFLAG_SEND_DISPLAY_UPDATE,
        PFLAG_RUNNING_TRANS,
+       PFLAG_TCP_KEEPALIVE,
+       PFLAG_TCP_PINGPONG,
+       PFLAG_TCP_PING2PONG,
        /* No new flags below this line */
        PFLAG_MAX
 } PFLAGS;
@@ -703,6 +706,9 @@ struct sofia_profile {
        uint32_t rtp_digit_delay;
        switch_queue_t *event_queue;
        switch_thread_t *thread;                
+       int tcp_keepalive;
+       int tcp_pingpong;
+       int tcp_ping2pong;
 };
 
 struct private_object {
index 3060308a54d2c55e1b675d95a35d66eeb0fa531e..b48b08bda1df29c1daf71ee39e0908ff16fb9ada 100644 (file)
@@ -2418,8 +2418,14 @@ void *SWITCH_THREAD_FUNC sofia_profile_thread_run(switch_thread_t *thread, void
                                                                         NTATAG_USE_SRV(0)),
                                                          TAG_IF(sofia_test_pflag(profile, PFLAG_DISABLE_NAPTR),
                                                                         NTATAG_USE_NAPTR(0)),
+                                                         TAG_IF(sofia_test_pflag(profile, PFLAG_TCP_PINGPONG),
+                                                                        TPTAG_PINGPONG(profile->tcp_pingpong)),
+                                                         TAG_IF(sofia_test_pflag(profile, PFLAG_TCP_PING2PONG),
+                                                                        TPTAG_PINGPONG(profile->tcp_ping2pong)),
                                                          TAG_IF(sofia_test_pflag(profile, PFLAG_DISABLE_SRV503),
                                                                         NTATAG_SRV_503(0)),                                                                     
+                                                         TAG_IF(sofia_test_pflag(profile, PFLAG_TCP_KEEPALIVE),
+                                                                        TPTAG_KEEPALIVE(profile->tcp_keepalive)),                                                                       
                                                          NTATAG_DEFAULT_PROXY(profile->outbound_proxy),
                                                          NTATAG_SERVER_RPORT(profile->server_rport_level),
                                                          NTATAG_CLIENT_RPORT(profile->client_rport_level),
@@ -3641,8 +3647,17 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
                                        } else if (!strcasecmp(var, "sip-trace") && switch_true(val)) {
                                                sofia_set_flag(profile, TFLAG_TPORT_LOG);
                                        } else if (!strcasecmp(var, "sip-capture") && switch_true(val)) {
-                                                sofia_set_flag(profile, TFLAG_CAPTURE);
-                                                nua_set_params(profile->nua, TPTAG_CAPT(mod_sofia_globals.capture_server), TAG_END());
+                                               sofia_set_flag(profile, TFLAG_CAPTURE);
+                                               nua_set_params(profile->nua, TPTAG_CAPT(mod_sofia_globals.capture_server), TAG_END());                                          
+                                       } else if (!strcasecmp(var, "tcp-keepalive") && !zstr(val)) {
+                                               profile->tcp_keepalive = atoi(val);
+                                               sofia_set_pflag(profile, PFLAG_TCP_KEEPALIVE);
+                                       } else if (!strcasecmp(var, "tcp-pingpong") && !zstr(val)) {
+                                               profile->tcp_pingpong = atoi(val);
+                                               sofia_set_pflag(profile, PFLAG_TCP_PINGPONG);
+                                       } else if (!strcasecmp(var, "tcp-ping2pong") && !zstr(val)) {
+                                               profile->tcp_ping2pong = atoi(val);
+                                               sofia_set_pflag(profile, PFLAG_TCP_PING2PONG);
                                        } else if (!strcasecmp(var, "odbc-dsn") && !zstr(val)) {
                                                profile->odbc_dsn = switch_core_strdup(profile->pool, val);
                                        } else if (!strcasecmp(var, "db-pre-trans-execute") && !zstr(val)) {