linphone-developers
[Top][All Lists]
Advanced

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

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


From: Saverio Ieva
Subject: [Linphone-developers] crash of linphone when closing call : problem found
Date: Sun, 6 Dec 2009 21:06:10 +0100

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]