linphone-developers
[Top][All Lists]
Advanced

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

[Linphone-developers] Re: crash of linphone when closing call : problem


From: Simon Morlat
Subject: [Linphone-developers] Re: crash of linphone when closing call : problem found
Date: Fri, 11 Dec 2009 09:32:02 +0100

Hi,

THank you for the detailed analysis.
The problem is basically that eXosip refuses to send a CANCEL request
for a call for which it did not received a 1xx response yet.
Is this behaviour defined in the standart ? I don't know but I will dig.

However, do you have a backtrace when linphone crashes after that ?
Because normally it should be able to detect these "zombie" calls later
and close them.

Simon

Le dimanche 06 décembre 2009 à 21:06 +0100, Saverio Ieva a écrit :
> Hi Simon,
> 
> I have looked at source code and I have found that the crash happen
> because there is a problem in 
> int eXosip_call_terminate(int cid, int did) in eXcall_api.c  in exosip
> package, I am using the latest svn release.
> 
> I paste the code bugged:
> 
>     tr = eXosip_find_last_out_invite(jc, jd);   // the code here is
> good because tr os not null
>     if (jd != NULL && jd->d_dialog != NULL
>         && jd->d_dialog->state == DIALOG_CONFIRMED) {
>         /* don't send CANCEL on re-INVITE: send BYE instead */
>     } else if (tr != NULL && tr->last_response != NULL  /// HERE there
> is the problem.... tr->last_response is NULL because when I close the
> call I have not received any response from sip server (I close very
> soon the call)
>                && MSG_IS_STATUS_1XX(tr->last_response)) {
>         i = generating_cancel(&request, tr->orig_request);
>         if (i != 0) {
>             OSIP_TRACE(osip_trace
>                        (__FILE__, __LINE__, OSIP_ERROR, NULL,
>                         "eXosip: cannot terminate this call!\n"));
>             return i;
>         }
>         i = eXosip_create_cancel_transaction(jc, jd, request);
>         if (i != 0) {
>             OSIP_TRACE(osip_trace
>                        (__FILE__, __LINE__, OSIP_ERROR, NULL,
>                         "eXosip: cannot initiate SIP transaction!
> \n"));
>             return i;
>         }
>         if (jd != NULL) {
>             osip_dialog_free(jd->d_dialog);
>             jd->d_dialog = NULL;
>             eXosip_update();    /* AMD 30/09/05 */
>         }
>         return OSIP_SUCCESS;
>     }
> 
>     if (jd == NULL || jd->d_dialog == NULL) {// The code goes there ,
> and so remains in bad state ... and after linphone crashes because I
> have not closed the call and all goes wrong
>         OSIP_TRACE(osip_trace
>                    (__FILE__, __LINE__, OSIP_ERROR, NULL,
>                     "eXosip: No established dialog!\n"));
>         return OSIP_WRONG_STATE;
>     }
> 
> Thank you.
> Saverio Ieva.
> 
> 
> 
> 
> ______________________________________________________________________
> Facile, veloce, sicuro: Prova Hotmail da Internet Explorer 8






reply via email to

[Prev in Thread] Current Thread [Next in Thread]