Don't crash if the log file can't be opened.

Found in #1269
This commit is contained in:
Arnavion 2015-01-14 16:29:03 -08:00
parent aab243592f
commit 1d316710ed
1 changed files with 14 additions and 1 deletions

View File

@ -707,7 +707,9 @@ log_write (session *sess, char *text, time_t ts)
} }
if (sess->logfd == -1) if (sess->logfd == -1)
{
log_open (sess); log_open (sess);
}
/* change to a different log file? */ /* change to a different log file? */
file = log_create_pathname (sess->server->servername, sess->channel, server_get_network (sess->server, FALSE)); 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) 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)); sess->logfd = log_open_file (sess->server->servername, sess->channel, server_get_network (sess->server, FALSE));
} }
g_free (file); g_free (file);
} }
if (sess->logfd == -1)
{
return;
}
if (prefs.hex_stamp_log) if (prefs.hex_stamp_log)
{ {
if (!ts) ts = time(0); if (!ts) ts = time(0);
@ -731,6 +743,7 @@ log_write (session *sess, char *text, time_t ts)
g_free (stamp); g_free (stamp);
} }
} }
temp = strip_color (text, -1, STRIP_ALL); temp = strip_color (text, -1, STRIP_ALL);
len = strlen (temp); len = strlen (temp);
write (sess->logfd, temp, len); write (sess->logfd, temp, len);