X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-core%2Fiface.c;h=60419dff61803dd90a2183c756541b5a4747068f;hb=219241ab5223b705ade51485ea9227b0a6089c0d;hp=8686fb551054f62328f18c94e3e9007304eef500;hpb=8d361c07a55685f6eee5209b30f46c392549ba42;p=catta diff --git a/avahi-core/iface.c b/avahi-core/iface.c index 8686fb5..60419df 100644 --- a/avahi-core/iface.c +++ b/avahi-core/iface.c @@ -37,6 +37,7 @@ #include "socket.h" #include "announce.h" #include "util.h" +#include "log.h" static void update_address_rr(AvahiInterfaceMonitor *m, AvahiInterfaceAddress *a, gboolean remove) { g_assert(m); @@ -44,14 +45,18 @@ static void update_address_rr(AvahiInterfaceMonitor *m, AvahiInterfaceAddress *a if (avahi_interface_address_relevant(a) && !remove && - m->server->config.register_addresses && + m->server->config.publish_addresses && (m->server->state == AVAHI_SERVER_RUNNING || m->server->state == AVAHI_SERVER_REGISTERING)) { if (!a->entry_group) { a->entry_group = avahi_entry_group_new(m->server, avahi_host_rr_entry_group_callback, NULL); - avahi_server_add_address(m->server, a->entry_group, a->interface->hardware->index, a->interface->protocol, 0, NULL, &a->address); - avahi_entry_group_commit(a->entry_group); + if (avahi_server_add_address(m->server, a->entry_group, a->interface->hardware->index, a->interface->protocol, 0, NULL, &a->address) < 0) { + avahi_log_warn(__FILE__": avahi_server_add_address() failed."); + avahi_entry_group_free(a->entry_group); + a->entry_group = NULL; + } else + avahi_entry_group_commit(a->entry_group); } } else { @@ -86,7 +91,7 @@ static void update_hw_interface_rr(AvahiInterfaceMonitor *m, AvahiHwInterface *h update_interface_rr(m, i, remove); if (!remove && - m->server->config.register_workstation && + m->server->config.publish_workstation && (m->server->state == AVAHI_SERVER_RUNNING || m->server->state == AVAHI_SERVER_REGISTERING)) { @@ -97,8 +102,12 @@ static void update_hw_interface_rr(AvahiInterfaceMonitor *m, AvahiHwInterface *h g_free(t); hw->entry_group = avahi_entry_group_new(m->server, avahi_host_rr_entry_group_callback, NULL); - avahi_server_add_service(m->server, hw->entry_group, hw->index, AF_UNSPEC, "_workstation._tcp", name, NULL, NULL, 9, NULL); - avahi_entry_group_commit(hw->entry_group); + if (avahi_server_add_service(m->server, hw->entry_group, hw->index, AF_UNSPEC, "_workstation._tcp", name, NULL, NULL, 9, NULL) < 0) { + avahi_log_warn(__FILE__": avahi_server_add_service() failed."); + avahi_entry_group_free(hw->entry_group); + hw->entry_group = NULL; + } else + avahi_entry_group_commit(hw->entry_group); g_free(name); } @@ -235,7 +244,7 @@ static void check_interface_relevant(AvahiInterfaceMonitor *m, AvahiInterface *i b = avahi_interface_relevant(i); if (b && !i->announcing) { - g_message("New relevant interface %s.%i (#%i)", i->hardware->name, i->protocol, i->hardware->index); + avahi_log_debug("New relevant interface %s.%i (#%i)", i->hardware->name, i->protocol, i->hardware->index); if (i->protocol == AF_INET) avahi_mdns_mcast_join_ipv4(i->hardware->index, m->server->fd_ipv4); @@ -244,8 +253,9 @@ static void check_interface_relevant(AvahiInterfaceMonitor *m, AvahiInterface *i i->announcing = TRUE; avahi_announce_interface(m->server, i); + avahi_browser_new_interface(m->server, i); } else if (!b && i->announcing) { - g_message("Interface %s.%i no longer relevant", i->hardware->name, i->protocol); + avahi_log_debug("Interface %s.%i no longer relevant", i->hardware->name, i->protocol); if (i->protocol == AF_INET) avahi_mdns_mcast_leave_ipv4(i->hardware->index, m->server->fd_ipv4); @@ -437,19 +447,19 @@ static void callback(AvahiNetlink *nl, struct nlmsghdr *n, gpointer userdata) { m->list = LIST_DONE; if (netlink_list_items(m->netlink, RTM_GETADDR, &m->query_addr_seq) < 0) - g_warning("NETLINK: Failed to list addrs: %s", strerror(errno)); + avahi_log_warn("NETLINK: Failed to list addrs: %s", strerror(errno)); else m->list = LIST_ADDR; } else { m->list = LIST_DONE; - g_message("Enumeration complete"); + avahi_log_debug("Enumeration complete"); } } else if (n->nlmsg_type == NLMSG_ERROR && (n->nlmsg_seq == m->query_link_seq || n->nlmsg_seq == m->query_addr_seq)) { struct nlmsgerr *e = NLMSG_DATA (n); if (e->error) - g_warning("NETLINK: Failed to browse: %s", strerror(-e->error)); + avahi_log_warn("NETLINK: Failed to browse: %s", strerror(-e->error)); } } @@ -543,9 +553,9 @@ void avahi_interface_send_packet_unicast(AvahiInterface *i, AvahiDnsPacket *p, c g_assert(!a || a->family == i->protocol); /* if (a) */ -/* g_message("unicast sending on '%s.%i' to %s:%u", i->hardware->name, i->protocol, avahi_address_snprint(t, sizeof(t), a), port); */ +/* avahi_log_debug("unicast sending on '%s.%i' to %s:%u", i->hardware->name, i->protocol, avahi_address_snprint(t, sizeof(t), a), port); */ /* else */ -/* g_message("multicast sending on '%s.%i'", i->hardware->name, i->protocol); */ +/* avahi_log_debug("multicast sending on '%s.%i'", i->hardware->name, i->protocol); */ if (i->protocol == AF_INET && i->monitor->server->fd_ipv4 >= 0) avahi_send_dns_packet_ipv4(i->monitor->server->fd_ipv4, i->hardware->index, p, a ? &a->data.ipv4 : NULL, port); @@ -617,7 +627,7 @@ gboolean avahi_interface_relevant(AvahiInterface *i) { break; } -/* g_message("%p. iface-relevant: %i %i %i %i %i %i", i, relevant_address, */ +/* avahi_log_debug("%p. iface-relevant: %i %i %i %i %i %i", i, relevant_address, */ /* (i->hardware->flags & IFF_UP), */ /* (i->hardware->flags & IFF_RUNNING), */ /* !(i->hardware->flags & IFF_LOOPBACK), */