From: Pekka Riikonen Date: Tue, 10 Jun 2003 10:21:26 +0000 (+0000) Subject: Moved net connecetion closing to the finalizing callback. X-Git-Tag: silc.toolkit.0.9.10~105 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=0730807f3c4e0c2f64d8e1e0279fbd0129c7a3e8;p=silc.git Moved net connecetion closing to the finalizing callback. --- diff --git a/apps/silcd/server.c b/apps/silcd/server.c index dfed667e..8f9dc999 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -2921,7 +2921,17 @@ void silc_server_create_connection(SilcServer server, SILC_TASK_CALLBACK(silc_server_close_connection_final) { - silc_socket_free(context); + SilcServer server = app_context; + SilcSocketConnection sock = context; + + /* Close the actual connection */ + silc_net_close_connection(sock->sock); + + /* We won't listen for this connection anymore */ + silc_schedule_task_del_by_fd(server->schedule, sock->sock); + silc_schedule_unset_listen_fd(server->schedule, sock->sock); + + silc_socket_free(sock); } /* Closes connection to socket connection */ @@ -2932,9 +2942,6 @@ void silc_server_close_connection(SilcServer server, char tmp[128]; if (!server->sockets[sock->sock] && SILC_IS_DISCONNECTED(sock)) { - silc_schedule_unset_listen_fd(server->schedule, sock->sock); - silc_schedule_task_del_by_fd(server->schedule, sock->sock); - silc_net_close_connection(sock->sock); silc_schedule_task_add(server->schedule, sock->sock, silc_server_close_connection_final, (void *)sock, 0, 1, SILC_TASK_TIMEOUT, @@ -2973,12 +2980,6 @@ void silc_server_close_connection(SilcServer server, } } - /* Close the actual connection */ - silc_net_close_connection(sock->sock); - - /* We won't listen for this connection anymore */ - silc_schedule_unset_listen_fd(server->schedule, sock->sock); - silc_schedule_task_add(server->schedule, sock->sock, silc_server_close_connection_final, (void *)sock, 0, 1, SILC_TASK_TIMEOUT,