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%%' "