From 936a700650c2ac81bc59bf8487d8b032573b10ec Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Tue, 26 Feb 2008 21:05:27 +0000
Subject: [PATCH] Fix clean-up of temp directory before/after packing/unpacking
 QWK/REP packets.

---
 src/sbbs3/main.cpp   | 5 ++---
 src/sbbs3/un_qwk.cpp | 1 +
 src/sbbs3/un_rep.cpp | 6 ++++--
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 401e841829..05a0f01979 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2112,6 +2112,7 @@ void event_thread(void* arg)
 					eprintf(LOG_INFO,"Un-packing QWK Reply packet from %s",sbbs->useron.alias);
 					sbbs->getusrsubs();
 					sbbs->unpack_rep(g.gl_pathv[i]);
+					delfiles(sbbs->cfg.temp_dir,ALLFILES);		/* clean-up temp_dir after unpacking */
 					sbbs->batch_create_list();	/* FREQs? */
 					sbbs->batdn_total=0;
 					
@@ -2138,7 +2139,6 @@ void event_thread(void* arg)
 				if(sbbs->useron.number && !(sbbs->useron.misc&(DELETED|INACTIVE))) {
 					eprintf(LOG_INFO,"Packing QWK Message Packet for %s",sbbs->useron.alias);
 					sbbs->online=ON_LOCAL;
-					delfiles(sbbs->cfg.temp_dir,ALLFILES);
 					sbbs->getmsgptrs();
 					sbbs->getusrsubs();
 					sbbs->batdn_total=0;
@@ -2191,7 +2191,6 @@ void event_thread(void* arg)
 							continue;
 						eprintf(LOG_INFO,"Pre-packing QWK for %s",sbbs->useron.alias);
 						sbbs->online=ON_LOCAL;
-						delfiles(sbbs->cfg.temp_dir,ALLFILES);
 						sbbs->getmsgptrs();
 						sbbs->getusrsubs();
 						sbbs->batdn_total=0;
@@ -2305,7 +2304,6 @@ void event_thread(void* arg)
 					SAFECOPY(str,g.gl_pathv[j]);
 					if(flength(str)>0) {	/* silently ignore 0-byte QWK packets */
 						eprintf(LOG_DEBUG,"Inbound QWK Packet detected: %s", str);
-						delfiles(sbbs->cfg.temp_dir,ALLFILES);
 						sbbs->online=ON_LOCAL;
 						sbbs->console|=CON_L_ECHO;
 						if(sbbs->unpack_qwk(str,i)==false) {
@@ -2318,6 +2316,7 @@ void event_thread(void* arg)
 								sbbs->logline("Q!",logmsg);
 							}
 						}
+						delfiles(sbbs->cfg.temp_dir,ALLFILES);
 						sbbs->console&=~CON_L_ECHO;
 						sbbs->online=FALSE;
 						remove(str);
diff --git a/src/sbbs3/un_qwk.cpp b/src/sbbs3/un_qwk.cpp
index d94b2fa51e..a3ca33ab80 100644
--- a/src/sbbs3/un_qwk.cpp
+++ b/src/sbbs3/un_qwk.cpp
@@ -75,6 +75,7 @@ bool sbbs_t::unpack_qwk(char *packet,uint hubnum)
 		errormsg(WHERE,ERR_LEN,packet,l);
 		return(false);
 	}
+	delfiles(cfg.temp_dir,ALLFILES);
 	i=external(cmdstr(cfg.qhub[hubnum]->unpack,packet,ALLFILES,NULL),EX_OFFLINE);
 	if(i) {
 		errormsg(WHERE,ERR_EXEC,cmdstr(cfg.qhub[hubnum]->unpack,packet,ALLFILES,NULL),i);
diff --git a/src/sbbs3/un_rep.cpp b/src/sbbs3/un_rep.cpp
index fe47ba31d4..6233c090f6 100644
--- a/src/sbbs3/un_rep.cpp
+++ b/src/sbbs3/un_rep.cpp
@@ -71,9 +71,10 @@ bool sbbs_t::unpack_rep(char* repfile)
 
 	memset(&msg,0,sizeof(msg));
 
-	if(repfile!=NULL)
+	if(repfile!=NULL) {
+		delfiles(cfg.temp_dir,ALLFILES);
 		SAFECOPY(rep_fname,repfile);
-	else
+	} else
 		SAFEPRINTF2(rep_fname,"%s%s.rep",cfg.temp_dir,cfg.sys_id);
 	if(!fexistcase(rep_fname)) {
 		bputs(text[QWKReplyNotReceived]);
@@ -536,6 +537,7 @@ bool sbbs_t::unpack_rep(char* repfile)
 
 			SAFEPRINTF2(fname,"%s/%s",inbox,dirent->d_name);
 			mv(str,fname,1);
+			putsmsg(&cfg,1,str);	/* debug */
 			SAFEPRINTF2(str,text[ReceivedFileViaQWK],dirent->d_name,useron.alias);
 			putsmsg(&cfg,1,str);
 		} 
-- 
GitLab