From: Pekka Riikonen Date: Mon, 19 Feb 2007 14:45:38 +0000 (+0000) Subject: Fixed TCP stream creation aborting. X-Git-Tag: silc.client.1.1.beta2~4 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=0fe36aefe123f64c81e3982153fa49094132c1be Fixed TCP stream creation aborting. Fixed JOIN notify to put all messages to channel window. --- diff --git a/apps/irssi/src/silc/core/client_ops.c b/apps/irssi/src/silc/core/client_ops.c index ed49b533..7ecbdf07 100644 --- a/apps/irssi/src/silc/core/client_ops.c +++ b/apps/irssi/src/silc/core/client_ops.c @@ -779,10 +779,10 @@ void silc_notify(SilcClient client, SilcClientConnection conn, break; } silc_snprintf(tmp, sizeof(tmp), "%d", silc_dlist_count(clients)); - printformat_module("fe-common/silc", server, NULL, + printformat_module("fe-common/silc", server, channel->channel_name, MSGLEVEL_CRAP, SILCTXT_CHANNEL_MANY_NICKS, tmp, nick); - printformat_module("fe-common/silc", server, NULL, + printformat_module("fe-common/silc", server, channel->channel_name, MSGLEVEL_CRAP, SILCTXT_CHANNEL_USER_APPEARS, buf, client_entry->nickname); silc_client_list_free(client, conn, clients); diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index eb70efd5..748c2649 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -396,6 +396,7 @@ static void sig_connected_stream_created(SilcSocketStreamStatus status, SilcClientConnectionParams params; char *file; + server->tcp_op = NULL; if (!stream) { server->connection_lost = TRUE; server_disconnect(SERVER(server)); @@ -454,8 +455,10 @@ static void sig_connected(SILC_SERVER_REC *server) /* Wrap the socket to TCP stream */ fd = g_io_channel_unix_get_fd(net_sendbuffer_handle(server->handle)); - silc_socket_tcp_stream_create(fd, TRUE, FALSE, silc_client->schedule, - sig_connected_stream_created, server); + server->tcp_op = + silc_socket_tcp_stream_create(fd, TRUE, FALSE, + silc_client->schedule, + sig_connected_stream_created, server); } static void sig_disconnected(SILC_SERVER_REC *server) @@ -472,6 +475,10 @@ static void sig_disconnected(SILC_SERVER_REC *server) /* Abort on going connecting (key exchange) */ silc_async_abort(server->op, NULL, NULL); server->op = NULL; + } else if (server->tcp_op) { + /* Abort on going TCP stream creation */ + silc_async_abort(server->tcp_op, NULL, NULL); + server->tcp_op = NULL; } /* SILC closes the handle */ diff --git a/apps/irssi/src/silc/core/silc-servers.h b/apps/irssi/src/silc/core/silc-servers.h index ff8ad603..efde07e6 100644 --- a/apps/irssi/src/silc/core/silc-servers.h +++ b/apps/irssi/src/silc/core/silc-servers.h @@ -44,7 +44,8 @@ typedef struct { gpointer chanqueries; SilcClientConnection conn; - SilcAsyncOperation op; + SilcAsyncOperation op; /* Key exchange operation handle */ + SilcAsyncOperation tcp_op; /* TCP stream creation operation handle */ SilcUInt32 umode; } SILC_SERVER_REC;