X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-core%2Fcache.c;h=174fceb108c2c9b065302843a5a9589eb5815641;hb=707e763398063186c20d8aba3abdef20e3d39253;hp=0a39194c7ae45e91474af523b7779acb61498dd3;hpb=ac082e8eb624bc5ae0c19e91f412c8c5f12bfddf;p=catta diff --git a/avahi-core/cache.c b/avahi-core/cache.c index 0a39194..174fceb 100644 --- a/avahi-core/cache.c +++ b/avahi-core/cache.c @@ -224,7 +224,7 @@ static void next_expiry(AvahiCache *c, AvahiCacheEntry *e, guint percent) { usec = ((AvahiUsec) e->record->ttl) * 10000; /* 2% jitter */ - usec = (AvahiUsec) g_random_double_range(usec*percent, usec*(percent+2)); + usec = (AvahiUsec) g_random_double_range((gdouble) (usec*percent), (gdouble) (usec*(percent+2))); /* g_message("next expiry: %lli (%s)", usec / 1000000, txt = avahi_record_to_string(e->record)); */ /* g_free(txt); */ @@ -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) {