From 5e3b1985f298371b070ca6b49fb4e31c4a77ca90 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Tue, 22 Jul 2003 10:47:13 +0000 Subject: [PATCH] Do not crash if net_connect fails immediately. --- lib/silcclient/client.c | 11 +++++++++-- lib/silcclient/client_internal.h | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/silcclient/client.c b/lib/silcclient/client.c index b01f4440..9fc554bf 100644 --- a/lib/silcclient/client.c +++ b/lib/silcclient/client.c @@ -328,7 +328,8 @@ void silc_client_del_connection(SilcClient client, SilcClientConnection conn) silc_free(conn->internal->rekey); if (conn->internal->active_session) { - conn->sock->user_data = NULL; + if (conn->sock) + conn->sock->user_data = NULL; silc_client_ftp_session_free(conn->internal->active_session); conn->internal->active_session = NULL; } @@ -898,7 +899,7 @@ SILC_TASK_CALLBACK(silc_client_connect_to_server_final) is used directly only in special cases. Normal cases should use silc_server_packet_send. Returns < 0 on error. */ -bool silc_client_packet_send_real(SilcClient client, +int silc_client_packet_send_real(SilcClient client, SilcSocketConnection sock, bool force_send) { @@ -1526,6 +1527,12 @@ void silc_client_close_connection_real(SilcClient client, if (!sock) sock = conn->sock; + if (!sock) { + if (del && conn) + silc_client_del_connection(client, conn); + return; + } + /* We won't listen for this connection anymore */ silc_schedule_unset_listen_fd(client->schedule, sock->sock); diff --git a/lib/silcclient/client_internal.h b/lib/silcclient/client_internal.h index 20d05d0a..0f98d333 100644 --- a/lib/silcclient/client_internal.h +++ b/lib/silcclient/client_internal.h @@ -221,7 +221,7 @@ void silc_client_packet_send(SilcClient client, unsigned char *data, SilcUInt32 data_len, bool force_send); -bool silc_client_packet_send_real(SilcClient client, +int silc_client_packet_send_real(SilcClient client, SilcSocketConnection sock, bool force_send); void silc_client_ftp_free_sessions(SilcClient client, -- 2.24.0