Hi All, Have anyone solved the problem when pjsip for symbian reconnected after WIFI(network) is lost ? I coded my app by imitating symbian_ua. PJSIP's initialization was ok,Register was ok. If I called then talked with someone by pjsip,the pjsip crashed when WIFI couldn't be used(WIFI was lost)suddenly. After the connection was lost , my app called pj_symbianos_set_connection_status(PJ_FALSE) and pjsua_destroy().The app crashed when called pjsua_destroy(). If I didn't call then talk to someone,everything was ok when WIFI was lost suddenly. PJSIP could call pj_symbianos_set_connection_status(PJ_FALSE) and pjsua_destroy() correctly,It could unregister acount,destroy pool,shutdown media transports and so on.My app could reconnect WIFI and call symbian_ua_init() again ,It could register correctly again.. I have read the documentation(http://trac.pjsip.org/repos/wiki/Symbian_AP_Reconnection). I did implement the connection monitors like "connmon"" into my application.The codes below: //Begin Code class CConnStateTimer: public CActive{ public: static CConnStateTimer* NewL() { CConnStateTimer *self = new (ELeave) CConnStateTimer(); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); return self; } public: void Start() { Cancel(); // Cancel any request, if outstanding iStatus = KRequestPending; myWebClient->iConnection.ProgressNotification(nifProgress,iStatus); SetActive(); } void Stop() { Cancel(); } ~CConnStateTimer() { Stop(); } private: CConnStateTimer(): CActive(EPriorityHigh) { CActiveScheduler::Add(this); } void ConstructL() { } void DoCancel() { myWebClient->iConnection.CancelProgressNotification(); } void RunL() { if(nifProgress().iStage==KConnectionClosed || nifProgress().iStage==KLinkLayerClosed)//Connection is lost { if( isSIPInitSuccess) { pj_symbianos_set_connection_status(PJ_FALSE);//Set Connection Status PJ_FALSE, PJSIP was still ok... pjsua_destroy();//pjsip destroy,.Problem happened when called it. PJSIP crashed... isSIPInitSuccess=EFalse; iReInitState=EFaile; isSipHasInit=EFalse; if(myAppUi->IsCalling()) { myAppUi->SetCallState(EFalse); if(!isWelcomeView) { switch( myDocument->GetActiveViewId()) { case 0: { myContactsView->SetCBACall(); } break; case 1: { myTempInputView->SetCBACall(); } break; default: break; } } } // Destroy pjsua myWebClient->SetConnectionOpen(EFalse); } TBuf8<32> st_failed8; st_failed8.Append(_L8("??????????")); TBuf16<32> st_failed16; myAppUi->ChineseConvertToUnicode(st_failed16,st_failed8); myAppUi->ShowMessageByMsgBar(isWelcomeView,st_failed16); isRegisterSuccess=EFalse; Stop(); return; } Start(); } private: TNifProgressBuf nifProgress; }; //End code I debuged the pjsip when call pjsua_destroy(), The debug information below: 1 . At View Debug window(carbide c++), the below is shown: Thread [Thread id: 1164] (Suspended: Signal 'Exception 0' received. Description: A data abort exception has occurred..) 6 tsx_destroy() F:\Symbian\Carbide\workspace\pjproject-1.7\pjsip\src\pjsip\sip_transaction.c:1038 0x792e9130 5 tsx_set_state() F:\Symbian\Carbide\workspace\pjproject-1.7\pjsip\src\pjsip\sip_transaction.c:1171 0x792e9518 4 tsx_on_state_terminated() F:\Symbian\Carbide\workspace\pjproject-1.7\pjsip\src\pjsip\sip_transaction.c:3149 0x792ecd7c 3 tsx_timer_callback() F:\Symbian\Carbide\workspace\pjproject-1.7\pjsip\src\pjsip\sip_transaction.c:1076 0x792e927e 2 CPjTimerEntry::RunL() F:\Symbian\Carbide\workspace\pjproject-1.7\pjlib\src\pj\timer_symbian.cpp:254 0x793700aa 1 Unknown (0x80295108)() 0x80295108 2. The app can't get out of the loop below,in tsx_destroy() . (F:\Symbian\Carbide\workspace\pjproject-1.7\pjsip\src\pjsip\sip_transaction.c:1038): lck = (struct tsx_lock_data*) pj_thread_local_get(pjsip_tsx_lock_tls_id); while (lck) { if (lck->tsx == tsx) { //After called pjsua_destroy(),my app looped here but not go out of while lck->is_alive = 0; } lck = lck->prev; } 3.At View Disassembly window, the below is shown: if (lck->tsx == tsx) { 0x792e9126 <tsx_destroy>: mov r3,r7 0x792e9128 <tsx_destroy+2>: sub r3,#12 0x792e912a <tsx_destroy+4>: ldr r3,[r3,#0] 0x792e912c <tsx_destroy+6>: mov r2,r7 0x792e912e <tsx_destroy+8>: sub r2,#8 0x792e9130 <tsx_destroy+10>: ldr r1,[r3,#4] 0x792e9132 <tsx_destroy+12>: ldr r3,[r2,#0] 0x792e9134 <tsx_destroy+14>: cmp r1,r3 0x792e9136 <tsx_destroy+16>: bne tsx_destroy+0x16e (0x792e9142); 0x792e9142 lck->is_alive = 0; 0x792e9138 <tsx_destroy+18>: mov r3,r7 0x792e913a <tsx_destroy+20>: sub r3,#12 0x792e913c <tsx_destroy+22>: ldr r2,[r3,#0] 0x792e913e <tsx_destroy+24>: mov r3,#0 0x792e9140 <tsx_destroy+26>: str r3,[r2,#8] Can anyone help me with this? Best regards. Fans -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20101111/64a84453/attachment.html>