diff options
| -rw-r--r-- | usr.sbin/smtpd/queue.c | 4 | ||||
| -rw-r--r-- | usr.sbin/smtpd/queue_backend.c | 8 | ||||
| -rw-r--r-- | usr.sbin/smtpd/queue_fsqueue.c | 76 | ||||
| -rw-r--r-- | usr.sbin/smtpd/smtpd.h | 4 |
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 *); |
