aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authoroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-01 15:05:19 +0000
committeroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-01 15:05:19 +0000
commit3d2578b08a7abda3f908f438148bb0a85a86d721 (patch)
tree60b7ef242ae3e6fb92bed8b8633961308aa017cc /channels
parentbe5d68a512971ad97ba87ece01797951974b7fd5 (diff)
Merged revisions 126903 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r126903 | oej | 2008-07-01 17:03:59 +0200 (Tis, 01 Jul 2008) | 15 lines 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/branches/1.6.0@126904 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index b4846e3e5..1fe20f874 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -9239,6 +9239,7 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
char tmp[80];
char addr[80];
struct sip_pvt *p;
+ 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))) {
@@ -9337,12 +9338,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))