aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-05-12 20:50:30 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-05-12 20:50:30 +0000
commit5f2266fc8ee607f8be89bff616025abb5dc0b2c8 (patch)
tree4c3d6794e79258ba6fb89d810f99714d2661cff8
parent7bb00f5715b4d4976406c646a23ee5dde2c80782 (diff)
Merged revisions 193954 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r193954 | mmichelson | 2009-05-12 15:28:13 -0500 (Tue, 12 May 2009) | 18 lines Update spiral support in trunk and 1.6.X to match what is in 1.4. In 1.4, a SIP spiral is treated the same way as a call forward. This works much better than what is currently in trunk and 1.6.X. The code in trunk and 1.6.X did not create a new call to the recipient of the spiral, instead trying to continue the same call. In addition to just being plain wrong, this also had the side effect of only being able to spiral calls to other SIP channels. With this in place, as long as call forwards are honored, SIP spirals will work properly. This means that it will work for outbound calls made by the Queue, Dial, and Page applications. For originated calls and spool calls, however, the spiral will not work properly until a generic call forward mechanism is introduced into Asterisk. (relates to issue #13630) ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@193960 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_sip.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 5d535d512..262fc1fa0 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -17038,10 +17038,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int
char *uri = ast_strdupa(req->rlPart2);
char *at = strchr(uri, '@');
char *peerorhost;
- struct sip_pkt *pkt = NULL;
- if (option_debug > 2) {
- ast_log(LOG_DEBUG, "Potential spiral detected. Original RURI was %s, new RURI is %s\n", p->initreq.rlPart2, req->rlPart2);
- }
+ ast_debug(3, "Potential spiral detected. Original RURI was %s, new RURI is %s\n", p->initreq.rlPart2, req->rlPart2);
if (at) {
*at = '\0';
}
@@ -17049,14 +17046,12 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int
if ((peerorhost = strchr(uri, ':'))) {
*peerorhost++ = '\0';
}
- create_addr(p, peerorhost, 0);
ast_string_field_set(p, theirtag, NULL);
- for (pkt = p->packets; pkt; pkt = pkt->next) {
- if (pkt->seqno == p->icseq && pkt->method == SIP_INVITE) {
- AST_SCHED_DEL(sched, pkt->retransid);
- }
- }
- return transmit_invite(p, SIP_INVITE, 1, 3);
+ /* Treat this as if there were a call forward instead...
+ */
+ ast_string_field_set(p->owner, call_forward, peerorhost);
+ ast_queue_control(p->owner, AST_CONTROL_BUSY);
+ return 0;
}
}