X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-core%2Fannounce.c;h=a77fbb698874dedfbdd27f8c5745e4ba20899fb1;hb=a4572037763c65ec34ac921a6e15b936c6525b5d;hp=10002b8de17fb02685bcef693d0ed6a9e0cb39fb;hpb=263515cd1d7b52ce2ad3dc55a93b9d6f730133f1;p=catta diff --git a/avahi-core/announce.c b/avahi-core/announce.c index 10002b8..a77fbb6 100644 --- a/avahi-core/announce.c +++ b/avahi-core/announce.c @@ -23,11 +23,14 @@ #include #endif +#include + #include #include #include "announce.h" #include "log.h" +#include "rr-util.h" #define AVAHI_ANNOUNCEMENT_JITTER_MSEC 250 #define AVAHI_PROBE_JITTER_MSEC 250 @@ -82,11 +85,11 @@ void avahi_s_entry_group_check_probed(AvahiSEntryGroup *g, int immediately) { if (g->dead) return; - for (e = g->entries; e; e = e->entries_next) { + for (e = g->entries; e; e = e->by_group_next) { AvahiAnnouncer *a; for (a = e->announcers; a; a = a->by_entry_next) { - + if (a->state != AVAHI_WAITING) continue; @@ -110,8 +113,6 @@ void avahi_s_entry_group_check_probed(AvahiSEntryGroup *g, int immediately) { static void next_state(AvahiAnnouncer *a) { assert(a); -/* avahi_log_debug("%i -- %u", a->state, a->n_iteration); */ - if (a->state == AVAHI_WAITING) { assert(a->entry->group); @@ -123,11 +124,6 @@ static void next_state(AvahiAnnouncer *a) { if (a->n_iteration >= 4) { /* Probing done */ -/* char *t; */ - -/* avahi_log_debug("Enough probes for record [%s]", t = avahi_record_to_string(a->entry->record)); */ -/* avahi_free(t); */ - if (a->entry->group) { assert(a->entry->group->n_probing); a->entry->group->n_probing--; @@ -164,12 +160,8 @@ static void next_state(AvahiAnnouncer *a) { avahi_server_generate_response(a->server, a->interface, NULL, NULL, 0, 0, 0); if (++a->n_iteration >= 4) { -/* char *t; */ /* Announcing done */ -/* avahi_log_debug("Enough announcements for record [%s]", t = avahi_record_to_string(a->entry->record)); */ -/* avahi_free(t); */ - a->state = AVAHI_ESTABLISHED; set_timeout(a, NULL); @@ -205,7 +197,7 @@ static AvahiAnnouncer *get_announcer(AvahiServer *s, AvahiEntry *e, AvahiInterfa return NULL; } -static void go_to_initial_state(AvahiAnnouncer *a, int immediately) { +static void go_to_initial_state(AvahiAnnouncer *a) { AvahiEntry *e; struct timeval tv; @@ -240,16 +232,12 @@ static void go_to_initial_state(AvahiAnnouncer *a, int immediately) { static void new_announcer(AvahiServer *s, AvahiInterface *i, AvahiEntry *e) { AvahiAnnouncer *a; -/* char *t; */ assert(s); assert(i); assert(e); assert(!e->dead); -/* avahi_log_debug("NEW ANNOUNCER: %s.%i [%s]", i->hardware->name, i->protocol, t = avahi_record_to_string(e->record)); */ -/* avahi_free(t); */ - if (!avahi_interface_match(i, e->interface, e->protocol) || !i->announcing || !avahi_entry_is_commited(e)) return; @@ -270,10 +258,7 @@ static void new_announcer(AvahiServer *s, AvahiInterface *i, AvahiEntry *e) { AVAHI_LLIST_PREPEND(AvahiAnnouncer, by_interface, i->announcers, a); AVAHI_LLIST_PREPEND(AvahiAnnouncer, by_entry, e->announcers, a); - go_to_initial_state(a, 0); - -/* avahi_log_debug("New announcer on interface %s.%i for entry [%s] state=%i", i->hardware->name, i->protocol, t = avahi_record_to_string(e->record), a->state); */ -/* avahi_free(t); */ + go_to_initial_state(a); } void avahi_announce_interface(AvahiServer *s, AvahiInterface *i) { @@ -347,8 +332,6 @@ int avahi_entry_is_probing(AvahiServer *s, AvahiEntry *e, AvahiInterface *i) { if (!(a = get_announcer(s, e, i))) return 0; - -/* avahi_log_debug("state: %i", a->state); */ return a->state == AVAHI_PROBING || @@ -368,18 +351,14 @@ void avahi_entry_return_to_initial_state(AvahiServer *s, AvahiEntry *e, AvahiInt if (a->state == AVAHI_PROBING && a->entry->group) a->entry->group->n_probing--; - go_to_initial_state(a, 1); + go_to_initial_state(a); } static AvahiRecord *make_goodbye_record(AvahiRecord *r) { -/* char *t; */ AvahiRecord *g; assert(r); -/* avahi_log_debug("Preparing goodbye for record [%s]", t = avahi_record_to_string(r)); */ -/* avahi_free(t); */ - if (!(g = avahi_record_copy(r))) return NULL; /* OOM */ @@ -519,7 +498,7 @@ void avahi_goodbye_interface(AvahiServer *s, AvahiInterface *i, int send_goodbye assert(i); if (send_goodbye) - if (avahi_interface_is_relevant(i)) { + if (i->announcing) { AvahiEntry *e; for (e = s->entries; e; e = e->entries_next)