nettools/conntest/Engine/SocketsEngine.cpp
branchRCL_3
changeset 17 3ba072830a8a
parent 16 12a3e9fe500f
--- a/nettools/conntest/Engine/SocketsEngine.cpp	Tue Aug 31 15:04:20 2010 +0300
+++ b/nettools/conntest/Engine/SocketsEngine.cpp	Wed Sep 01 12:33:27 2010 +0100
@@ -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 );
     }