Mercurial > dovecot > original-hg > dovecot-1.2
changeset 4998:f37c7895eb8f HEAD
Delete all auth-worker.* files from Dovecot's base_dir when starting.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 09 Jan 2007 22:30:25 +0200 |
parents | b76f864f0e0b |
children | 53d69594ee04 |
files | src/master/master-settings.c |
diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/master/master-settings.c Tue Jan 09 22:19:32 2007 +0200 +++ b/src/master/master-settings.c Tue Jan 09 22:30:25 2007 +0200 @@ -466,12 +466,13 @@ return FALSE; } -static void unlink_auth_sockets(const char *path) +static void unlink_auth_sockets(const char *path, const char *prefix) { DIR *dirp; struct dirent *dp; struct stat st; string_t *str; + unsigned int prefix_len; dirp = opendir(path); if (dirp == NULL) { @@ -479,11 +480,15 @@ return; } + prefix_len = strlen(prefix); str = t_str_new(256); while ((dp = readdir(dirp)) != NULL) { if (dp->d_name[0] == '.') continue; + if (strncmp(dp->d_name, prefix, prefix_len) != 0) + continue; + str_truncate(str, 0); str_printfa(str, "%s/%s", path, dp->d_name); if (lstat(str_c(str), &st) < 0) { @@ -736,6 +741,9 @@ i_error("chmod(%s) failed: %m", set->base_dir); } + /* remove auth worker sockets left by unclean exits */ + unlink_auth_sockets(set->base_dir, "auth-worker."); + /* Make sure our permanent state directory exists */ if (mkdir_parents(PKG_STATEDIR, 0750) < 0 && errno != EEXIST) { i_error("mkdir(%s) failed: %m", PKG_STATEDIR); @@ -754,7 +762,7 @@ "%s", set->login_dir); } - unlink_auth_sockets(set->login_dir); + unlink_auth_sockets(set->login_dir, ""); } #ifdef HAVE_MODULES