if (client && client->connection) {
sock = client->connection;
+ /* Stop rekey for the client. */
+ silc_server_stop_rekey(server, client);
+
/* Close the connection on our side */
client->router = NULL;
client->connection = NULL;
sock, idata->sconn->rekey_timeout, 0);
}
+/* Helper to stop future rekeys on a link. */
+void silc_server_stop_rekey(SilcServer server, SilcClientEntry client)
+{
+ if (!client->connection)
+ return;
+
+ SILC_LOG_DEBUG(("Stopping rekey for client %p", client));
+
+ silc_schedule_task_del_by_all(server->schedule, 0, silc_server_do_rekey,
+ client->connection);
+}
+
/* Rekey callback. Start rekey as initiator */
SILC_TASK_CALLBACK(silc_server_do_rekey)
void silc_server_run(SilcServer server);
void silc_server_stop(SilcServer server);
void silc_server_start_key_exchange(SilcServerConnection sconn);
+void silc_server_stop_rekey(SilcServer server, SilcClientEntry client);
void silc_server_create_connection(SilcServer server,
SilcBool reconnect,
SilcBool dynamic,