/// <summary> /// Send OpenVPN a signal to quit and wait for answer. /// After returning from this method you can savely close all sockets by calling disconnect(). /// </summary> public void sendQuit() { if (isConnected()) { setLock(WaitState.SIGNAL); m_releaselock = false; m_logs.logLine(LogType.Management,"Sending signal to quit"); m_ovpnComm.send("signal SIGTERM"); while (m_state == WaitState.SIGNAL && m_ovpnComm.isConnected()) { Thread.Sleep(100); m_ovpnComm.send("signal SIGTERM"); // HACK: <- this is crazy. TODO: find out, why this is needed. Thread.Sleep(100); } } }