diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c
index 400d373bb4379d6e5dc133ef10dde15887c10b97..29afc3c8aa0ec24725360692f23c82f0c3ea3f32 100644
--- a/src/sbbs3/zmodem.c
+++ b/src/sbbs3/zmodem.c
@@ -1344,10 +1344,6 @@ BOOL zmodem_request_crc(zmodem_t* zm, int32_t length)
 {
 	zmodem_recv_purge(zm);
 	zmodem_send_pos_header(zm,ZCRC,length,TRUE);
-	if(!zmodem_data_waiting(zm,zm->crc_timeout)) {
-		lprintf(zm,LOG_ERR,"Timeout waiting for response (%u seconds)", zm->crc_timeout);
-		return(FALSE);
-	}
 	return TRUE;
 }
 
@@ -1355,6 +1351,10 @@ BOOL zmodem_recv_crc(zmodem_t* zm, uint32_t* crc)
 {
 	int type;
 
+	if(!zmodem_data_waiting(zm,zm->crc_timeout)) {
+		lprintf(zm,LOG_ERR,"Timeout waiting for response (%u seconds)", zm->crc_timeout);
+		return(FALSE);
+	}
 	if((type=zmodem_recv_header(zm))!=ZCRC) {
 		lprintf(zm,LOG_ERR,"Received %s instead of ZCRC", frame_desc(type));
 		return(FALSE);