diff options
author | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-07-01 15:03:59 +0000 |
---|---|---|
committer | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-07-01 15:03:59 +0000 |
commit | 8d72879e33249fad78d581bef0a3eac6f18d0f7e (patch) | |
tree | ca6188f532a38234025128af24af60cae80061da | |
parent | 46ebe2509bd67c42abe46a84cf6a87c7c0d3c5fe (diff) |
Merged revisions 126902 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r126902 | oej | 2008-07-01 16:59:31 +0200 (Tis, 01 Jul 2008) | 7 lines
Use domain part of SIP uri in register= configuration as fromdomain.
Reported by: one47
Patches:
sip-reg-fromdom2.dpatch uploaded by one47 (license 23)
(closes issue #12474)
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@126903 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_sip.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 43ee56571..36b3942c6 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -9733,6 +9733,7 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char * char addr[80]; struct sip_pvt *p; int res; + char *fromdomain; /* exit if we are already in process with this registrar ?*/ if (r == NULL || ((auth == NULL) && (r->regstate == REG_STATE_REGSENT || r->regstate == REG_STATE_AUTHSENT))) { @@ -9851,12 +9852,19 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char * ast_debug(1, "Scheduled a registration timeout for %s id #%d \n", r->hostname, r->timeout); } - if (strchr(r->username, '@')) { + if ((fromdomain = strchr(r->username, '@'))) { + /* We have a domain in the username for registration */ snprintf(from, sizeof(from), "<sip:%s>;tag=%s", r->username, p->tag); if (!ast_strlen_zero(p->theirtag)) snprintf(to, sizeof(to), "<sip:%s>;tag=%s", r->username, p->theirtag); else snprintf(to, sizeof(to), "<sip:%s>", r->username); + + /* If the registration username contains '@', then the domain should be used as + the equivalent of "fromdomain" for the registration */ + if (ast_strlen_zero(p->fromdomain)) { + ast_string_field_set(p, fromdomain, ++fromdomain); + } } else { snprintf(from, sizeof(from), "<sip:%s@%s>;tag=%s", r->username, p->tohost, p->tag); if (!ast_strlen_zero(p->theirtag)) |