|
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 |
[Prev in Thread] | Current Thread | [Next in Thread] |