Thank you,Hasan. I haven't used pjproject-1.5.I will try it. ________________________________ I am getting this crash on pjproject-1.7 . Earlier it was okay when using pjproject-1.5. May be it exists on the latest release too. 2010/11/11 Bill Fans <givethemsomecolorseesee at yahoo.com.cn> > > > >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 > > > >_______________________________________________ >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/20101114/6d882f7c/attachment-0001.html>