From 6dd370b0077ffe4e7481687b9a383e076072489f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 17 Nov 2006 22:13:26 +0000 Subject: [PATCH] reg realm stuff git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3398 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_sofia/mod_sofia.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 334e5eff6a..1cfd6b2d5d 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -4115,7 +4115,8 @@ static void sip_r_register(int status, outbound_reg_t *oreg = NULL; sip_www_authenticate_t const *authenticate = NULL; switch_core_session_t *session = sofia_private ? sofia_private->session : NULL; - char const *realm = NULL; + char const *realm = NULL; + char *p = NULL, *qrealm = NULL; char const *scheme = NULL; int index; char *cur; @@ -4149,10 +4150,21 @@ static void sip_r_register(int status, if (!(scheme && realm)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No scheme and realm!\n"); - return; } } + if (!(scheme && realm)) { + return; + } + + qrealm = strdup(realm); + + while(*qrealm && *qrealm == '"') { + *qrealm++; + } + if ((p = strchr(qrealm, '"'))) { + *p = '\0'; + } if (sofia_private) { if (sofia_private->oreg) { @@ -4160,18 +4172,20 @@ static void sip_r_register(int status, } else if (profile) { outbound_reg_t *oregp; for (oregp = profile->registrations; oregp; oregp = oregp->next) { - if (scheme && realm && !strcasecmp(oregp->register_scheme, scheme) && !strcasecmp(oregp->register_realm, realm)) { + if (scheme && qrealm && !strcasecmp(oregp->register_scheme, scheme) && !strcasecmp(oregp->register_realm, qrealm)) { oreg = oregp; break; } } if (!oreg) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Match for Scheme [%s] Realm [%s]\n", scheme, realm); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Match for Scheme [%s] Realm [%s]\n", scheme, qrealm); } } } + switch_safe_free(qrealm); + if (!oreg) { return; }