]> git.meshlink.io Git - catta/blobdiff - avahi-core/browse.c
* Rename various data structures to prevent a namespace conflict with avahi-core
[catta] / avahi-core / browse.c
index d9da80cf2fa0d156635f339f996d792769096be7..e2d996e2372d366103efa3391a45133d2bd1d1e7 100644 (file)
 #endif
 
 #include "browse.h"
-#include "util.h"
+#include "timeval.h"
+#include "log.h"
 
 struct AvahiRecordBrowser {
     gboolean dead;
     
     AvahiServer *server;
     AvahiKey *key;
-    gint interface;
-    guchar protocol;
+    AvahiIfIndex interface;
+    AvahiProtocol protocol;
     guint sec_delay;
 
     AvahiTimeEvent *time_event;
@@ -47,8 +48,8 @@ struct AvahiRecordBrowser {
 
 static void elapse(AvahiTimeEvent *e, void *userdata) {
     AvahiRecordBrowser *s = userdata;
-    GTimeVal tv;
-/*     gchar *t; */
+    struct timeval tv;
+/*     gchar *t;  */
     
     g_assert(s);
 
@@ -58,9 +59,9 @@ static void elapse(AvahiTimeEvent *e, void *userdata) {
     
     if (s->sec_delay >= 60*60)  /* 1h */
         s->sec_delay = 60*60;
-
-/*     avahi_log_debug("%i. Continuous querying for %s", s->n_query, t = avahi_key_to_string(s->key)); */
-/*     g_free(t); */
+    
+/*     avahi_log_debug("Continuous querying for %s (%i)", t = avahi_key_to_string(s->key), s->sec_delay);  */
+/*     g_free(t);  */
     
     avahi_elapse_time(&tv, s->sec_delay*1000, 0);
     avahi_time_event_queue_update(s->server->time_event_queue, s->time_event, &tv);
@@ -104,7 +105,7 @@ static void scan_interface_callback(AvahiInterfaceMonitor *m, AvahiInterface *i,
     avahi_cache_walk(i->cache, s->key, scan_cache_callback, &cbdata);
 }
 
-gboolean scan_idle_callback(gpointer data) {
+static gboolean scan_idle_callback(gpointer data) {
     AvahiRecordBrowser *b = data;
     g_assert(b);
 
@@ -115,15 +116,23 @@ gboolean scan_idle_callback(gpointer data) {
     return FALSE;
 }
 
-AvahiRecordBrowser *avahi_record_browser_new(AvahiServer *server, gint interface, guchar protocol, AvahiKey *key, AvahiRecordBrowserCallback callback, gpointer userdata) {
+AvahiRecordBrowser *avahi_record_browser_new(AvahiServer *server, AvahiIfIndex interface, AvahiProtocol protocol, AvahiKey *key, AvahiRecordBrowserCallback callback, gpointer userdata) {
     AvahiRecordBrowser *b, *t;
-    GTimeVal tv;
+    struct timeval tv;
 
     g_assert(server);
     g_assert(key);
     g_assert(callback);
 
-    g_assert(!avahi_key_is_pattern(key));
+    if (avahi_key_is_pattern(key)) {
+        avahi_server_set_errno(server, AVAHI_ERR_IS_PATTERN);
+        return NULL;
+    }
+
+    if (!avahi_key_valid(key)) {
+        avahi_server_set_errno(server, AVAHI_ERR_INVALID_KEY);
+        return NULL;
+    }
     
     b = g_new(AvahiRecordBrowser, 1);
     b->dead = FALSE;