X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-core%2Fentry.c;h=d953f7b33000844fe4bb61948f71153bf2520877;hb=7ba2b1fcc731085127c9976b1bae4aaaa5b8b7a7;hp=5baaf4096db1b69a17f547d374e1516ef4a09f15;hpb=a3d45b39608418e261f34b3b3286b80e4878d25c;p=catta diff --git a/avahi-core/entry.c b/avahi-core/entry.c index 5baaf40..d953f7b 100644 --- a/avahi-core/entry.c +++ b/avahi-core/entry.c @@ -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,