diff --git a/src/sbbs3/sexyz.h b/src/sbbs3/sexyz.h index 30f671301b26ef0bf269744e07cb7f46fa76562d..dc156630c0fec1d6e28929e1260afa15572521fe 100644 --- a/src/sbbs3/sexyz.h +++ b/src/sbbs3/sexyz.h @@ -55,4 +55,4 @@ #define VAR_HDRS (1<<1) /* Use variable headers */ #define NOINP -1 /* input buffer empty (incom only) */ - +#define NOT_YMODEM -3 /* Expected block zero, got block one */ \ No newline at end of file diff --git a/src/sbbs3/xmodem.c b/src/sbbs3/xmodem.c index 0fcc0d2d4828e621095e655e0ef06b6eb0eae7d8..06230be562e22420be3494764e0d2de9db512b88 100644 --- a/src/sbbs3/xmodem.c +++ b/src/sbbs3/xmodem.c @@ -234,6 +234,8 @@ int xmodem_get_block(xmodem_t* xm, uchar* block, unsigned expected_block_num) if(block_num!=(uchar)(expected_block_num&0xff)) { lprintf(xm,LOG_WARNING,"Block number error (%u received, expected %u)" ,block_num,expected_block_num&0xff); + if(expected_block_num==0 && block_num==1) + return(NOT_YMODEM); if(expected_block_num && block_num==(uchar)((expected_block_num-1)&0xff)) continue; /* silently discard repeated packets (ymodem.doc 7.3.2) */ break;