Index: /trunk/src/VBox/Main/ConsoleImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/ConsoleImpl.cpp	(revision 298)
+++ /trunk/src/VBox/Main/ConsoleImpl.cpp	(revision 299)
@@ -6184,4 +6184,40 @@
         alock.enter();
 
+#ifdef VBOX_VRDP
+        if (VBOX_SUCCESS (vrc))
+        {
+            /* Start the VRDP server after the VM is created. */
+            ConsoleVRDPServer *server = console->consoleVRDPServer();
+            Assert (server);
+            /// @todo (dmik)
+            //      does VRDP server call Console from the other thread?
+            //      Not sure, so leave the lock just in case
+            alock.leave();
+            vrc = server->Launch();
+            alock.enter();
+            if (VBOX_FAILURE (vrc))
+            {
+                Utf8Str errMsg;
+                switch (vrc)
+                {
+                    case VERR_NET_ADDRESS_IN_USE:
+                    {
+                        ULONG port = 0;
+                        console->mVRDPServer->COMGETTER(Port) (&port);
+                        errMsg = Utf8StrFmt (tr ("VRDP server port %d is already in use"),
+                                             port);
+                        break;
+                    }
+                    default:
+                        errMsg = Utf8StrFmt (tr ("Failed to launch VRDP server (%Vrc)"),
+                                             vrc);
+                }
+                LogRel (("Failed to launch VRDP server (%Vrc), error message: '%s'\n",
+                         vrc, errMsg.raw()));
+                hrc = setError (E_FAIL, errMsg);
+            }
+        }
+#endif /* VBOX_VRDP */
+
         if (VBOX_SUCCESS (vrc))
         {
@@ -6330,40 +6366,4 @@
             }
             while (0);
-
-#ifdef VBOX_VRDP
-            if ((!FAILED (hrc)) && VBOX_SUCCESS (vrc))
-            {
-                /* Start the VRDP server after the VM is started. */
-                ConsoleVRDPServer *server = console->consoleVRDPServer();
-                Assert (server);
-                /// @todo (dmik)
-                //      does VRDP server call Console from the other thread?
-                //      Not sure, so leave the lock just in case
-                alock.leave();
-                vrc = server->Launch();
-                alock.enter();
-                if (VBOX_FAILURE (vrc))
-                {
-                    Utf8Str errMsg;
-                    switch (vrc)
-                    {
-                        case VERR_NET_ADDRESS_IN_USE:
-                        {
-                            ULONG port = 0;
-                            console->mVRDPServer->COMGETTER(Port) (&port);
-                            errMsg = Utf8StrFmt (tr ("VRDP server port %d is already in use"),
-                                                 port);
-                            break;
-                        }
-                        default:
-                            errMsg = Utf8StrFmt (tr ("Failed to launch VRDP server (%Vrc)"),
-                                                 vrc);
-                    }
-                    LogRel (("Failed to launch VRDP server (%Vrc), error message: '%s'\n",
-                             vrc, errMsg.raw()));
-                    hrc = setError (E_FAIL, errMsg);
-                }
-            }
-#endif /* VBOX_VRDP */
 
             /*  On failure, destroy the VM */
