Merged revisions 205878 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

................
  r205878 | mmichelson | 2009-07-10 12:39:57 -0500 (Fri, 10 Jul 2009) | 30 lines
  
  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
      ........
    ................
  ................
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@205881 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.1
Mark Michelson 16 years ago
parent f3b9afe34d
commit 74b383157e

@ -3295,9 +3295,20 @@ static int __sip_autodestruct(const void *data)
/* 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)) {
p->needdestroy = 1;
}
}
return 10000;
} else {
/* They've had their chance to respond. Time to bail */
__sip_pretend_ack(p);
}
}
if (p->subscribed == MWI_NOTIFICATION)
@ -3359,7 +3370,7 @@ static int sip_cancel_destroy(struct sip_pvt *p)
int res = 0;
if (p->autokillid > -1) {
int res3;
if (!(res3 = ast_sched_del(sched, p->autokillid))) {
append_history(p, "CancelDestroy", "");
p->autokillid = -1;
@ -5346,7 +5357,10 @@ static int sip_hangup(struct ast_channel *ast)
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) {

Loading…
Cancel
Save