summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2003-06-15 22:53:05 +0000
committerMark Spencer <markster@digium.com>2003-06-15 22:53:05 +0000
commitb04542e11eb048f7e44caa8275b40804c4fd0ae1 (patch)
tree796981de2fa3dc67aced5f130b65f3777ee52d04 /channels
parent226e31d86d90ef282995c35dbdf4adf4edf8f1ea (diff)
Handle registration setups better when username contains an @
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1093 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rwxr-xr-xchannels/chan_sip.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 77f301b50..87f179f84 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -2613,8 +2613,13 @@ static int transmit_register(struct sip_registry *r, char *cmd, char *auth)
ast_log(LOG_DEBUG, "Scheduled a timeout # %d\n", r->timeout);
}
- snprintf(from, sizeof(from), "<sip:%s@%s>;tag=as%08x", r->username, r->hostname, p->tag);
- snprintf(to, sizeof(to), "<sip:%s@%s>", r->username, r->hostname);
+ if (strchr(r->username, '@')) {
+ snprintf(from, sizeof(from), "<sip:%s>;tag=as%08x", r->username, p->tag);
+ snprintf(to, sizeof(to), "<sip:%s>", r->username);
+ } else {
+ snprintf(from, sizeof(from), "<sip:%s@%s>;tag=as%08x", r->username, r->hostname, p->tag);
+ snprintf(to, sizeof(to), "<sip:%s@%s>", r->username, r->hostname);
+ }
snprintf(addr, sizeof(addr), "sip:%s", r->hostname);
strncpy(p->uri, addr, sizeof(p->uri) - 1);