]> git.meshlink.io Git - catta/blobdiff - avahi-core/entry.c
merge ia64 fixes from Jason Vas Dias
[catta] / avahi-core / entry.c
index 5baaf4096db1b69a17f547d374e1516ef4a09f15..d953f7b33000844fe4bb61948f71153bf2520877 100644 (file)
@@ -216,7 +216,10 @@ static AvahiEntry * server_add_internal(
     transport_flags_from_domain(s, &flags, r->key->name);
     AVAHI_CHECK_VALIDITY_RETURN_NULL(s, flags & AVAHI_PUBLISH_USE_MULTICAST, AVAHI_ERR_NOT_SUPPORTED);
     AVAHI_CHECK_VALIDITY_RETURN_NULL(s, !s->config.disable_publishing, AVAHI_ERR_NOT_PERMITTED);
-    AVAHI_CHECK_VALIDITY_RETURN_NULL(s, !g || (g->state != AVAHI_ENTRY_GROUP_ESTABLISHED && g->state != AVAHI_ENTRY_GROUP_REGISTERING), AVAHI_ERR_BAD_STATE);
+    AVAHI_CHECK_VALIDITY_RETURN_NULL(s,
+                                     !g ||
+                                     (g->state != AVAHI_ENTRY_GROUP_ESTABLISHED && g->state != AVAHI_ENTRY_GROUP_REGISTERING) ||
+                                     (flags & AVAHI_PUBLISH_UPDATE), AVAHI_ERR_BAD_STATE);
     
     if (flags & AVAHI_PUBLISH_UPDATE) {
         AvahiRecord *old_record;
@@ -1110,6 +1113,9 @@ int avahi_s_entry_group_commit(AvahiSEntryGroup *g) {
     if (g->state != AVAHI_ENTRY_GROUP_UNCOMMITED && g->state != AVAHI_ENTRY_GROUP_COLLISION)
         return avahi_server_set_errno(g->server, AVAHI_ERR_BAD_STATE);
 
+    if (avahi_s_entry_group_is_empty(g))
+        return avahi_server_set_errno(g->server, AVAHI_ERR_IS_EMPTY);
+
     g->n_register_try++;
 
     avahi_timeval_add(&g->register_time,