diff options
author | Matthias Andree <matthias.andree@gmx.de> | 2006-07-04 10:01:51 +0000 |
---|---|---|
committer | Matthias Andree <matthias.andree@gmx.de> | 2006-07-04 10:01:51 +0000 |
commit | 274eec54e80cb90b8a09f524c8495efbaa46b45d (patch) | |
tree | 75db80dfc5c3234e8be9f0bac0ed6f120c55728e | |
parent | 35a58f784af38c9390158f1285d40c1e53baa884 (diff) | |
download | fetchmail-274eec54e80cb90b8a09f524c8495efbaa46b45d.tar.gz fetchmail-274eec54e80cb90b8a09f524c8495efbaa46b45d.tar.bz2 fetchmail-274eec54e80cb90b8a09f524c8495efbaa46b45d.zip |
If the lockfile ends before the process ID, treat it as stale and unlink it.
Reported by Justin Pryzby, Debian Bug #376603.
svn path=/branches/BRANCH_6-3/; revision=4862
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | lock.c | 9 |
2 files changed, 7 insertions, 4 deletions
@@ -87,6 +87,8 @@ fetchmail 6.3.5 (not yet released): service lookup. Found by Uli Zappe. * When looking up ports for a service, only look up TCP ports. * Avoid compiling empty files, to avoid diagnostics from strict compilers. +* If the lockfile ends before the process ID, treat it as stale and unlink it. + Reported by Justin Pryzby, Debian Bug #376603. # CHANGES: * Rename all fetchmail-internal lock_* functions to fm_lock_*. Obsoletes @@ -85,20 +85,21 @@ int fm_lock_state(void) if (ferror(lockfp)) { fprintf(stderr, GT_("fetchmail: error reading lockfile \"%s\": %s\n"), lockfile, strerror(errno)); + fclose(lockfp); /* not checking should be safe, file mode was "r" */ exit(PS_EXCLUDE); } + fclose(lockfp); /* not checking should be safe, file mode was "r" */ - if (args == 0 || kill(pid, 0) == -1) { + if (args == EOF || args == 0 || kill(pid, 0) == -1) { pid = 0; + + fprintf(stderr,GT_("fetchmail: removing stale lockfile\n")); if (unlink(lockfile)) { if (errno != ENOENT) { perror(lockfile); } - } else { - fprintf(stderr,GT_("fetchmail: removing stale lockfile\n")); } } - fclose(lockfp); /* not checking should be safe, file mode was "r" */ } else { pid = 0; if (errno != ENOENT) { |