From 216f1e1106db85abed2b0ec3944c1bdedc907a67 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 2 Apr 2009 21:53:47 +0000 Subject: [PATCH] make nat options ping configurable and leave it off by default git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12897 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_sofia/mod_sofia.h | 2 +- src/mod/endpoints/mod_sofia/sofia.c | 12 ++++++++++++ src/mod/endpoints/mod_sofia/sofia_reg.c | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index ed3616c762..212d0445f5 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -182,7 +182,7 @@ typedef enum { PFLAG_DISABLE_SRV, PFLAG_DISABLE_NAPTR, PFLAG_AUTOFLUSH, - + PFLAG_NAT_OPTIONS_PING, /* No new flags below this line */ PFLAG_MAX } PFLAGS; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index b1900e5111..52108aa8ed 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1679,6 +1679,12 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else { sofia_clear_pflag(profile, PFLAG_AUTOFLUSH); } + } else if (!strcasecmp(var, "nat-options-ping")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_NAT_OPTIONS_PING); + } else { + sofia_clear_pflag(profile, PFLAG_NAT_OPTIONS_PING); + } } else if (!strcasecmp(var, "inbound-codec-negotiation")) { if (!strcasecmp(val, "greedy")) { sofia_set_pflag(profile, PFLAG_GREEDY); @@ -2211,6 +2217,12 @@ switch_status_t config_sofia(int reload, char *profile_name) } else { sofia_clear_pflag(profile, PFLAG_AUTOFLUSH); } + } else if (!strcasecmp(var, "nat-options-ping")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_NAT_OPTIONS_PING); + } else { + sofia_clear_pflag(profile, PFLAG_NAT_OPTIONS_PING); + } } else if (!strcasecmp(var, "inbound-codec-negotiation")) { if (!strcasecmp(val, "greedy")) { sofia_set_pflag(profile, PFLAG_GREEDY); diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index 3fc06aaaa1..322734caff 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -596,7 +596,7 @@ void sofia_reg_check_expire(sofia_profile_t *profile, time_t now, int reboot) sofia_glue_actually_execute_sql(profile, SWITCH_FALSE, sql, NULL); - if (now) { + if (now && sofia_test_pflag(profile, PFLAG_NAT_OPTIONS_PING)) { switch_snprintf(sql, sizeof(sql), "select call_id,sip_user,sip_host,contact,status,rpid," "expires,user_agent,server_user,server_host,profile_name" " from sip_registrations where (status like '%%AUTO-NAT%%' "