[asterisk-commits] mmichelson: trunk r205878 - in /trunk: ./ channels/chan_sip.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Jul 10 12:40:02 CDT 2009
Author: mmichelson
Date: Fri Jul 10 12:39:57 2009
New Revision: 205878
URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=205878
Log:
Merged revisions 205877 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
................
r205877 | mmichelson | 2009-07-10 12:39:13 -0500 (Fri, 10 Jul 2009) | 23 lines
Merged revisions 205776 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r205776 | mmichelson | 2009-07-10 10:56:45 -0500 (Fri, 10 Jul 2009) | 16 lines
Merged revisions 205775 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r205775 | mmichelson | 2009-07-10 10:51:36 -0500 (Fri, 10 Jul 2009) | 10 lines
Ensure that outbound NOTIFY requests are properly routed through stateful proxies.
With this change, we make note of Record-Route headers present in any SUBSCRIBE
request that we receive so that our outbound NOTIFY requests will have the proper
Route headers in them.
(closes issue #14725)
Reported by: ibc
........
................
................
Modified:
trunk/ (props changed)
trunk/channels/chan_sip.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/channels/chan_sip.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/channels/chan_sip.c?view=diff&rev=205878&r1=205877&r2=205878
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Fri Jul 10 12:39:57 2009
@@ -3815,9 +3815,20 @@
/* If there are packets still waiting for delivery, delay the destruction */
if (p->packets) {
- ast_debug(3, "Re-scheduled destruction of SIP call %s\n", p->callid ? p->callid : "<unknown>");
- append_history(p, "ReliableXmit", "timeout");
- return 10000;
+ if (!p->needdestroy) {
+ char method_str[30];
+ ast_debug(3, "Re-scheduled destruction of SIP call %s\n", p->callid ? p->callid : "<unknown>");
+ append_history(p, "ReliableXmit", "timeout");
+ if (sscanf(p->lastmsg, "Tx: %s", method_str) == 1 || sscanf(p->lastmsg, "Rx: %s", method_str) == 1) {
+ if (method_match(SIP_CANCEL, method_str) || method_match(SIP_BYE, method_str)) {
+ pvt_set_needdestroy(p, "autodestruct");
+ }
+ }
+ return 10000;
+ } else {
+ /* They've had their chance to respond. Time to bail */
+ __sip_pretend_ack(p);
+ }
}
if (p->subscribed == MWI_NOTIFICATION)
@@ -3879,7 +3890,7 @@
int res = 0;
if (p->autokillid > -1) {
int res3;
-
+
if (!(res3 = ast_sched_del(sched, p->autokillid))) {
append_history(p, "CancelDestroy", "");
p->autokillid = -1;
@@ -6026,7 +6037,10 @@
if (needcancel) { /* Outgoing call, not up */
if (ast_test_flag(&p->flags[0], SIP_OUTGOING)) {
/* stop retransmitting an INVITE that has not received a response */
- __sip_pretend_ack(p);
+ struct sip_pkt *cur;
+ for (cur = p->packets; cur; cur = cur->next) {
+ __sip_semi_ack(p, cur->seqno, cur->is_resp, cur->method ? cur->method : find_sip_method(cur->data->str));
+ }
/* if we can't send right now, mark it pending */
if (p->invitestate == INV_CALLING) {
More information about the asterisk-commits
mailing list