diff -r a17829cb5e59 -r c6b52d057a05 nettools/conntest/Engine/SocketsEngine.cpp --- a/nettools/conntest/Engine/SocketsEngine.cpp Wed Mar 31 21:08:37 2010 +0300 +++ b/nettools/conntest/Engine/SocketsEngine.cpp Thu Jul 15 18:19:27 2010 +0300 @@ -547,6 +547,50 @@ User::Panic( KPanicConnTest, EConnTestHttpClientInitializationFailed ); } + /* + * In case roaming, socket needs to be restarted in following cases. + */ + + if ( iEngineStatus == EConnecting || + iEngineStatus == ELookingUp ) + { + // Cancel and then re-connect + DoCancel(); + ConnectL(); + } + else if ( iEngineStatus == EConnected ) + { + // Cancel write socket + iSocketsWrite->Cancel(); + + // Cancel read socket + TBool isSocketActive( EFalse ); + if ( iSocketsRead->IsActive() ) + { + iSocketsRead->Cancel(); + isSocketActive = ETrue; + } + + // Re-connect + ChangeStatus( EInterfaceUp ); + ConnectL(); + + // Start read socket again + if ( isSocketActive ) + { + Read(); + } + } + else if ( iEngineStatus == EListening ) + { + DoCancel(); + ListenL(); + } + else if ( iEngineStatus == EDisconnecting ) + { + DoCancel(); + } + iConsole.PrintNotify( text ); }