[Home]

Summary:ASTERISK-08359: [patch] Asterisk doesn't send CANCEL before Ringing
Reporter:Alexandr Dubovikov (baron)Labels:
Date Opened:2006-12-15 06:07:08.000-0600Date Closed:2006-12-27 09:45:36.000-0600
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Core/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) 100cancel.txt
( 1) verbosedebug_nopatch.txt
( 2) verbosedebug_patch.txt
Description:The bug in the next scenario:

callee --INVITE -------> Asterisk
callee <-- 100 Trying -- Asterisk --- INVITE -------> SoftSwitch ---> PSTN
                        Asterisk <--- 100 Trying --- SoftSwitch
callee -- CANCEL ------> Asterisk
callee <- 487 Req.Term - Asterisk
callee ------ ACK -----> Asterisk

Asterisk don't send CANCEL for outgoing Invite, because ast_set_flag(p, SIP_CAN_BYE) only for 180,183 Response and not for 100 Trying.

                        Asterisk <--- 183 Ringing -- SoftSwitch <- CPG - PSTN
                        Asterisk ----- BYE --------> SoftSwitch - REL -> PSTN
                        Asterisk <----- 487 -------- SoftSwitch
                        Asterisk <----- 487 -------- SoftSwitch
                        Asterisk <----- 487 -------- SoftSwitch
and Asterisk don't send ACK for 487.



****** ADDITIONAL INFORMATION ******

--- chan_sip.c.orig     2006-12-15 12:41:47.000000000 +0100
+++ chan_sip.c  2006-12-15 12:41:47.000000000 +0100
@@ -9660,6 +9660,8 @@ static void handle_response_invite(struc
       case 100:       /* Trying */
               if (!ignore)
                       sip_cancel_destroy(p);
+
+               ast_set_flag(p, SIP_CAN_BYE);
               check_pendings(p);
               break;
       case 180:       /* 180 Ringing */
Comments:By: Serge Vecher (serge-v) 2006-12-15 08:27:30.000-0600

I think this was fixed in latest 1.2. Can you please check out 1.2 from svn and see if it's fixed?

By: Alexandr Dubovikov (baron) 2006-12-15 16:33:39.000-0600

I have checked latest SVN out and didn't find the fix:
------------code-----------------------
       case 100:       /* Trying */
               if (!ignore)
                       sip_cancel_destroy(p);
               check_pendings(p);
               break;
--------------code--------------------------

By: Serge Vecher (serge-v) 2006-12-18 08:40:07.000-0600

ok, then: As per bug-guidelines, please produce the sip debug as per following instructions with and without the patch:

1) Prepare test environment (reduce the amount of unrelated traffic on the server);
2) Make sure your logger.conf has the following line:
  console => notice,warning,error,debug
3) restart Asterisk with the following command:
  'asterisk -Tvvvvvdddddngc | tee /tmp/verbosedebug.txt'
4) Enable SIP transaction logging with the following CLI commands:
set debug 4
set verbose 4
sip debug
5) Trim startup information and attach verbosedebug.txt to the issue

By: Alexandr Dubovikov (baron) 2006-12-19 08:00:38.000-0600

I did two tests. Please check the log files.
I have changed real IP address and phonenumbers for security reason :-)
Sorry for that.

By: Serge Vecher (serge-v) 2006-12-19 11:41:18.000-0600

excellent, thank you!

By: Serge Vecher (serge-v) 2006-12-19 12:12:51.000-0600

also, while we are waiting for the developer to look at this, could you please check out the code from the following branch to see if it makes any difference:

http://svn.digium.com/svn/asterisk/team/oej/invitestate

By: Olle Johansson (oej) 2006-12-27 09:44:17.000-0600

Fixed in rev 48794 of 1.2. Thanks!