diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c
index cd55dff7db6ce23c2177905d55d2d57c35fa6c03..6284c5d54ab917deb796da246ad61ad8d9828ae0 100644
--- a/src/sbbs3/zmodem.c
+++ b/src/sbbs3/zmodem.c
@@ -1500,7 +1500,10 @@ BOOL zmodem_send_file(zmodem_t* zm, char* fname, FILE* fp, BOOL request_init, ti
 			type = zmodem_rx_header(zm,zm->recv_timeout);
 			if(zm->cancelled)
 				return(FALSE);
-		} while(type == ZACK);
+		} while(type == ZACK && is_connected(zm));
+
+		if(!is_connected(zm))
+			return(FALSE);
 
 #if 0
 		lprintf(zm,LOG_INFO,"type : %d",type);
@@ -1534,6 +1537,9 @@ BOOL zmodem_send_file(zmodem_t* zm, char* fname, FILE* fp, BOOL request_init, ti
 
 		type = zmodem_send_from(zm, fp, pos, s.st_size, &sent_bytes);
 
+		if(!is_connected(zm))
+			return(FALSE);
+
 		if(sent!=NULL)
 			*sent+=sent_bytes;