View | Details | Raw Unified | Return to bug 136304
Collapse All | Expand All

(-)dma/Makefile (-1 / +1 lines)
Lines 7-13 Link Here
7
7
8
PORTNAME=	dma
8
PORTNAME=	dma
9
PORTVERSION=	20090208
9
PORTVERSION=	20090208
10
PORTREVISION=	1
10
PORTREVISION=	2
11
CATEGORIES=	mail ipv6
11
CATEGORIES=	mail ipv6
12
MASTER_SITES=	http://mirror.roe.ch/dist/dma/
12
MASTER_SITES=	http://mirror.roe.ch/dist/dma/
13
13
(-)dma/files/patch-libexec_dma_dma.c (+38 lines)
Line 0 Link Here
1
--- libexec/dma/dma.c.orig	2009-02-09 01:36:50.000000000 +0100
2
+++ libexec/dma/dma.c	2009-07-04 00:12:53.000000000 +0200
3
@@ -612,6 +612,7 @@
4
 	const char *errmsg = "unknown bounce reason";
5
 	struct timeval now;
6
 	struct stat st;
7
+	struct flock fl;
8
 
9
 	syslog(LOG_INFO, "%s: mail from=<%s> to=<%s>",
10
 	       it->queueid, it->sender, it->addr);
11
@@ -620,11 +621,27 @@
12
 	syslog(LOG_INFO, "%s: trying delivery",
13
 	       it->queueid);
14
 
15
+	bzero(&fl, sizeof(fl));
16
+	fl.l_type = F_WRLCK;
17
+	fl.l_whence = SEEK_SET;
18
+	if (fcntl(fileno(it->queuef), F_SETLKW, &fl) == -1) {
19
+		syslog(LOG_ERR, "%s: failed to lock queue file: %m",
20
+				it->queueid);
21
+	}
22
+
23
 	if (it->remote)
24
 		error = deliver_remote(it, &errmsg);
25
 	else
26
 		error = deliver_local(it, &errmsg);
27
 
28
+	bzero(&fl, sizeof(fl));
29
+	fl.l_type = F_UNLCK;
30
+	fl.l_whence = SEEK_SET;
31
+	if (fcntl(fileno(it->queuef), F_SETLKW, &fl) == -1) {
32
+		syslog(LOG_ERR, "%s: failed to unlock queue file: %m",
33
+				it->queueid);
34
+	}
35
+
36
 	switch (error) {
37
 	case 0:
38
 		unlink(it->queuefn);

Return to bug 136304