From 2098fa97e35cddd1903eac0b22d0efa7fd703adf Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Fri, 25 Jan 2002 18:36:11 +0000 Subject: [PATCH] updates --- CHANGES | 6 ++++++ apps/silcd/server.c | 19 +++++++++++++------ apps/silcd/server.h | 3 ++- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/CHANGES b/CHANGES index f843b00b..57af8b8a 100644 --- a/CHANGES +++ b/CHANGES @@ -11,6 +11,12 @@ Fri Jan 25 19:12:36 EET 2002 Pekka Riikonen * Raised the default connection-retry count from 4 to 7 in server. Affected file silcd/server.h. + * Cancel any possible reconnect timeouts when we start the + key exchange. Affected file silcd/server.c. + + * Do not reconnect on connection failure when SCONNECT was + given. Affected files silcd/server.[ch]. + Tue Jan 22 18:19:36 EET 2002 Pekka Riikonen * Removed assert()'s from the lib/silcclient/client_keyagr.c. diff --git a/apps/silcd/server.c b/apps/silcd/server.c index 50945385..e894d964 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -525,6 +525,10 @@ void silc_server_start_key_exchange(SilcServer server, SilcServerKEInternalContext *proto_ctx; void *context; + /* Cancel any possible retry timeouts */ + silc_schedule_task_del_by_callback(server->schedule, + silc_server_connect_router); + /* Set socket options */ silc_net_set_socket_nonblock(sock); silc_net_set_socket_opt(sock, SOL_SOCKET, SO_REUSEADDR, 1); @@ -638,11 +642,13 @@ SILC_TASK_CALLBACK(silc_server_connect_router) sconn->remote_port, sconn->remote_host); if (sock < 0) { - SILC_LOG_ERROR(("Could not connect to router")); - silc_schedule_task_add(server->schedule, fd, - silc_server_connect_to_router_retry, - context, 0, 1, SILC_TASK_TIMEOUT, - SILC_TASK_PRI_NORMAL); + SILC_LOG_ERROR(("Could not connect to router %s:%d", + sconn->remote_host, sconn->remote_port)); + if (!sconn->no_reconnect) + silc_schedule_task_add(server->schedule, fd, + silc_server_connect_to_router_retry, + context, 0, 1, SILC_TASK_TIMEOUT, + SILC_TASK_PRI_NORMAL); return; } @@ -2209,7 +2215,7 @@ void silc_server_packet_parse_type(SilcServer server, /* Creates connection to a remote router. */ void silc_server_create_connection(SilcServer server, - char *remote_host, uint32 port) + const char *remote_host, uint32 port) { SilcServerConnection sconn; @@ -2218,6 +2224,7 @@ void silc_server_create_connection(SilcServer server, sconn->server = server; sconn->remote_host = strdup(remote_host); sconn->remote_port = port; + sconn->no_reconnect = TRUE; silc_schedule_task_add(server->schedule, 0, silc_server_connect_router, diff --git a/apps/silcd/server.h b/apps/silcd/server.h index 012d1edf..65ab966e 100644 --- a/apps/silcd/server.h +++ b/apps/silcd/server.h @@ -86,6 +86,7 @@ typedef struct { bool backup; char *backup_replace_ip; int backup_replace_port; + bool no_reconnect; /* Current connection retry info */ uint32 retry_count; @@ -133,7 +134,7 @@ void silc_server_packet_parse_type(SilcServer server, SilcSocketConnection sock, SilcPacketContext *packet); void silc_server_create_connection(SilcServer server, - char *remote_host, uint32 port); + const char *remote_host, uint32 port); void silc_server_close_connection(SilcServer server, SilcSocketConnection sock); void silc_server_free_client_data(SilcServer server, -- 2.24.0