summary refs log tree commit diff stats
path: root/src/common/text.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/text.c')
-rw-r--r--src/common/text.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/common/text.c b/src/common/text.c
index 729f18dd..11a4595a 100644
--- a/src/common/text.c
+++ b/src/common/text.c
@@ -707,7 +707,9 @@ log_write (session *sess, char *text, time_t ts)
 	}
 
 	if (sess->logfd == -1)
+	{
 		log_open (sess);
+	}
 
 	/* change to a different log file? */
 	file = log_create_pathname (sess->server->servername, sess->channel, server_get_network (sess->server, FALSE));
@@ -715,12 +717,22 @@ log_write (session *sess, char *text, time_t ts)
 	{
 		if (g_access (file, F_OK) != 0)
 		{
-			close (sess->logfd);
+			if (sess->logfd != -1)
+			{
+				close (sess->logfd);
+			}
+
 			sess->logfd = log_open_file (sess->server->servername, sess->channel, server_get_network (sess->server, FALSE));
 		}
+
 		g_free (file);
 	}
 
+	if (sess->logfd == -1)
+	{
+		return;
+	}
+
 	if (prefs.hex_stamp_log)
 	{
 		if (!ts) ts = time(0);
@@ -731,6 +743,7 @@ log_write (session *sess, char *text, time_t ts)
 			g_free (stamp);
 		}
 	}
+
 	temp = strip_color (text, -1, STRIP_ALL);
 	len = strlen (temp);
 	write (sess->logfd, temp, len);