nettools/conntest/Engine/SocketsEngine.cpp
branchRCL_3
changeset 14 c6b52d057a05
parent 8 86091f1c2f4d
child 16 12a3e9fe500f
--- 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 );
     }