diff --git a/src/sbbs3/sexyz.c b/src/sbbs3/sexyz.c
index 7390e8cd64de86b6da07b4da27ab9d0fc63329aa..83193819dfbb4d875519ed418f657ee91a541cfd 100755
--- a/src/sbbs3/sexyz.c
+++ b/src/sbbs3/sexyz.c
@@ -1094,7 +1094,7 @@ static int receive_files(char** fname_list, int fnames)
 	outbuf.highwater_mark=0;	/* don't delay ACK/NAK transmits */
 
 	/* Purge input buffer */
-	while(is_connected(NULL) && (i=recv_byte(NULL,0))!=NOINP)
+	while(is_connected(NULL) && (i=recv_byte(NULL,0))!=NOINP && !zm.local_abort)
 		lprintf(LOG_WARNING,"Throwing out received: %s",chr((uchar)i));
 
 	while(is_connected(NULL)) {
diff --git a/src/sbbs3/xmodem.c b/src/sbbs3/xmodem.c
index cb48ac0d6c2a275d6725ad2ae1e215cbf95a595f..80b412bfc3d1fd3183305cea68b1e603d48433ba 100755
--- a/src/sbbs3/xmodem.c
+++ b/src/sbbs3/xmodem.c
@@ -1,5 +1,4 @@
 /* Synchronet X/YMODEM Functions */
-/* Synchronet X/YMODEM Functions */
 
 /****************************************************************************
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
@@ -122,6 +121,8 @@ int xmodem_put_nak(xmodem_t* xm, unsigned block_num)
 		lprintf(xm,LOG_DEBUG,"Block %u: Dumping byte: %02Xh"
 			,block_num, (BYTE)i);
 		SLEEP(1);
+		if(is_cancelled(xm))
+			break;
 	}
 	if(dump_count)
 		lprintf(xm,LOG_INFO,"Block %u: Dumped %u bytes"
@@ -436,7 +437,7 @@ BOOL xmodem_put_eot(xmodem_t* xm)
 	unsigned errors;
 	unsigned cans=0;
 
-	for(errors=0;errors<=xm->max_errors && is_connected(xm);errors++) {
+	for(errors=0;errors<=xm->max_errors && is_connected(xm) && !is_cancelled(xm);errors++) {
 
 		lprintf(xm,LOG_INFO,"Sending End-of-Text (EOT) indicator (%d)",errors+1);