Remove possible packet error timeouts in EOS callback
authorPekka Riikonen <priikone@silcnet.org>
Thu, 8 Jan 2009 20:32:47 +0000 (22:32 +0200)
committerPekka Riikonen <priikone@silcnet.org>
Thu, 8 Jan 2009 20:32:47 +0000 (22:32 +0200)
apps/silcd/server.c

index 0b0e24cd40e90a60de5b3d921973088b82c86891..eb8aed23f7f98719e11df33c22a5d93d6ea83a81 100644 (file)
@@ -27,6 +27,7 @@ SILC_TASK_CALLBACK(silc_server_connect_router);
 SILC_TASK_CALLBACK(silc_server_connect_to_router_retry);
 SILC_TASK_CALLBACK(silc_server_do_rekey);
 SILC_TASK_CALLBACK(silc_server_purge_expired_clients);
+SILC_TASK_CALLBACK(silc_server_packet_error_timeout);
 static void silc_server_accept_new_connection(SilcNetStatus status,
                                              SilcStream stream,
                                              void *context);
@@ -199,6 +200,10 @@ static void silc_server_packet_eos(SilcPacketEngine engine,
   if (!idata)
     return;
 
+  /* Remove any possible pending packet error timeout */
+  silc_schedule_task_del_by_all(server->schedule, 0,
+                               silc_server_packet_error_timeout, stream);
+
   if (server->router_conn && server->router_conn->sock == stream &&
       !server->router && server->standalone) {
     if (idata->sconn && idata->sconn->callback)
@@ -3211,8 +3216,11 @@ void silc_server_free_sock_user_data(SilcServer server,
   if (!idata)
     return;
 
+  /* Remove any possible pending timeout */
   silc_schedule_task_del_by_all(server->schedule, 0, silc_server_do_rekey,
                                sock);
+  silc_schedule_task_del_by_all(server->schedule, 0,
+                               silc_server_packet_error_timeout, sock);
 
   /* Cancel active protocols */
   if (idata) {