From fc9e0fbd992c7a3aa7f4bf94c4c9bf50e84db81e Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Sat, 21 Jul 2001 14:19:32 +0000
Subject: [PATCH] external() will now terminate the child DOS process if the
 mutex cannot be acquired or the IOControl call fails.

---
 src/sbbs3/xtrn.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp
index ea7333e642..68899d88cc 100644
--- a/src/sbbs3/xtrn.cpp
+++ b/src/sbbs3/xtrn.cpp
@@ -495,6 +495,7 @@ int sbbs_t::external(char* cmdline, long mode, char* startup_dir)
     		// Wait for notification from VXD that new VM has started
 			if((retval=WaitForSingleObject(start_event, 5000))!=WAIT_OBJECT_0) {
 				XTRN_CLEANUP;
+                TerminateProcess(process_info.hProcess, __LINE__);
 				errormsg(WHERE, ERR_TIMEOUT, "start_event", retval);
 				return(GetLastError());
 			}
@@ -513,6 +514,7 @@ int sbbs_t::external(char* cmdline, long mode, char* startup_dir)
 				NULL					// Overlapped I/O
 				)) {
 				XTRN_CLEANUP;
+                TerminateProcess(process_info.hProcess, __LINE__);
 				errormsg(WHERE, ERR_IOCTL, SBBSEXEC_VXD, SBBSEXEC_IOCTL_COMPLETE);
 				return(GetLastError());
 			}
-- 
GitLab