Author: mikej Date: Mon Apr 14 15:20:12 2008 New Revision: 8114 Modified: freeswitch/trunk/conf/sip_profiles/default.xml freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Log: add settings to disable timer and 100rel support by profile (MODENDP-102) Modified: freeswitch/trunk/conf/sip_profiles/default.xml ============================================================================== --- freeswitch/trunk/conf/sip_profiles/default.xml (original) +++ freeswitch/trunk/conf/sip_profiles/default.xml Mon Apr 14 15:20:12 2008 @@ -34,6 +34,8 @@ <!-- ip address to bind to --> <param name="sip-ip" value="$${local_ip_v4}"/> <param name="hold-music" value="$${moh_uri}"/> + <!--<param name="enable-timer" value="false"/>--> + <!--<param name="enable-100rel" value="false"/>--> <!--<param name="apply-inbound-acl" value="lan"/>--> <!--<param name="apply-register-acl" value="lan"/>--> <!--<param name="dtmf-type" value="info"/>--> Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h Mon Apr 14 15:20:12 2008 @@ -138,7 +138,9 @@ PFLAG_SECURE = (1 << 15), PFLAG_BLIND_AUTH = (1 << 16), PFLAG_WORKER_RUNNING = (1 << 17), - PFLAG_UNREG_OPTIONS_FAIL = (1 << 18) + PFLAG_UNREG_OPTIONS_FAIL = (1 << 18), + PFLAG_DISABLE_TIMER = (1 << 19), + PFLAG_DISABLE_100REL = (1 << 20) } PFLAGS; typedef enum { Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Mon Apr 14 15:20:12 2008 @@ -497,6 +497,9 @@ sip_alias_node_t *node; switch_event_t *s_event; int tportlog = 0; + int use_100rel = !sofia_test_pflag(profile, PFLAG_DISABLE_100REL); + int use_timer = !sofia_test_pflag(profile, PFLAG_DISABLE_TIMER); + const char *supported = NULL; switch_mutex_lock(mod_sofia_globals.mutex); mod_sofia_globals.threads++; @@ -517,6 +520,16 @@ tportlog = 1; } + if (use_100rel && use_timer) { + supported = "100rel, precondition, timer"; + } else if (use_100rel) { + supported = "100rel, precondition"; + } else if (use_timer) { + supported = "timer, precondition"; + } else { + supported = "precondition"; + } + profile->nua = nua_create(profile->s_root, /* Event loop */ sofia_event_callback, /* Callback for processing events */ profile, /* Additional data to pass to callback */ @@ -559,7 +572,7 @@ TAG_IF((profile->pflags & PFLAG_PRESENCE), NUTAG_ALLOW_EVENTS("include-session-description")), TAG_IF((profile->pflags & PFLAG_PRESENCE), NUTAG_ALLOW_EVENTS("presence.winfo")), TAG_IF((profile->pflags & PFLAG_PRESENCE), NUTAG_ALLOW_EVENTS("message-summary")), - SIPTAG_SUPPORTED_STR("100rel, precondition, timer"), SIPTAG_USER_AGENT_STR(profile->user_agent), TAG_END()); + SIPTAG_SUPPORTED_STR(supported), SIPTAG_USER_AGENT_STR(profile->user_agent), TAG_END()); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Set params for %s\n", profile->name); @@ -579,7 +592,8 @@ NUTAG_ALLOW("INFO"), TAG_IF((profile->pflags & PFLAG_PRESENCE), NUTAG_ALLOW("PUBLISH")), TAG_IF((profile->pflags & PFLAG_PRESENCE), NUTAG_ENABLEMESSAGE(1)), - SIPTAG_SUPPORTED_STR("100rel, precondition"), SIPTAG_USER_AGENT_STR(profile->user_agent), TAG_END()); + SIPTAG_SUPPORTED_STR(supported), + SIPTAG_USER_AGENT_STR(profile->user_agent), TAG_END()); } switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "activated db for %s\n", profile->name); @@ -1223,6 +1237,14 @@ if (switch_true(val)) { profile->pflags |= PFLAG_CHECKUSER; } + } else if (!strcasecmp(var, "enable-timer")) { + if (!switch_true(val)) { + profile->pflags |= PFLAG_DISABLE_TIMER; + } + } else if (!strcasecmp(var, "enable-100rel")) { + if (!switch_true(val)) { + profile->pflags |= PFLAG_DISABLE_100REL; + } } else if (!strcasecmp(var, "bitpacking")) { if (!strcasecmp(val, "aal2")) { profile->codec_flags = SWITCH_CODEC_FLAG_AAL2;