diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c
index 7298e813e8d195007951b281cff6590ac9510ced..0f39e785359fddd7e6a50f4ec99215f8b048c7e0 100644
--- a/src/sbbs3/zmodem.c
+++ b/src/sbbs3/zmodem.c
@@ -1352,7 +1352,7 @@ int zmodem_send_from(zmodem_t* zm, FILE* fp, ulong pos, ulong fsize, ulong* sent
 		 * check out that header
 		 */
 
-		while(zmodem_rx_poll(zm)) {
+		while(zmodem_rx_poll(zm) && !zm->cancelled) {
 			int type;
 			int c;
 			if((c = zmodem_rx_raw(zm, zm->send_timeout)) < 0)
@@ -1363,10 +1363,9 @@ int zmodem_send_from(zmodem_t* zm, FILE* fp, ulong pos, ulong fsize, ulong* sent
 					return type;
 				}
 			}
-			if(zm->cancelled)
-				return(-1);
 		}
-
+		if(zm->cancelled)
+			return(-1);
 	}
 
 	/*