I think I have found the issue. My service file is setup like this:
<!-- See avahi.service(5) for more information about this configuration file --> <service-group> <name replace-wildcards="yes">%h</name> <service protocol="ipv6"> <type>_http._tcp</type> <port>80</port> </service> </service-group> In the file avahi-daemon/static-services.c function: entry_group_callback, if a conflict is detected a new name is created and stored in g->chosen_name and an attempt is made to add the service again with this new name. case AVAHI_ENTRY_GROUP_COLLISION: { char *n; remove_static_service_group_from_server(g); n = avahi_alternative_service_name(g->chosen_name); avahi_free(g->chosen_name); g->chosen_name = n; avahi_log_notice("Service name conflict for \"%s\" (%s), retrying with \"%s\".", g->name, g->filename, g->chosen_name); add_static_service_group_to_server(g); break; } The problem is in add_static_service_group_to_server. There is an if to see if g->chosen_name = NULL or if the replace-wildcards is set to yes. If either of those are true ( in my chase it is ) it then frees the g->chosen_name and rebuilds it with the same name that was in conflict to begin with. It never tries to add the service with the new service name so I continually receive the “Service name conflict”. static void add_static_service_group_to_server(StaticServiceGroup *g) { StaticService *s; assert(g); if (g->entry_group && !avahi_s_entry_group_is_empty(g->entry_group)) /* This service group is already registered in the server */ return; if (!g->chosen_name || (g->replace_wildcards && strstr(g->name, "%h"))) { avahi_free(g->chosen_name); if (g->replace_wildcards) { char label[AVAHI_LABEL_MAX]; const char *p; p = avahi_server_get_host_name(avahi_server); avahi_unescape_label(&p, label, sizeof(label)); g->chosen_name = replacestr(g->name, "%h", label); } else g->chosen_name = avahi_strdup(g->name); } > On Jan 26, 2018, at 9:50 AM, Timothy Potter <tpotte...@me.com> wrote: > > I have several Linux machines all running kernel version 3.12 and > avahi-daemon 0.6.31. Each machine has a unique host name and they are all > advertising an ssh, sftp, and http. When I start all the machines up > everything runs just fine. If one of the machines gets re-booted, when the > avahi-daemon on that machine starts up again, it reports service conflicts > every couple of seconds: > > Jun 1 16:20:12 Node00b01973d6c8 daemon.notice avahi-daemon[1624]: Service > name conflict for "%h" (/services/ssh.service), retrying with > "Node00b01973d6c8 #2". > Jun 1 16:20:12 Node00b01973d6c8 daemon.notice avahi-daemon[1624]: Service > name conflict for "%h" (/services/http.service), retrying with > "Node00b01973d6c8 #2". > Jun 1 16:20:32 Node00b01973d6c8 daemon.notice avahi-daemon[1624]: Service > name conflict for "%h" (/services/sftp-ssh.service), retrying with > "Node00b01973d6c8 #2". > > These message print every few seconds. The only way I have been able to make > them go away is to reboot all the machines running the avahi-daemon. Any > suggestions on how to fix this? >
_______________________________________________ avahi mailing list avahi@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/avahi