X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fserver.c;h=5120382aa64e5b9b43138eeee0d7c5eefcfe1ed6;hb=e88214b3fedc6e80fa8d1833df3ac40af31a75eb;hp=ab1d737457b504aa9628839b6574a043c9a1ad3c;hpb=6e596af78adee828595e00a0988625453f9ecbc9;p=silc.git diff --git a/apps/silcd/server.c b/apps/silcd/server.c index ab1d7374..5120382a 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -233,7 +233,10 @@ SILC_TASK_CALLBACK(silc_server_packet_error_timeout) if (server->router_conn && server->router_conn->sock == stream && !server->router && server->standalone) { + if (idata->sconn && idata->sconn->callback) + (*idata->sconn->callback)(server, NULL, idata->sconn->callback_context); silc_server_create_connections(server); + silc_server_free_sock_user_data(server, stream, NULL); } else { /* If backup disconnected then mark that resuming will not be allowed */ if (server->server_type == SILC_ROUTER && !server->backup_router && @@ -280,9 +283,14 @@ static void silc_server_packet_error(SilcPacketEngine engine, if (!silc_packet_stream_is_valid(stream)) return; + /* In case we get here many times, register only one timeout */ + silc_schedule_task_del_by_all(server->schedule, 0, + silc_server_packet_error_timeout, stream); + + /* Close connection with random timeout */ silc_schedule_task_add_timeout(server->schedule, silc_server_packet_error_timeout, stream, - silc_rng_get_byte(server->rng) % 5, 0); + silc_rng_get_byte(server->rng) % 10, 0); } /* Packet stream callbacks */ @@ -5025,7 +5033,7 @@ void silc_server_save_users_on_channel(SilcServer server, } if (!(client->data.status & SILC_IDLIST_STATUS_REGISTERED)) { - SILC_LOG_ERROR(("Attempting to add unregistered client to channel ", + SILC_LOG_ERROR(("Attempting to add unregistered client to channel " "%s", channel->channel_name)); continue; }