diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 580c63efe601d9213f61a88daf477b107ffecc85..b9e893f5a2adcb2bff4708702ba5aa0daa73d4dc 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2445,6 +2445,8 @@ bool sbbs_t::init()
 			errormsg(WHERE,ERR_CREATE,"duplicate socket handle",client_socket);
 			return(false);
 		}
+#else
+		client_socket_dup = client_socket;
 #endif
 
 		addr_len=sizeof(addr);
@@ -2739,7 +2741,7 @@ sbbs_t::~sbbs_t()
 //	if(!cfg.node_num)
 //		rmdir(cfg.temp_dir);
 
-	if(client_socket_dup!=INVALID_SOCKET)
+	if(client_socket_dup!=INVALID_SOCKET && client_socket_dup!=client_socket)
 		closesocket(client_socket_dup);	/* close duplicate handle */
 
 	if(cfg.node_num>0)
@@ -3033,6 +3035,10 @@ int sbbs_t::mv(char *src, char *dest, char copy)
 
 void sbbs_t::hangup(void)
 {
+	if(client_socket_dup!=INVALID_SOCKET && client_socket_dup!=client_socket)
+		closesocket(client_socket_dup);
+	client_socket_dup=INVALID_SOCKET;
+
 	if(client_socket!=INVALID_SOCKET) {
 		mswait(1000);	/* Give socket output buffer time to flush */
 		riosync(0);
@@ -3040,10 +3046,6 @@ void sbbs_t::hangup(void)
 		close_socket(client_socket);
 		client_socket=INVALID_SOCKET;
 	}
-	if(client_socket_dup!=INVALID_SOCKET) {
-		closesocket(client_socket_dup);
-		client_socket_dup=INVALID_SOCKET;
-	}
 	sem_post(&outbuf.sem);
 	online=0;
 }
diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp
index ad0559cc23ec255cbf07ae97346b181c20351a02..bc277f55c41e1eac63f02030eea9c95a6a65d551 100644
--- a/src/sbbs3/xtrn.cpp
+++ b/src/sbbs3/xtrn.cpp
@@ -2009,11 +2009,7 @@ char* sbbs_t::cmdstr(char *instr, char *fpath, char *fspec, char *outstr)
                     strcat(cmd,cfg.temp_dir);
                     break;
                 case 'H':   /* Port Handle or Hardware Flow Control */
-#if defined(__unix__)
-					strcat(cmd,ultoa(client_socket,str,10));
-#else
                     strcat(cmd,ultoa(client_socket_dup,str,10));
-#endif
                     break;
                 case 'I':   /* IP address */
                     strcat(cmd,cid);
diff --git a/src/sbbs3/xtrn_sec.cpp b/src/sbbs3/xtrn_sec.cpp
index 883b42091fd696b924b2bd588780bef541cbdf0e..449feb376e5d20ab43b2aae6c7bda14ff034a620 100644
--- a/src/sbbs3/xtrn_sec.cpp
+++ b/src/sbbs3/xtrn_sec.cpp
@@ -411,15 +411,7 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
 			,cfg.temp_dir
 			,cfg.sys_id
 			,cfg.node_misc
-	#if defined(__OS2__)
-			,rio_handle
-	#elif defined(_WIN32)
 			,misc&IO_INTS ? INVALID_SOCKET : client_socket_dup
-	#elif defined(__unix__)
-			,misc&IO_INTS ? INVALID_SOCKET : client_socket
-	#else
-			,-1
-	#endif
 			);
 		lfexpand(str,misc);
 		write(file,str,strlen(str));