summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/smtpd/queue.c4
-rw-r--r--usr.sbin/smtpd/queue_backend.c8
-rw-r--r--usr.sbin/smtpd/queue_fsqueue.c76
-rw-r--r--usr.sbin/smtpd/smtpd.h4
4 files changed, 12 insertions, 80 deletions
diff --git a/usr.sbin/smtpd/queue.c b/usr.sbin/smtpd/queue.c
index d23902c18ad..c4ad440ff03 100644
--- a/usr.sbin/smtpd/queue.c
+++ b/usr.sbin/smtpd/queue.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: queue.c,v 1.115 2012/01/13 14:01:57 eric Exp $ */
+/* $OpenBSD: queue.c,v 1.116 2012/01/13 21:58:35 eric Exp $ */
/*
* Copyright (c) 2008 Gilles Chehade <gilles@openbsd.org>
@@ -69,7 +69,7 @@ queue_imsg(struct imsgev *iev, struct imsg *imsg)
return;
case IMSG_QUEUE_REMOVE_MESSAGE:
- queue_message_purge(Q_INCOMING, evpid_to_msgid(e->id));
+ queue_message_delete(Q_INCOMING, evpid_to_msgid(e->id));
return;
case IMSG_QUEUE_COMMIT_MESSAGE:
diff --git a/usr.sbin/smtpd/queue_backend.c b/usr.sbin/smtpd/queue_backend.c
index 06068ac1d44..31a4746fd4b 100644
--- a/usr.sbin/smtpd/queue_backend.c
+++ b/usr.sbin/smtpd/queue_backend.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: queue_backend.c,v 1.18 2011/12/23 12:10:06 eric Exp $ */
+/* $OpenBSD: queue_backend.c,v 1.19 2012/01/13 21:58:35 eric Exp $ */
/*
* Copyright (c) 2011 Gilles Chehade <gilles@openbsd.org>
@@ -75,12 +75,6 @@ queue_message_commit(enum queue_kind qkind, u_int32_t msgid)
}
int
-queue_message_purge(enum queue_kind qkind, u_int32_t msgid)
-{
- return env->sc_queue->message(qkind, QOP_PURGE, &msgid);
-}
-
-int
queue_message_corrupt(enum queue_kind qkind, u_int32_t msgid)
{
return env->sc_queue->message(qkind, QOP_CORRUPT, &msgid);
diff --git a/usr.sbin/smtpd/queue_fsqueue.c b/usr.sbin/smtpd/queue_fsqueue.c
index 04b89bbaa54..3732b05ba8f 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.28 2012/01/12 17:00:56 eric Exp $ */
+/* $OpenBSD: queue_fsqueue.c,v 1.29 2012/01/13 21:58:35 eric Exp $ */
/*
* Copyright (c) 2011 Gilles Chehade <gilles@openbsd.org>
@@ -53,7 +53,6 @@ static int fsqueue_message_commit(enum queue_kind, u_int32_t);
static int fsqueue_message_fd_r(enum queue_kind, u_int32_t);
static int fsqueue_message_fd_rw(enum queue_kind, u_int32_t);
static int fsqueue_message_delete(enum queue_kind, u_int32_t);
-static int fsqueue_message_purge(enum queue_kind, u_int32_t);
static int fsqueue_message_corrupt(enum queue_kind, u_int32_t);
static void fsqueue_envelope_path(enum queue_kind, u_int64_t, char *, size_t);
@@ -360,75 +359,19 @@ static int
fsqueue_message_delete(enum queue_kind qkind, u_int32_t msgid)
{
char rootdir[MAXPATHLEN];
- char evpdir[MAXPATHLEN];
- char msgpath[MAXPATHLEN];
- DIR *dirp;
- struct dirent *dp;
-
- if (qkind == Q_QUEUE) {
- if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%03x/%08x", PATH_QUEUE,
- msgid & 0xfff, msgid))
- fatal("fsqueue_message_delete: snprintf");
- }
-
- if (! bsnprintf(evpdir, sizeof(evpdir), "%s%s", rootdir,
- PATH_ENVELOPES))
- fatal("fsqueue_message_delete: snprintf");
-
- dirp = opendir(evpdir);
- if (dirp) {
- char envelope[MAXPATHLEN];
-
- while ((dp = readdir(dirp)) != NULL) {
- if (! bsnprintf(envelope, MAXPATHLEN, "%s/%s",
- evpdir, dp->d_name))
- fatal("fsqueue_message_delete: truncated evp");
- unlink(envelope);
- }
- closedir(dirp);
- }
-
- if (! bsnprintf(msgpath, sizeof(msgpath), "%s/message", rootdir))
- fatal("fsqueue_message_delete: snprintf");
-
- if (unlink(msgpath) == -1) {
- if (errno != ENOENT)
- fatal("fsqueue_message_delete: unlink");
- }
-
- if (rmdir(evpdir) == -1) {
- /* It is ok to fail rmdir with ENOENT here
- * because upon successful delivery of the
- * last envelope, we remove the directory.
- */
- if (errno != ENOENT)
- fatal("fsqueue_message_delete: rmdir");
- }
-
- if (rmdir(rootdir) == -1)
- fatal("#2 fsqueue_message_delete: rmdir");
-
if (qkind == Q_QUEUE) {
- if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%03x", PATH_QUEUE, msgid & 0xffff))
+ if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%03x/%08x",
+ fsqueue_getpath(qkind), msgid & 0xfff, msgid))
fatal("fsqueue_message_delete: snprintf");
- rmdir(rootdir);
+ } else {
+ if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%08x",
+ fsqueue_getpath(qkind), msgid))
+ fatalx("fsqueue_message_delete: snprintf");
}
- return 1;
-}
-
-static int
-fsqueue_message_purge(enum queue_kind qkind, u_int32_t msgid)
-{
- char rootdir[MAXPATHLEN];
-
- if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%08x",
- fsqueue_getpath(qkind), msgid))
- fatalx("fsqueue_message_purge: snprintf");
-
if (mvpurge(rootdir, PATH_PURGE) == -1)
- fatal("fsqueue_message_purge: mvpurge");
+ fatal("fsqueue_message_delete: mvpurge");
return 1;
}
@@ -496,9 +439,6 @@ fsqueue_message(enum queue_kind qkind, enum queue_op qop, u_int32_t *msgid)
case QOP_FD_RW:
return fsqueue_message_fd_rw(qkind, *msgid);
- case QOP_PURGE:
- return fsqueue_message_purge(qkind, *msgid);
-
case QOP_CORRUPT:
return fsqueue_message_corrupt(qkind, *msgid);
diff --git a/usr.sbin/smtpd/smtpd.h b/usr.sbin/smtpd/smtpd.h
index 89da6c667db..516bdededd6 100644
--- a/usr.sbin/smtpd/smtpd.h
+++ b/usr.sbin/smtpd/smtpd.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: smtpd.h,v 1.278 2012/01/13 14:27:55 eric Exp $ */
+/* $OpenBSD: smtpd.h,v 1.279 2012/01/13 21:58:35 eric Exp $ */
/*
* Copyright (c) 2008 Gilles Chehade <gilles@openbsd.org>
@@ -919,7 +919,6 @@ enum queue_op {
QOP_LOAD,
QOP_FD_R,
QOP_FD_RW,
- QOP_PURGE,
QOP_CORRUPT,
};
@@ -1107,7 +1106,6 @@ int queue_message_delete(enum queue_kind, u_int32_t);
int queue_message_commit(enum queue_kind, u_int32_t);
int queue_message_fd_r(enum queue_kind, u_int32_t);
int queue_message_fd_rw(enum queue_kind, u_int32_t);
-int queue_message_purge(enum queue_kind, u_int32_t);
int queue_message_corrupt(enum queue_kind, u_int32_t);
int queue_envelope_create(enum queue_kind, struct envelope *);
int queue_envelope_delete(enum queue_kind, struct envelope *);