From: Pekka Riikonen Date: Sun, 9 Mar 2003 14:52:04 +0000 (+0000) Subject: Fixed reconnect crashbug, Bugs #116 & #127. X-Git-Tag: silc.client.0.9.12~11 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=f08a1754e72a3578f729521c1b143dfa0d3c538a Fixed reconnect crashbug, Bugs #116 & #127. --- diff --git a/CHANGES b/CHANGES index b70e74b2..28ac4aa3 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,12 @@ Sun Mar 9 16:29:20 EET 2003 Pekka Riikonen purging outgoing queue. Prevents the "Error in select()" floods. Affected file silcd/packet_send.c. + * Fixed incorrect connection deletion from client library + after calling "connect" client operation. Could cause + crashes for example during reconnect timeouts. Affected + files are lib/silcclient/client.c and + irssi/src/silc/core/client_ops.c. + Tue Feb 4 22:53:26 EET 2003 Pekka Riikonen * NULL terminate allocated string in silc_buffer_strformat. diff --git a/apps/irssi/src/silc/core/client_ops.c b/apps/irssi/src/silc/core/client_ops.c index 2f9c7541..d979a640 100644 --- a/apps/irssi/src/silc/core/client_ops.c +++ b/apps/irssi/src/silc/core/client_ops.c @@ -1110,7 +1110,8 @@ void silc_disconnect(SilcClient client, SilcClientConnection conn, silc_get_status_message(status), status, message ? message : ""); - server->conn->context = NULL; + if (server->conn) + server->conn->context = NULL; server->conn = NULL; server->connection_lost = TRUE; server_disconnect(SERVER(server)); diff --git a/lib/silcclient/client.c b/lib/silcclient/client.c index 745cb698..6344e32b 100644 --- a/lib/silcclient/client.c +++ b/lib/silcclient/client.c @@ -437,8 +437,8 @@ silc_client_connect_to_server_internal(SilcClientInternalConnectContext *ctx) done the `connect' client operation is called. */ bool silc_client_connect_to_server(SilcClient client, - SilcClientConnectionParams *params, - int port, char *host, void *context) + SilcClientConnectionParams *params, + int port, char *host, void *context) { SilcClientInternalConnectContext *ctx; SilcClientConnection conn; @@ -636,7 +636,6 @@ SILC_TASK_CALLBACK(silc_client_connect_to_server_start) /* Notify application of failure */ client->internal->ops->connected(client, conn, SILC_CLIENT_CONN_ERROR); - silc_client_del_connection(client, conn); } return; }