X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilcd%2Fsilcd.c;h=33a5043cc7ca12475dc117c538a5930024e62773;hp=b0155df1edd9990043a43a63324a18cb3297812b;hb=382d15d447b7a95390decfa783836ae4fe255b3d;hpb=3cf38201f9ffaad2da53757ed48a5546e1d03636 diff --git a/apps/silcd/silcd.c b/apps/silcd/silcd.c index b0155df1..33a5043c 100644 --- a/apps/silcd/silcd.c +++ b/apps/silcd/silcd.c @@ -305,6 +305,127 @@ SILC_TASK_CALLBACK(dump_stats) #undef STAT_OUTPUT +#ifdef SILC_DEBUG + /* Dump lists */ + { + SilcIDCacheList list = NULL; + SilcIDCacheEntry id_cache = NULL; + SilcServerEntry server_entry; + SilcClientEntry client_entry; + SilcChannelEntry channel_entry; + int c; + + fprintf(fdd, "\nDumping databases\n"); + + if (silc_idcache_get_all(silcd->local_list->servers, &list)) { + if (silc_idcache_list_first(list, &id_cache)) { + fprintf(fdd, "\nServers in local-list:\n"); + c = 1; + while (id_cache) { + server_entry = (SilcServerEntry)id_cache->context; + fprintf(fdd, " %d: name %s id %s status 0x%x\n", c, + server_entry->server_name ? server_entry->server_name : + "N/A", server_entry->id ? + silc_id_render(server_entry->id, SILC_ID_SERVER) : "N/A", + server_entry->data.status); + if (!silc_idcache_list_next(list, &id_cache)) + break; + c++; + } + } + silc_idcache_list_free(list); + } + if (silc_idcache_get_all(silcd->global_list->servers, &list)) { + if (silc_idcache_list_first(list, &id_cache)) { + fprintf(fdd, "\nServers in global-list:\n"); + c = 1; + while (id_cache) { + server_entry = (SilcServerEntry)id_cache->context; + fprintf(fdd, " %d: name %s id %s status 0x%x\n", c, + server_entry->server_name ? server_entry->server_name : + "N/A", server_entry->id ? + silc_id_render(server_entry->id, SILC_ID_SERVER) : "N/A", + server_entry->data.status); + if (!silc_idcache_list_next(list, &id_cache)) + break; + c++; + } + } + silc_idcache_list_free(list); + } + if (silc_idcache_get_all(silcd->local_list->clients, &list)) { + if (silc_idcache_list_first(list, &id_cache)) { + fprintf(fdd, "\nClients in local-list:\n"); + c = 1; + while (id_cache) { + client_entry = (SilcClientEntry)id_cache->context; + fprintf(fdd, " %d: name %s id %s status 0x%x\n", c, + client_entry->nickname ? client_entry->nickname : + (unsigned char *)"N/A", client_entry->id ? + silc_id_render(client_entry->id, SILC_ID_CLIENT) : "N/A", + client_entry->data.status); + if (!silc_idcache_list_next(list, &id_cache)) + break; + c++; + } + } + silc_idcache_list_free(list); + } + if (silc_idcache_get_all(silcd->global_list->clients, &list)) { + if (silc_idcache_list_first(list, &id_cache)) { + fprintf(fdd, "\nClients in global-list:\n"); + c = 1; + while (id_cache) { + client_entry = (SilcClientEntry)id_cache->context; + fprintf(fdd, " %d: name %s id %s status 0x%x\n", c, + client_entry->nickname ? client_entry->nickname : + (unsigned char *)"N/A", client_entry->id ? + silc_id_render(client_entry->id, SILC_ID_CLIENT) : "N/A", + client_entry->data.status); + if (!silc_idcache_list_next(list, &id_cache)) + break; + c++; + } + } + silc_idcache_list_free(list); + } + if (silc_idcache_get_all(silcd->local_list->channels, &list)) { + if (silc_idcache_list_first(list, &id_cache)) { + fprintf(fdd, "\nChannels in local-list:\n"); + c = 1; + while (id_cache) { + channel_entry = (SilcChannelEntry)id_cache->context; + fprintf(fdd, " %d: name %s id %s\n", c, + channel_entry->channel_name ? channel_entry->channel_name : + "N/A", channel_entry->id ? + silc_id_render(channel_entry->id, SILC_ID_CHANNEL) : "N/A"); + if (!silc_idcache_list_next(list, &id_cache)) + break; + c++; + } + } + silc_idcache_list_free(list); + } + if (silc_idcache_get_all(silcd->global_list->channels, &list)) { + if (silc_idcache_list_first(list, &id_cache)) { + fprintf(fdd, "\nChannels in global-list:\n"); + c = 1; + while (id_cache) { + channel_entry = (SilcChannelEntry)id_cache->context; + fprintf(fdd, " %d: name %s id %s\n", c, + channel_entry->channel_name ? channel_entry->channel_name : + "N/A", channel_entry->id ? + silc_id_render(channel_entry->id, SILC_ID_CHANNEL) : "N/A"); + if (!silc_idcache_list_next(list, &id_cache)) + break; + c++; + } + } + silc_idcache_list_free(list); + } + } +#endif + fflush(fdd); fclose(fdd); } @@ -389,10 +510,10 @@ static void silc_get_debug_level(int level) } } -/* This function should not be called directly but thru the wrapper - macro SILC_SERVER_LOG_STDERR() */ +/* This function should not be called directly but through the appropriate + wrapper macro defined in server.h */ -void silc_server_stderr(char *message) +void silc_server_stderr(SilcLogType type, char *message) { if (silcd->background) { char *p, *n = message; @@ -407,7 +528,8 @@ void silc_server_stderr(char *message) } *n = 0; - silc_log_output(SILC_LOG_ERROR, message); + /* the message is freed inside the logging function */ + silc_log_output(type, message); } else { fprintf(stderr, "%s\n", message);