private void LaunchInstance(NodeStatus node, Socket socket) { try { var executable = Properties.Settings.Default.executable; var homeDirectory = Properties.Settings.Default.homeDirectory; Launcher launcher = new Launcher(executable, homeDirectory, argumentsTemplate, DebugLog); var socketHandle = socket.Handle.ToInt32(); Process p = launcher.launchTelnetNode(node.Node, socketHandle); p.WaitForExit(); socket.Shutdown(SocketShutdown.Both); socket.Close(); } catch (SocketException e) { Console.WriteLine(e.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { nodeManager.freeNode(node); OnNodeUpdated(node); } }
private void LaunchInstance(NodeStatus node, Socket socket) { try { var executable = (node.NodeType == NodeType.BBS) ? Properties.Settings.Default.executable : Properties.Settings.Default.binkpExecutable; var homeDirectory = Properties.Settings.Default.homeDirectory; Launcher launcher = new Launcher(executable, homeDirectory, argumentsTemplate, DebugLog); var socketHandle = socket.Handle.ToInt32(); using (Process p = launcher.launchSocketNode(node.Node, socketHandle)) { if (p != null) { p.WaitForExit(); } } } catch (Exception e) { DebugLog(e.ToString()); } finally { try { // Let's try to shutdown in a try..catch incase it's already closed. socket.Shutdown(SocketShutdown.Both); socket.Close(); } catch (SocketException e) { Debug.WriteLine(e.ToString()); } finally { nodeManager.freeNode(node); OnNodeUpdated(node); // Decrement the # active sessions. DecrementConnection(node.RemoteAddress); } } }