mirror of
https://github.com/irssi/irssi.git
synced 2026-08-11 12:53:42 +02:00
Added reference counting to server record. At least now we don't accidentally
use a destroyed server record when some /command disconnects the server (shouldn't happen really) or when irc_send_cmd() fails sending data to server and disconnects the server (I don't know if this ever happens, but if it does, it very well could have caused crashes) git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2243 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
ebd09ede51
commit
6774b4b30f
7 changed files with 64 additions and 17 deletions
|
|
@ -375,14 +375,15 @@ static void irc_parse_incoming(SERVER_REC *server)
|
|||
too slowly, so read only a few times from the socket before
|
||||
letting other tasks to run. */
|
||||
count = 0;
|
||||
while (irc_receive_line(server, &str, count < MAX_SOCKET_READS) > 0) {
|
||||
server_ref(server);
|
||||
while (!server->disconnected &&
|
||||
irc_receive_line(server, &str, count < MAX_SOCKET_READS) > 0) {
|
||||
rawlog_input(server->rawlog, str);
|
||||
signal_emit_id(signal_server_incoming, 2, server, str);
|
||||
|
||||
count++;
|
||||
if (g_slist_find(servers, server) == NULL)
|
||||
break; /* disconnected */
|
||||
}
|
||||
server_unref(server);
|
||||
}
|
||||
|
||||
static void irc_init_server(IRC_SERVER_REC *server)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue