diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-09-13 12:24:38 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-09-13 12:24:38 +0000 |
commit | 7c29e05a807c3c840c381fbd7f143be85cafdc9d (patch) | |
tree | a18b22385df7eb1d0eae5c529f78f24b783be404 /channels | |
parent | eae416c81995af0b554d0378435781b5ffdf53e7 (diff) |
Use fromdomain in creating callid if specified (bug #2427)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3769 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rwxr-xr-x | channels/chan_sip.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 632b0711c..832dfb063 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -1261,6 +1261,7 @@ static int create_addr(struct sip_pvt *r, char *opeer) struct sip_peer *p; int found=0; char *port; + char *callhost; int portno; char host[256], *hostn; char peer[256]=""; @@ -1294,6 +1295,11 @@ static int create_addr(struct sip_pvt *r, char *opeer) strncpy(r->username, p->username, sizeof(r->username)-1); strncpy(r->tohost, p->tohost, sizeof(r->tohost)-1); strncpy(r->fullcontact, p->fullcontact, sizeof(r->fullcontact)-1); + if (!r->initreq.headers && !ast_strlen_zero(p->fromdomain)) { + if ((callhost = strchr(r->callid, '@'))) { + strncpy(callhost + 1, p->fromdomain, sizeof(r->callid) - (callhost - r->callid) - 2); + } + } if (ast_strlen_zero(r->tohost)) { if (p->addr.sin_addr.s_addr) ast_inet_ntoa(r->tohost, sizeof(r->tohost), p->addr.sin_addr); |