CANCEL pjsua bug?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



inline.

On Thu, Sep 17, 2009 at 7:51 PM, M.S. <hamstiede at yahoo.de> wrote:

>
>
> ------------------------------
> *Von:* Gang Liu <gangban.lau at gmail.com>
> *An:* pjsip list <pjsip at lists.pjsip.org>
> *Gesendet:* Donnerstag, den 17. September 2009, 10:29:36 Uhr
> *Betreff:* Re: [pjsip] CANCEL pjsua bug?
>
> in your log message, inv transaction was sent 200 OK and it was complete.
>  VOIP2009/09/16 12:05:19.904                      -HDL-
> cSipWrapper.cxx(1140)     dlg0x2b1894  Sending Response msg
> 200/INVITE/cseq=5448 (tdta0x2b6650)
>
> > yes, i think this is the race condition, pjsua answered the invite, and
> the opposite sent the CANCEL request.
>
> You are right.


>  VOIP2009/09/16 12:05:19.968                      -HDL-
> cSipWrapper.cxx(1140)     dlg0x2b1894  Transaction tsx0x2b4c7c state changed
> to Completed
>
> Do you see a SIP UA will drop the call when it recv CANCEL after call
> connected?
>
> > No of cause, the call will not droped. I received no
> PJSIP_INV_STATE_DISCONNECTED in the pjsua callback on_call_state(...)
>
>
It is because UAC sent ACK after CANCEL. So the call was connected. If no
ACK incoming,  pjsua would drop the call after 200 OK retransmission
timeout.

 VOIP2009/09/16 12:05:20.289    ThreadID=0x00020009
cSipWrapper.cxx(1140)     tsx0x2b4c7c  Incoming Request msg ACK/cseq=5448
(rdata0x41a23854) in state Completed

I saw another race condition before which may cause pjsip-ua api (0.9.0
release) deadlock.

UAC                    UAS
         -- INV -->
         <-- 100 --
         <-- 4XX --
         --- ACK -->
         -- CANCEL -->

ACK and CANCEL came in at the same millisecond, but ACK first. If multi
threads were polling pjsip endpoint events, deadlock maybe happen. But I
couldn't find a solution to fix this issue.

regards,
Gang

regards mark
>
> reagrds,
> Gang
>
>
>
> On Thu, Sep 17, 2009 at 3:40 PM, M.S. <hamstiede at yahoo.de> wrote:
>
>> answered from which side? the opposite sent a CANCEL. My application
>> answered every incomming call, but this is
>> the race condition. I think the sip state machine must transfer the call
>> to a disconnecting state.
>>
>> regards
>>
>>    Mark
>>
>>
>>
>> ------------------------------
>> *Von:* Gang Liu <gangban.lau at gmail.com>
>> *An:* pjsip list <pjsip at lists.pjsip.org>
>> *Gesendet:* Donnerstag, den 17. September 2009, 04:52:06 Uhr
>> *Betreff:* Re: [pjsip] CANCEL pjsua bug?
>>
>> It seems your call was answered.
>>
>> regards,
>> Gang
>>
>> On Wed, Sep 16, 2009 at 10:38 PM, M.S. <hamstiede at yahoo.de> wrote:
>>
>>> Hi,
>>> if i made testcalls with very short incomming calls  (<1sec)  it happens,
>>> that incomming CANCEL
>>> messages wasn't handled by stack. Here is the log:
>>> I used Version V1.4
>>>
>>> regards mark
>>>
>>> #OK incomming call will proceed everything is fine:
>>>
>>> VOIP2009/09/16 12:05:19.628                      -HDL-
>>> cSipWrapper.cxx(1140)    strm0x2b8184  Decoder stream started
>>>  VOIP2009/09/16 12:05:19.646                      -HDL-
>>> cSipWrapper.cxx(2037)  SAG     OnStreamCreated CALL-ID:8
>>>  VOIP2009/09/16 12:05:19.664                      -HDL-
>>> cSipWrapper.cxx(1307)  SCO     InitMediaCall CALL_ID:8 PTime:40 SPF:320
>>>  VOIP2009/09/16 12:05:19.684                      -HDL-
>>> cSipWrapper.cxx(1140)    conference.c  Creating conference bridge with 4
>>> ports
>>>  VOIP2009/09/16 12:05:19.711                      -HDL-
>>> cSipWrapper.cxx(2043)  SAG     CALL-ID:8 BC:0
>>>  VOIP2009/09/16 12:05:19.730                      -HDL-
>>> cSipWrapper.cxx(1140)   pjsua_media.c  Media updates, stream #0: PCMU
>>> (sendrecv)
>>>  VOIP2009/09/16 12:05:19.750                      -HDL-
>>> cSipWrapper.cxx(1103)  SRW     OnCallMedia:MediaActiv CALL-ID:8
>>>  VOIP2009/09/16 12:05:19.770                      -HDL-
>>> cSipWrapper.cxx(489)   SWR     SSP Register Slot:2
>>>  VOIP2009/09/16 12:05:19..788                      -HDL-
>>> cSipWrapper.cxx(1140)    conference.c  Port 1 (CALL) transmitting to port 2
>>> (SSP)
>>>  VOIP2009/09/16 12:05:19.811                      -HDL-
>>> cSipWrapper.cxx(500)   SRW     SSP Channel CALL-ID:8 SrcID:1 SnkID:2 CNT:3
>>> DEV:/dev/mySSP1
>>>  VOIP2009/09/16 12:05:19.835                      -HDL-
>>> cSipWrapper.cxx(1140)     inv0x2b1894  Sending Response msg
>>> 200/INVITE/cseq=5448 (tdta0x2b6650)
>>>  VOIP2009/09/16 12:05:19.904                      -HDL-
>>> cSipWrapper.cxx(1140)     dlg0x2b1894  Sending Response msg
>>> 200/INVITE/cseq=5448 (tdta0x2b6650)
>>>  VOIP2009/09/16 12:05:19.924                      -HDL-
>>> cSipWrapper..cxx(1140)     tsx0x2b4c7c  Sending Response msg
>>> 200/INVITE/cseq=5448 (tdta0x2b6650) in state Proceeding
>>>  VOIP2009/09/16 12:05:19..947                      -HDL-
>>> cSipWrapper.cxx(1140)     tsx0x2b4c7c  State changed from Proceeding to
>>> Completed, event=TX_MSG
>>>  VOIP2009/09/16 12:05:19.968                      -HDL-
>>> cSipWrapper.cxx(1140)     dlg0x2b1894  Transaction tsx0x2b4c7c state changed
>>> to Completed
>>>  VOIP2009/09/16 12:05:19.988                      -HDL-
>>> cSipWrapper.cxx(1017)  SRW     OnCallState CALL-ID:8 ST:4
>>>
>>>
>>> # here comes the CANCEL Message from the opposite:
>>>
>>>  VOIP2009/09/16 12:05:20.006    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)  sip_endpoint.c  Processing incoming message: Request
>>> msg CANCEL/cseq=5448 (rdata0x41a23854)
>>>  VOIP2009/09/16 12:05:20.022    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     dlg0x2b1894  Received Request msg CANCEL/cseq=5448
>>> (rdata0x41a23854)
>>>  VOIP2009/09/16 12:05:20.049    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     tsx0x2bece4  Transaction created for Request msg
>>> CANCEL/cseq=5448 (rdata0x41a23854)
>>>  VOIP2009/09/16 12:05:20.070    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     tsx0x2bece4  Incoming Request msg CANCEL/cseq=5448
>>> (rdata0x41a23854) in state Null
>>>
>>>
>>> # the CANCEL message response will created
>>>
>>> VOIP2009/09/16 12:05:20.091    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     tsx0x2bece4  State changed from Null to Trying,
>>> event=RX_MSG
>>>  VOIP2009/09/16 12:05:20.110    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     dlg0x2b1894  Transaction tsx0x2bece4 state changed
>>> to Trying
>>>  VOIP2009/09/16 12:05:20.129    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)        endpoint  Response msg 200/CANCEL/cseq=5448
>>> (tdta0x2bf488) created
>>>  VOIP2009/09/16 12:05:20.150    ThreadID=0x00020009
>>> cSipWrapper..cxx(1140)     dlg0x2b1894  Sending Response msg
>>> 200/CANCEL/cseq=5448 (tdta0x2bf488)
>>>  VOIP2009/09/16 12:05:20.169    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     tsx0x2bece4  Sending Response msg
>>> 200/CANCEL/cseq=5448 (tdta0x2bf488) in state Trying
>>>
>>>
>>> # and here i expecting a change to "disconnecting" state  but nothing
>>> happens  !!!! the call looks like connected forever...
>>>
>>>  VOIP2009/09/16 12:05:20.192    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     tsx0x2bece4  State changed from Trying to
>>> Completed, event=TX_MSG
>>>  VOIP2009/09/16 12:05:20.213    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     dlg0x2b1894  Transaction tsx0x2bece4 state changed
>>> to Completed
>>>  VOIP2009/09/16 12:05:20.232    ThreadID=0x00020009
>>> cSipWrapper.cxx(1017)  SRW     OnCallState CALL-ID:8 ST:4
>>>  VOIP2009/09/16 12:05:20.250    ThreadID=0x00020009
>>> cSipWrapper.cxx(1017)  SRW     OnCallState CALL-ID:8 ST:4
>>>  VOIP2009/09/16 12:05:20.268    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)  sip_endpoint.c  Processing incoming message: Request
>>> msg ACK/cseq=5448 (rdata0x41a23854)
>>>  VOIP2009/09/16 12:05:20.289    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     tsx0x2b4c7c  Incoming Request msg ACK/cseq=5448
>>> (rdata0x41a23854) in state Completed
>>>  VOIP2009/09/16 12:05:20.317    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     tsx0x2b4c7c  State changed from Completed to
>>> Confirmed, event=RX_MSG
>>>  VOIP2009/09/16 12:05:20.345    ThreadID=0x00020009
>>> cSipWrapper.cxx(1140)     dlg0x2b1894  Transaction tsx0x2b4c7c state changed
>>> to Confirmed
>>>  VOIP2009/09/16 12:05:20.362    ThreadID=0x00020009
>>> cSipWrapper.cxx(1017)  SRW     OnCallState CALL-ID:8 ST:5
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Visit our blog: http://blog.pjsip.org
>>>
>>> pjsip mailing list
>>> pjsip at lists.pjsip.org
>>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>
>>>
>>
>>
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>>
>> pjsip mailing list
>> pjsip at lists.pjsip..org <pjsip at lists.pjsip.org>
>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
>>
>
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20090924/92449dd0/attachment-0001.html>


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux