commit 46063c48ccc0d379e546946563e5047775d62640
parent f933992350613b35e5181fee532f1415e166fefb
Author: Colin Leroy <colin@colino.net>
Date: Mon, 21 Apr 2014 10:00:55 +0200
Fix bug #3148, "Logic error in claws_get_socket_name()"
Diffstat:
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/main.c b/src/main.c
@@ -2137,6 +2137,8 @@ gchar *claws_get_socket_name(void)
if (filename == NULL) {
struct stat st;
+ gint stat_ok;
+
socket_dir = g_strdup_printf("%s%cclaws-mail-%d",
g_get_tmp_dir(), G_DIR_SEPARATOR,
#if HAVE_GETUID
@@ -2144,10 +2146,11 @@ gchar *claws_get_socket_name(void)
#else
0);
#endif
- if (stat(socket_dir, &st) < 0 && errno != ENOENT) {
+ stat_ok = stat(socket_dir, &st);
+ if (stat_ok < 0 && errno != ENOENT) {
g_print("Error stat'ing socket_dir %s: %s\n",
socket_dir, strerror(errno));
- } else if (S_ISSOCK(st.st_mode)) {
+ } else if (stat_ok == 0 && S_ISSOCK(st.st_mode)) {
/* old versions used a sock in $TMPDIR/claws-mail-$UID */
debug_print("Using legacy socket %s\n", socket_dir);
filename = g_strdup(socket_dir);