From 48cfb3c876636d79dace3ebc8e82c946bc0b7ebf Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 30 Jul 2005 01:13:56 +0000 Subject: * add new tool avahi-publish-address * avahi-publish-service: fail after 12 collisions * avahi-daemon: dump record data on SIGUSR1 to syslog * avahi-core: * improve dumping API * shorten response history time to 500ms, infriniging the RFC but fixing ping-pong behaviour on RR registration * remove gcc warning git-svn-id: file:///home/lennart/svn/public/avahi/trunk@195 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-core/cache.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'avahi-core/cache.c') diff --git a/avahi-core/cache.c b/avahi-core/cache.c index 0a39194..7060433 100644 --- a/avahi-core/cache.c +++ b/avahi-core/cache.c @@ -342,26 +342,39 @@ void avahi_cache_update(AvahiCache *c, AvahiRecord *r, gboolean cache_flush, con /* g_free(txt); */ } +struct dump_data { + AvahiDumpCallback callback; + gpointer userdata; +}; + static void dump_callback(gpointer key, gpointer data, gpointer userdata) { AvahiCacheEntry *e = data; AvahiKey *k = key; + struct dump_data *dump_data = userdata; g_assert(k); g_assert(e); + g_assert(data); for (; e; e = e->by_key_next) { gchar *t = avahi_record_to_string(e->record); - fprintf((FILE*) userdata, "%s\n", t); + dump_data->callback(t, dump_data->userdata); g_free(t); } } -void avahi_cache_dump(AvahiCache *c, FILE *f) { +void avahi_cache_dump(AvahiCache *c, AvahiDumpCallback callback, gpointer userdata) { + struct dump_data data; + g_assert(c); - g_assert(f); + g_assert(callback); + + callback(";;; CACHE DUMP FOLLOWS ;;;", userdata); + + data.callback = callback; + data.userdata = userdata; - fprintf(f, ";;; CACHE DUMP FOLLOWS ;;;\n"); - g_hash_table_foreach(c->hash_table, dump_callback, f); + g_hash_table_foreach(c->hash_table, dump_callback, &data); } gboolean avahi_cache_entry_half_ttl(AvahiCache *c, AvahiCacheEntry *e) { -- cgit