summaryrefslogtreecommitdiffstats
path: root/usr.sbin/smtpd/queue_fsqueue.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/smtpd/queue_fsqueue.c')
-rw-r--r--usr.sbin/smtpd/queue_fsqueue.c61
1 files changed, 31 insertions, 30 deletions
diff --git a/usr.sbin/smtpd/queue_fsqueue.c b/usr.sbin/smtpd/queue_fsqueue.c
index 4b3f131ab34..2831782c1c9 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.11 2011/05/01 12:57:11 eric Exp $ */
+/* $OpenBSD: queue_fsqueue.c,v 1.12 2011/05/16 21:05:52 gilles Exp $ */
/*
* Copyright (c) 2011 Gilles Chehade <gilles@openbsd.org>
@@ -91,7 +91,7 @@ fsqueue_hash(u_int32_t h)
}
static int
-fsqueue_envelope_create(enum queue_kind qkind, struct envelope *m)
+fsqueue_envelope_create(enum queue_kind qkind, struct envelope *ep)
{
char evpname[MAXPATHLEN];
FILE *fp;
@@ -105,7 +105,8 @@ again:
rnd = (u_int32_t)arc4random();
if (rnd == 0)
goto again;
- evpid = m->evpid | rnd;
+ evpid = ep->delivery.id | rnd;
+
if (! bsnprintf(evpname, sizeof(evpname), "%s/%08x%s/%016llx",
fsqueue_getpath(qkind),
@@ -126,15 +127,15 @@ again:
if (fp == NULL)
fatal("fsqueue_envelope_create: fdopen");
- m->creation = time(NULL);
- m->evpid = evpid;
+ ep->delivery.creation = time(NULL);
+ ep->delivery.id = evpid;
if (qkind == Q_BOUNCE) {
- m->lasttry = 0;
- m->retry = 0;
+ ep->delivery.lasttry = 0;
+ ep->delivery.retry = 0;
}
- if (fwrite(m, sizeof (*m), 1, fp) != 1) {
+ if (fwrite(ep, sizeof (*ep), 1, fp) != 1) {
if (errno == ENOSPC)
goto tempfail;
fatal("fsqueue_envelope_create: write");
@@ -154,23 +155,23 @@ tempfail:
fclose(fp);
else if (fd != -1)
close(fd);
- m->creation = 0;
- m->evpid = 0;
+ ep->delivery.creation = 0;
+ ep->delivery.id = 0;
return 0;
}
static int
-fsqueue_envelope_load(enum queue_kind qkind, struct envelope *m)
+fsqueue_envelope_load(enum queue_kind qkind, struct envelope *ep)
{
char pathname[MAXPATHLEN];
FILE *fp;
if (! bsnprintf(pathname, sizeof(pathname), "%s/%04x/%08x%s/%016llx",
fsqueue_getpath(qkind),
- fsqueue_hash(evpid_to_msgid(m->evpid)),
- evpid_to_msgid(m->evpid),
- PATH_ENVELOPES, m->evpid))
+ fsqueue_hash(evpid_to_msgid(ep->delivery.id)),
+ evpid_to_msgid(ep->delivery.id),
+ PATH_ENVELOPES, ep->delivery.id))
fatalx("fsqueue_envelope_load: snprintf");
fp = fopen(pathname, "r");
@@ -179,31 +180,31 @@ fsqueue_envelope_load(enum queue_kind qkind, struct envelope *m)
return 0;
fatal("fsqueue_envelope_load: fopen");
}
- if (fread(m, sizeof(*m), 1, fp) != 1)
+ if (fread(ep, sizeof (*ep), 1, fp) != 1)
fatal("fsqueue_envelope_load: fread");
fclose(fp);
return 1;
}
static int
-fsqueue_envelope_update(enum queue_kind qkind, struct envelope *m)
+fsqueue_envelope_update(enum queue_kind qkind, struct envelope *ep)
{
char temp[MAXPATHLEN];
char dest[MAXPATHLEN];
FILE *fp;
u_int64_t batch_id;
- batch_id = m->batch_id;
- m->batch_id = 0;
+ batch_id = ep->batch_id;
+ ep->batch_id = 0;
if (! bsnprintf(temp, sizeof(temp), "%s/envelope.tmp", PATH_QUEUE))
fatalx("fsqueue_envelope_update");
if (! bsnprintf(dest, sizeof(dest), "%s/%04x/%08x%s/%016llx",
fsqueue_getpath(qkind),
- fsqueue_hash(evpid_to_msgid(m->evpid)),
- evpid_to_msgid(m->evpid),
- PATH_ENVELOPES, m->evpid))
+ fsqueue_hash(evpid_to_msgid(ep->delivery.id)),
+ evpid_to_msgid(ep->delivery.id),
+ PATH_ENVELOPES, ep->delivery.id))
fatal("fsqueue_envelope_update: snprintf");
fp = fopen(temp, "w");
@@ -212,7 +213,7 @@ fsqueue_envelope_update(enum queue_kind qkind, struct envelope *m)
goto tempfail;
fatal("fsqueue_envelope_update: open");
}
- if (fwrite(m, sizeof(*m), 1, fp) != 1) {
+ if (fwrite(ep, sizeof (*ep), 1, fp) != 1) {
if (errno == ENOSPC)
goto tempfail;
fatal("fsqueue_envelope_update: fwrite");
@@ -226,7 +227,7 @@ fsqueue_envelope_update(enum queue_kind qkind, struct envelope *m)
fatal("fsqueue_envelope_update: rename");
}
- m->batch_id = batch_id;
+ ep->batch_id = batch_id;
return 1;
tempfail:
@@ -235,35 +236,35 @@ tempfail:
if (fp)
fclose(fp);
- m->batch_id = batch_id;
+ ep->batch_id = batch_id;
return 0;
}
static int
-fsqueue_envelope_delete(enum queue_kind qkind, struct envelope *m)
+fsqueue_envelope_delete(enum queue_kind qkind, struct envelope *ep)
{
char pathname[MAXPATHLEN];
u_int16_t hval;
- hval = fsqueue_hash(evpid_to_msgid(m->evpid));
+ hval = fsqueue_hash(evpid_to_msgid(ep->delivery.id));
if (! bsnprintf(pathname, sizeof(pathname), "%s/%04x/%08x%s/%016llx",
fsqueue_getpath(qkind),
hval,
- evpid_to_msgid(m->evpid),
+ evpid_to_msgid(ep->delivery.id),
PATH_ENVELOPES,
- m->evpid))
+ ep->delivery.id))
fatal("fsqueue_envelope_delete: snprintf");
if (unlink(pathname) == -1)
fatal("fsqueue_envelope_delete: unlink");
if (! bsnprintf(pathname, sizeof(pathname), "%s/%04x/%08x%s", PATH_QUEUE,
- hval, evpid_to_msgid(m->evpid), PATH_ENVELOPES))
+ hval, evpid_to_msgid(ep->delivery.id), PATH_ENVELOPES))
fatal("fsqueue_envelope_delete: snprintf");
if (rmdir(pathname) != -1)
- fsqueue_message_delete(qkind, evpid_to_msgid(m->evpid));
+ fsqueue_message_delete(qkind, evpid_to_msgid(ep->delivery.id));
return 1;
}