CANCEL pjsua bug?

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

 



Yes, you could go this way.

At my side, I prefer let it be, and 200 OK timer or media stream activity
detection will clear such calls.

regards,
Gang

On Thu, Sep 24, 2009 at 11:37 PM, M.S. <hamstiede at yahoo.de> wrote:

> Hi Gang,
> my work around (in application layer) looks like this:
>
> void CSIP_Wrapper::on_call_tsx_state(pjsua_call_id call_id,
> pjsip_transaction *tsx, pjsip_event *e)
> {
>    /* PJSIP Bugfix: early CANCEL for incomming calls doesn' produce call
> hangup
>    i saw it  in call_info.state: PJSIP_INV_STATE_CONNECTING and
> PJSIP_INV_STATE_INCOMING */
>
>         if (tsx->method.id==PJSIP_CANCEL_METHOD)
>         {       if (tsx->role==PJSIP_ROLE_UAS)
>                 {  pjsua_call_hangup(call_id,0, NULL, NULL);
>         }       }
> }
>
> this fix is working fine.
>
> regards
>
>  Mark
>
> ------------------------------
> *Von:* Gang Liu <gangban.lau at gmail.com>
> *An:* pjsip list <pjsip at lists.pjsip.org>
> *Gesendet:* Donnerstag, den 24. September 2009, 10:28:25 Uhr
> *Betreff:* Re: [pjsip] CANCEL pjsua bug?
>
> 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
>>
>>
>
>
> _______________________________________________
> 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/20090925/3521661f/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