git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Deal with maildir quota file races.
[exim.git]
/
src
/
src
/
transports
/
tf_maildir.c
diff --git
a/src/src/transports/tf_maildir.c
b/src/src/transports/tf_maildir.c
index 2eaea4be01489a6ff5b1f020a9f3372224ceece7..472b0764dd41c90c750fad3e8e36a9177c0560bd 100644
(file)
--- a/
src/src/transports/tf_maildir.c
+++ b/
src/src/transports/tf_maildir.c
@@
-1,10
+1,10
@@
-/* $Cambridge: exim/src/src/transports/tf_maildir.c,v 1.
9 2006/04/27 08:53:24 ph10
Exp $ */
+/* $Cambridge: exim/src/src/transports/tf_maildir.c,v 1.
14 2009/11/16 19:56:54 nm4
Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 200
6
*/
+/* Copyright (c) University of Cambridge 1995 - 200
9
*/
/* See the file NOTICE for conditions of use and distribution. */
/* Functions in support of the use of maildirsize files for handling quotas in
/* See the file NOTICE for conditions of use and distribution. */
/* Functions in support of the use of maildirsize files for handling quotas in
@@
-169,7
+169,7
@@
if (maildirfolder_create_regex != NULL)
}
else
{
}
else
{
- int fd = Uopen(fname, O_WRONLY|O_APPEND|O_CREAT, 0);
+ int fd = Uopen(fname, O_WRONLY|O_APPEND|O_CREAT, 0
600
);
if (fd < 0)
{
addr->message = string_sprintf("appendfile: failed to create "
if (fd < 0)
{
addr->message = string_sprintf("appendfile: failed to create "
@@
-392,7
+392,7
@@
the same thing. */
filename = string_sprintf("%s/maildirsize", path);
DEBUG(D_transport) debug_printf("looking for maildirsize in %s\n", path);
filename = string_sprintf("%s/maildirsize", path);
DEBUG(D_transport) debug_printf("looking for maildirsize in %s\n", path);
-fd = Uopen(filename, O_RDWR|O_APPEND, 0);
+fd = Uopen(filename, O_RDWR|O_APPEND,
ob->mode ? ob->mode : 060
0);
if (fd < 0)
{
if (errno != ENOENT) return -1;
if (fd < 0)
{
if (errno != ENOENT) return -1;
@@
-559,7
+559,7
@@
else
tempname = string_sprintf("%s/tmp/%lu.H%luP%lu.%s", path, tv.tv_sec,
tv.tv_usec, getpid(), primary_hostname);
tempname = string_sprintf("%s/tmp/%lu.H%luP%lu.%s", path, tv.tv_sec,
tv.tv_usec, getpid(), primary_hostname);
- fd = Uopen(tempname, O_RDWR|O_CREAT|O_EXCL, 0600);
+ fd = Uopen(tempname, O_RDWR|O_CREAT|O_EXCL,
ob->mode ? ob->mode :
0600);
if (fd >= 0)
{
(void)sprintf(CS buffer, OFF_T_FMT "S,%dC\n" OFF_T_FMT " %d\n",
if (fd >= 0)
{
(void)sprintf(CS buffer, OFF_T_FMT "S,%dC\n" OFF_T_FMT " %d\n",
@@
-584,7
+584,7
@@
else
"a later subdirectory modification\n");
(void)Uunlink(filename);
(void)close(fd);
"a later subdirectory modification\n");
(void)Uunlink(filename);
(void)close(fd);
- fd = -
1
;
+ fd = -
2
;
}
}
}
}