+Sat Sep 7 16:02:09 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
+
+ * In JOIN notify handling, mark that the cache entry of the
+ client cannot be expired. Can cause crashes on normal
+ server (asserts client->channels). Affected file is
+ silcd/packet_receive.c.
+
Sat Sep 7 14:22:43 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
* Rewritten check for POSIX threads. Use --with-pthreads[=DIR]
SilcClientEntry client = NULL, client2 = NULL;
SilcServerEntry server_entry = NULL;
SilcChannelClientEntry chl;
- SilcIDCacheEntry cache;
+ SilcIDCacheEntry cache = NULL;
SilcHashTableList htl;
SilcUInt32 mode;
unsigned char *tmp;
entry for the client. */
client = silc_idlist_find_client_by_id(server->global_list,
client_id, server->server_type,
- NULL);
+ &cache);
if (!client) {
client = silc_idlist_find_client_by_id(server->local_list,
client_id, server->server_type,
- NULL);
+ &cache);
if (!client) {
/* If router did not find the client the it is bogus */
if (server->server_type != SILC_SERVER) {
channel->user_count++;
channel->disabled = FALSE;
+ /* Make sure we don't expire clients that are on channel */
+ if (cache)
+ cache->expire = 0;
+
/* Update statistics */
if (server->server_type == SILC_ROUTER) {
if (sock->type != SILC_SOCKET_TYPE_ROUTER)