From 18da73776ed846b14ece3984fd88e2f426f70aa9 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 15 Jul 2009 07:54:56 +0000 Subject: [PATCH] Handle ZOC sending a ZRINIT after a mid-file ZSKIP. Remotely cancelled uploads are unsuccesful transfers. --- src/sbbs3/sexyz.c | 14 ++++++++++---- src/sbbs3/zmodem.c | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/sbbs3/sexyz.c b/src/sbbs3/sexyz.c index 81a2fbac0f..87eb9d4d2d 100644 --- a/src/sbbs3/sexyz.c +++ b/src/sbbs3/sexyz.c @@ -878,7 +878,10 @@ static int send_files(char** fname, uint fnames) if(success) { xm.sent_files++; xm.sent_bytes+=fsize; - lprintf(LOG_INFO,"Successful - Time: %lu:%02lu CPS: %lu" + if(zm.file_skipped) + lprintf(LOG_WARNING,"File Skipped"); + else + lprintf(LOG_INFO,"Successful - Time: %lu:%02lu CPS: %lu" ,t/60,t%60,cps); if(xm.total_files-xm.sent_files) @@ -1140,7 +1143,7 @@ static int receive_files(char** fname_list, int fnames) errors=zmodem_recv_file_data(&zm,fp,0); - if(errors<=zm.max_errors) + if(errors<=zm.max_errors && !zm.cancelled) success=TRUE; } else { @@ -1209,11 +1212,14 @@ static int receive_files(char** fname_list, int fnames) t=time(NULL)-startfile; if(!t) t=1; - if(success) + if(zm.file_skipped) + lprintf(LOG_WARNING,"File Skipped"); + else if(success) lprintf(LOG_INFO,"Successful - Time: %lu:%02lu CPS: %lu" ,t/60,t%60,file_bytes/t); else - lprintf(LOG_ERR,"File Transfer %s", zm.local_abort ? "Aborted":"Failure"); + lprintf(LOG_ERR,"File Transfer %s" + ,zm.local_abort ? "Aborted": zm.cancelled ? "Cancelled":"Failure"); if(!(mode&XMODEM) && ftime) setfdate(str,ftime); diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c index f13f4aaf85..7027578765 100644 --- a/src/sbbs3/zmodem.c +++ b/src/sbbs3/zmodem.c @@ -1800,7 +1800,9 @@ BOOL zmodem_send_file(zmodem_t* zm, char* fname, FILE* fp, BOOL request_init, ti if(type == ZSKIP) { zm->file_skipped=TRUE; - lprintf(zm,LOG_WARNING,"File skipped by receiver at offset: %lu", pos); + lprintf(zm,LOG_WARNING,"File skipped by receiver at offset: %lu", pos + sent_bytes); + /* ZOC sends a ZRINIT after mid-file ZSKIP, so consume the ZRINIT here */ + zmodem_recv_header(zm); return(TRUE); } -- GitLab