X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilcd%2Fserver.c;h=45231d05708ba94b80d3a4cdf0ba614e047d846b;hp=73f363613f1a24ae59237900b29a411248142b12;hb=e9dff3f0119c0f38cb2504037e6e7ce2665a5eee;hpb=80d86bcecbd9cc7a1b70423db4879acb4da134b9 diff --git a/apps/silcd/server.c b/apps/silcd/server.c index 73f36361..45231d05 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -1263,13 +1263,10 @@ SILC_TASK_CALLBACK(silc_server_purge_expired_clients) silc_dlist_start(server->expired_clients); while ((client = silc_dlist_get(server->expired_clients))) { - if (client->data.status & SILC_IDLIST_STATUS_REGISTERED) - continue; - /* For unregistered clients the created timestamp is actually unregistered timestamp. Make sure client remains in history at least 500 seconds. */ - if (curtime - client->data.created < 500) + if (client->data.created && curtime - client->data.created < 500) continue; id_list = (client->data.status & SILC_IDLIST_STATUS_LOCAL ? @@ -1509,8 +1506,9 @@ silc_server_ke_auth_compl(SilcConnAuth connauth, SilcBool success, silc_server_backup_add(server, server->id_entry, ip, sconn->remote_port, TRUE); } + } #if 0 - } else { + else { /* We already have primary router. Disconnect this connection */ SILC_LOG_DEBUG(("We already have primary router, disconnect")); silc_idlist_del_server(server->global_list, id_entry); @@ -1520,8 +1518,8 @@ silc_server_ke_auth_compl(SilcConnAuth connauth, SilcBool success, silc_server_disconnect_remote(server, sconn->sock, SILC_STATUS_ERR_RESOURCE_LIMIT, NULL); return; -#endif /* 0 */ } +#endif /* 0 */ } else { /* Add this server to be our backup router */ id_entry->server_type = SILC_BACKUP_ROUTER; @@ -3036,6 +3034,7 @@ void silc_server_free_client_data(SilcServer server, client->router = NULL; client->connection = NULL; client->data.created = silc_time(); + silc_dlist_del(server->expired_clients, client); silc_dlist_add(server->expired_clients, client); } else { /* Delete directly since we're shutting down server */