silcd: disconnect packet errors with random timeout
[silc.git] / apps / silcd / server.c
index 0e1cffb084ddac0918c65e38d35bcd17a0e4c0ef..dad1a44e268343eb98652e9c6366d526a42bb8a6 100644 (file)
@@ -281,8 +281,8 @@ static void silc_server_packet_error(SilcPacketEngine engine,
     return;
 
   silc_schedule_task_add_timeout(server->schedule,
-                                silc_server_packet_error_timeout,
-                                stream, 0, 0);
+                                silc_server_packet_error_timeout, stream,
+                                silc_rng_get_byte(server->rng) % 5, 0);
 }
 
 /* Packet stream callbacks */
@@ -1798,6 +1798,8 @@ void silc_server_start_key_exchange(SilcServerConnection sconn)
   }
   entry->server = server;
   entry->data.sconn = sconn;
+  entry->data.conn_type = SILC_CONN_UNKNOWN;
+  entry->data.status |= SILC_IDLIST_STATUS_LOCAL;
   silc_packet_set_context(sconn->sock, entry);
 
   SILC_LOG_DEBUG(("Created unknown connection %p", entry));
@@ -3129,6 +3131,7 @@ void silc_server_free_client_data(SilcServer server,
 
   /* Update statistics */
   server->stat.my_clients--;
+  SILC_VERIFY(server->stat.clients > 0);
   server->stat.clients--;
   if (server->stat.cell_clients)
     server->stat.cell_clients--;