]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: file_create_locked() - Treat mkdir() EEXIST error as success
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 6 Jul 2017 10:24:31 +0000 (13:24 +0300)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Wed, 16 Aug 2017 07:57:50 +0000 (10:57 +0300)
This can happen in race conditions when multiple processes are mkdir()ing
the same directory. It shouldn't result in failure.

src/lib/file-create-locked.c

index 2ac30c1658f2fd17b9b61dc54012238e42fb3d08..39c2c2b2ee3f9cc228b89775e629d20f63b7a160 100644 (file)
@@ -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;
        }