summaryrefslogtreecommitdiffstats
path: root/avahi-core/cache.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-07-30 01:13:56 +0000
committerLennart Poettering <lennart@poettering.net>2005-07-30 01:13:56 +0000
commit48cfb3c876636d79dace3ebc8e82c946bc0b7ebf (patch)
tree484d9e332faa80fc75cb8364a20de231d0d0fd8a /avahi-core/cache.c
parent38b45921cd1d33119f1c06979a57bcfe982e22da (diff)
* 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
Diffstat (limited to 'avahi-core/cache.c')
-rw-r--r--avahi-core/cache.c23
1 files changed, 18 insertions, 5 deletions
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) {