From: Timo Sirainen Date: Thu, 6 Jul 2017 10:24:31 +0000 (+0300) Subject: lib: file_create_locked() - Treat mkdir() EEXIST error as success X-Git-Tag: 2.2.32.rc2~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6b0afefa3c57d09f6f8ef615873b2c5c366c20bf;p=thirdparty%2Fdovecot%2Fcore.git lib: file_create_locked() - Treat mkdir() EEXIST error as success This can happen in race conditions when multiple processes are mkdir()ing the same directory. It shouldn't result in failure. --- diff --git a/src/lib/file-create-locked.c b/src/lib/file-create-locked.c index 2ac30c1658..39c2c2b2ee 100644 --- a/src/lib/file-create-locked.c +++ b/src/lib/file-create-locked.c @@ -66,7 +66,7 @@ try_mkdir(const char *path, const struct file_create_settings *set, ret = mkdir_parents_chgrp(dir, set->mkdir_mode, gid, set->gid_origin); } - if (ret < 0) { + if (ret < 0 && errno != EEXIST) { *error_r = t_strdup_printf("mkdir_parents(%s) failed: %m", dir); return -1; }