Merge branch 'topic/format-cleanup' of git://valera-ext.nynaeve.net/silc into silc...
authorPekka Riikonen <priikone@silcnet.org>
Sat, 13 Dec 2008 20:30:25 +0000 (22:30 +0200)
committerPekka Riikonen <priikone@silcnet.org>
Sat, 13 Dec 2008 20:30:25 +0000 (22:30 +0200)
apps/silcd/command.c
apps/silcd/server.c
apps/silcd/server.h

index 698b22657ac1c719dbfc455c7ae8e6a45ffb6a7f..f68edccdc589984e4c364c4e4220df0ad1636201 100644 (file)
@@ -4074,6 +4074,9 @@ SILC_TASK_CALLBACK(silc_server_command_detach_cb)
   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;
index 501fc671ac228d0ef2d980b85705f6d884799e98..2ed570783b6030c8a28b4299859d0398a4c70555 100644 (file)
@@ -2911,6 +2911,18 @@ static void silc_server_rekey_completion(SilcSKE ske,
                                 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)
index 84ed585b79565f047e7d440c369cb709361d071e..81a6f3d9b43383688fa5a39b0ea975e2db095001 100644 (file)
@@ -139,6 +139,7 @@ SilcBool silc_server_rehash(SilcServer server);
 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,