From 951e7715241fbebafc2197f4aebe49fec894f91e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Sat, 7 Apr 2007 03:04:46 +0000 Subject: [PATCH] added patch from http://jira.freeswitch.org/browse/MODENDP-9 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4880 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- conf/sofia.conf.xml | 2 ++ src/mod/endpoints/mod_sofia/mod_sofia.h | 4 +++- src/mod/endpoints/mod_sofia/sofia.c | 10 ++++++++-- src/mod/endpoints/mod_sofia/sofia_reg.c | 3 +++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/conf/sofia.conf.xml b/conf/sofia.conf.xml index 7ac9707e4c..e22c94b555 100644 --- a/conf/sofia.conf.xml +++ b/conf/sofia.conf.xml @@ -16,6 +16,8 @@ + + diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index b4398a1eff..fa841903a8 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -27,6 +27,7 @@ * Ken Rice, Asteria Solutions Group, Inc * Paul D. Tinsley * Bret McDanel + * Marcel Barbulescu * * * mod_sofia.h -- SOFIA SIP Endpoint @@ -159,7 +160,8 @@ typedef enum { REG_STATE_REGISTER, REG_STATE_REGED, REG_STATE_FAILED, - REG_STATE_EXPIRED + REG_STATE_EXPIRED, + REG_STATE_NOREG } reg_state_t; struct outbound_reg { diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 4bbc08a9e4..95f0798329 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -27,6 +27,7 @@ * Ken Rice, Asteria Solutions Group, Inc * Paul D. Tinsley * Bret McDanel + * Marcel Barbulescu * * * sofia.c -- SOFIA SIP Endpoint (sofia code) @@ -668,7 +669,7 @@ switch_status_t config_sofia(int reload) } if ((gateway = switch_core_alloc(profile->pool, sizeof(*gateway)))) { - char *scheme = "Digest", + char *register_str = "true", *scheme = "Digest", *realm = NULL, *username = NULL, *password = NULL, *extension = NULL, *proxy = NULL, *context = "default", *expire_seconds = "3600"; @@ -682,7 +683,9 @@ switch_status_t config_sofia(int reload) char *var = (char *) switch_xml_attr_soft(param, "name"); char *val = (char *) switch_xml_attr_soft(param, "value"); - if (!strcmp(var, "scheme")) { + if (!strcmp(var, "register")) { + register_str = val; + } else if (!strcmp(var, "scheme")) { scheme = val; } else if (!strcmp(var, "realm")) { realm = val; @@ -725,6 +728,9 @@ switch_status_t config_sofia(int reload) proxy = realm; } + if (!switch_true(register_str)) { + gateway->state = REG_STATE_NOREG; + } gateway->register_scheme = switch_core_strdup(gateway->pool, scheme); gateway->register_context = switch_core_strdup(gateway->pool, context); gateway->register_realm = switch_core_strdup(gateway->pool, realm); diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index 3969d265c8..25c9ccabeb 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -27,6 +27,7 @@ * Ken Rice, Asteria Solutions Group, Inc * Paul D. Tinsley * Bret McDanel + * Marcel Barbulescu * * * sofia_ref.c -- SOFIA SIP Endpoint (registration code) @@ -56,6 +57,8 @@ void sofia_reg_check_gateway(sofia_profile_t *profile, time_t now) reg_state_t ostate = gateway_ptr->state; switch (ostate) { + case REG_STATE_NOREG: + break; case REG_STATE_REGISTER: switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "registered %s\n", gateway_ptr->name); gateway_ptr->expires = now + gateway_ptr->freq;