]> git.meshlink.io Git - catta/blobdiff - avahi-core/server.c
* Show some messages when pygtk or twisted is missing for the execution of the python...
[catta] / avahi-core / server.c
index 087eafcb8d84006ddcf91dc48b2b3e5c2f9a9b7d..3c385070b20e23bd8b95213eee4992eef3750d97 100644 (file)
@@ -221,7 +221,8 @@ static void withdraw_rrset(AvahiServer *s, AvahiKey *key) {
     g_assert(key);
 
    for (e = g_hash_table_lookup(s->entries_by_key, key); e; e = e->by_key_next)
-        withdraw_entry(s, e);
+       if (!e->dead)
+           withdraw_entry(s, e);
 }
 
 static void incoming_probe(AvahiServer *s, AvahiRecord *record, AvahiInterface *i) {
@@ -1947,10 +1948,8 @@ void avahi_entry_group_change_state(AvahiEntryGroup *g, AvahiEntryGroupState sta
 
     g->state = state;
     
-    if (g->callback) {
+    if (g->callback)
         g->callback(g->server, g, state, g->userdata);
-        return;
-    }
 }
 
 AvahiEntryGroup *avahi_entry_group_new(AvahiServer *s, AvahiEntryGroupCallback callback, gpointer userdata) {
@@ -2002,11 +2001,14 @@ void avahi_entry_group_free(AvahiEntryGroup *g) {
 static void entry_group_commit_real(AvahiEntryGroup *g) {
     g_assert(g);
 
-    avahi_announce_group(g->server, g);
-    avahi_entry_group_check_probed(g, FALSE);
-
     g_get_current_time(&g->register_time);
+
     avahi_entry_group_change_state(g, AVAHI_ENTRY_GROUP_REGISTERING);
+
+    if (!g->dead) {
+        avahi_announce_group(g->server, g);
+        avahi_entry_group_check_probed(g, FALSE);
+    }
 }
 
 static void entry_group_register_time_event_callback(AvahiTimeEvent *e, gpointer userdata) {
@@ -2042,13 +2044,13 @@ gint avahi_entry_group_commit(AvahiEntryGroup *g) {
 
     if (avahi_timeval_compare(&g->register_time, &now) <= 0) {
         /* Holdoff time passed, so let's start probing */
-/*         avahi_log_debug("Holdoff passed, directly going on."); */
+/*         avahi_log_debug("Holdoff passed, directly going on.");  */
 
         entry_group_commit_real(g);
     } else {
-/*         avahi_log_debug("Holdoff not passed, sleeping."); */
+/*          avahi_log_debug("Holdoff not passed, sleeping.");  */
 
-        /* Holdoff time has not yet passed, so let's wait */
+         /* Holdoff time has not yet passed, so let's wait */
         g_assert(!g->register_time_event);
         g->register_time_event = avahi_time_event_queue_add(g->server->time_event_queue, &g->register_time, entry_group_register_time_event_callback, g);