diff options
| author | 2012-01-11 17:46:36 +0000 | |
|---|---|---|
| committer | 2012-01-11 17:46:36 +0000 | |
| commit | 591aa05bcf29157ab2fbe85f77273fb04b0ff699 (patch) | |
| tree | 007b61f0369a8161caad29f2ea034a52ab314655 /usr.sbin/smtpd/queue_fsqueue.c | |
| parent | Put an splsoftassert(IPL_SOFTNET) into in_pcbdetach(). (diff) | |
| download | wireguard-openbsd-591aa05bcf29157ab2fbe85f77273fb04b0ff699.tar.xz wireguard-openbsd-591aa05bcf29157ab2fbe85f77273fb04b0ff699.zip | |
Simplify runner/queue by getting rid of Q_PURGE. Instead, let smtpd
periodically clear the purge/ directory. At init time, the fsqueue
backend simply moves the existing incoming/ dir in purge/ to discard
aborted sessions.
ok gilles@ chl@
Diffstat (limited to 'usr.sbin/smtpd/queue_fsqueue.c')
| -rw-r--r-- | usr.sbin/smtpd/queue_fsqueue.c | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/usr.sbin/smtpd/queue_fsqueue.c b/usr.sbin/smtpd/queue_fsqueue.c index 75c3c76a8ee..a94380eb2f3 100644 --- a/usr.sbin/smtpd/queue_fsqueue.c +++ b/usr.sbin/smtpd/queue_fsqueue.c @@ -1,4 +1,4 @@ -/* $OpenBSD: queue_fsqueue.c,v 1.25 2011/12/27 17:13:05 eric Exp $ */ +/* $OpenBSD: queue_fsqueue.c,v 1.26 2012/01/11 17:46:36 eric Exp $ */ /* * Copyright (c) 2011 Gilles Chehade <gilles@openbsd.org> @@ -69,7 +69,6 @@ void fsqueue_qwalk_close(void *); #define PATH_INCOMING "/incoming" #define PATH_QUEUE "/queue" -#define PATH_PURGE "/purge" #define PATH_CORRUPT "/corrupt" #define PATH_MESSAGE "/message" @@ -95,9 +94,6 @@ fsqueue_getpath(enum queue_kind kind) case Q_QUEUE: return (PATH_QUEUE); - case Q_PURGE: - return (PATH_PURGE); - case Q_CORRUPT: return (PATH_CORRUPT); @@ -399,11 +395,6 @@ fsqueue_message_delete(enum queue_kind qkind, u_int32_t msgid) msgid & 0xfff, msgid)) fatal("fsqueue_message_delete: snprintf"); } - else if (qkind == Q_PURGE) { - if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%08x", PATH_PURGE, - msgid)) - fatal("fsqueue_message_delete: snprintf"); - } if (! bsnprintf(evpdir, sizeof(evpdir), "%s%s", rootdir, PATH_ENVELOPES)) @@ -456,18 +447,13 @@ static int fsqueue_message_purge(enum queue_kind qkind, u_int32_t msgid) { char rootdir[MAXPATHLEN]; - char purgedir[MAXPATHLEN]; if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%08x", fsqueue_getpath(qkind), msgid)) fatalx("fsqueue_message_purge: snprintf"); - if (! bsnprintf(purgedir, sizeof(purgedir), "%s/%08x", - fsqueue_getpath(Q_PURGE), msgid)) - fatalx("fsqueue_message_purge: snprintf"); - - if (rename(rootdir, purgedir) == -1) - fatal("fsqueue_message_purge: rename"); + if (mvpurge(rootdir, PATH_PURGE) == -1) + fatal("fsqueue_message_purge: mvpurge"); return 1; } @@ -497,11 +483,12 @@ int fsqueue_init(void) { unsigned int n; - char *paths[] = { PATH_INCOMING, PATH_QUEUE, - PATH_PURGE, PATH_CORRUPT }; + char *paths[] = { PATH_INCOMING, PATH_QUEUE, PATH_CORRUPT }; char path[MAXPATHLEN]; int ret; + mvpurge(PATH_SPOOL PATH_INCOMING, PATH_SPOOL PATH_PURGE); + ret = 1; for (n = 0; n < nitems(paths); n++) { strlcpy(path, PATH_SPOOL, sizeof(path)); @@ -626,7 +613,7 @@ fsqueue_qwalk_new(enum queue_kind kind, u_int32_t msgid) if (kind == Q_QUEUE) q->filefn = walk_queue; - if (kind == Q_INCOMING || kind == Q_PURGE) + if (kind == Q_INCOMING) q->filefn = walk_queue_nobucket; q->dirs[q->level] = opendir(q->path); |
