Merge branch 'topic/detach-fixes' of git://valera-ext.nynaeve.net/silc into silc...
authorPekka Riikonen <priikone@silcnet.org>
Thu, 8 Jan 2009 09:20:01 +0000 (11:20 +0200)
committerPekka Riikonen <priikone@silcnet.org>
Thu, 8 Jan 2009 09:20:01 +0000 (11:20 +0200)
1  2 
apps/silcd/server.c

diff --combined apps/silcd/server.c
index 2ed570783b6030c8a28b4299859d0398a4c70555,ab1d737457b504aa9628839b6574a043c9a1ad3c..5120382aa64e5b9b43138eeee0d7c5eefcfe1ed6
@@@ -233,10 -233,7 +233,10 @@@ SILC_TASK_CALLBACK(silc_server_packet_e
  
    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 &&
@@@ -283,14 -280,9 +283,14 @@@ static void silc_server_packet_error(Si
    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 */
@@@ -3150,7 -3142,10 +3150,10 @@@ void silc_server_free_client_data(SilcS
    }
  
    /* Update statistics */
-   server->stat.my_clients--;
+   /* Local detached clients aren't counted. */
+   if (!client->local_detached)
+     server->stat.my_clients--;
    SILC_VERIFY(server->stat.clients > 0);
    server->stat.clients--;
    if (server->stat.cell_clients)
@@@ -5030,7 -5025,7 +5033,7 @@@ void silc_server_save_users_on_channel(
      }
  
      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;
      }