Skip to content
Snippets Groups Projects
Commit 48059835 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Continue the "ERROR ... renaming" bad QWK packet fight

Check and log the length of the packet now (since fexist() continues to report
that the file exists when fexistcase() said it did not, even when
experimenting with adding a call to access(filanem, F_OK).

This likely affects no system but VERT.
parent ec479a5f
No related branches found
No related tags found
1 merge request!488Overhaul LZH code
...@@ -2975,7 +2975,7 @@ void event_thread(void* arg) ...@@ -2975,7 +2975,7 @@ void event_thread(void* arg)
} }
sbbs->lprintf(LOG_DEBUG, "Opened %s", lockfile.name); sbbs->lprintf(LOG_DEBUG, "Opened %s", lockfile.name);
if(!fexist(fname)) { if(!fexist(fname)) {
sbbs->lprintf(LOG_DEBUG, "%s already gone", fname); sbbs->lprintf(LOG_NOTICE, "%s already gone", fname);
if(!fmutex_close(&lockfile)) if(!fmutex_close(&lockfile))
sbbs->errormsg(WHERE, ERR_CLOSE, lockfile.name); sbbs->errormsg(WHERE, ERR_CLOSE, lockfile.name);
continue; continue;
...@@ -2991,15 +2991,15 @@ void event_thread(void* arg) ...@@ -2991,15 +2991,15 @@ void event_thread(void* arg)
/* putuserdat? */ /* putuserdat? */
if(success) { if(success) {
sbbs->fremove(WHERE, fname, /* log-all-errors: */true); sbbs->fremove(WHERE, fname, /* log-all-errors: */true);
} else if(fexist(fname)) { } else if(flength(fname) > 0) {
char badpkt[MAX_PATH+1]; char badpkt[MAX_PATH+1];
SAFEPRINTF2(badpkt, "%s.%" PRIx64 ".bad", fname, (uint64_t)time(NULL)); SAFEPRINTF2(badpkt, "%s.%" PRIx64 ".bad", fname, (uint64_t)time(NULL));
sbbs->fremove(WHERE, badpkt); sbbs->fremove(WHERE, badpkt);
if(rename(fname, badpkt) == 0) if(rename(fname, badpkt) == 0)
sbbs->lprintf(LOG_NOTICE, "%s renamed to %s", fname, badpkt); sbbs->lprintf(LOG_NOTICE, "%s renamed to %s", fname, badpkt);
else else
sbbs->lprintf(LOG_ERR, "!ERROR %d (%s) renaming %s to %s" sbbs->lprintf(LOG_ERR, "!ERROR %d (%s) renaming %s (%ld bytes) to %s"
,errno, strerror(errno), fname, badpkt); ,errno, strerror(errno), fname, (long)flength(fname), badpkt);
SAFEPRINTF(badpkt, "%u.rep.*.bad", sbbs->useron.number); SAFEPRINTF(badpkt, "%u.rep.*.bad", sbbs->useron.number);
SAFEPRINTF(str,"%sfile/", sbbs->cfg.data_dir); SAFEPRINTF(str,"%sfile/", sbbs->cfg.data_dir);
sbbs->delfiles(str, badpkt, /* keep: */10); sbbs->delfiles(str, badpkt, /* keep: */10);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment