X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-daemon%2Fstatic-services.c;h=4df6047d0ba475f31d8d6b11ac8183c2e33d3f08;hb=b91e3b47eaed054189c45c070002f291d7d11166;hp=a750c2f902c6e6475dc024a14e33e6f26885b4e8;hpb=fd0fa7a5b7bf832f7974db44bd10473a348b5ce9;p=catta diff --git a/avahi-daemon/static-services.c b/avahi-daemon/static-services.c index a750c2f..4df6047 100644 --- a/avahi-daemon/static-services.c +++ b/avahi-daemon/static-services.c @@ -222,7 +222,9 @@ static void add_static_service_group_to_server(StaticServiceGroup *g) { /* This service group is already registered in the server */ return; - if (!g->chosen_name) { + if (!g->chosen_name || (g->replace_wildcards && strstr(g->name, "%h"))) { + + avahi_free(g->chosen_name); if (g->replace_wildcards) g->chosen_name = replacestr(g->name, "%h", avahi_server_get_host_name(avahi_server)); @@ -655,6 +657,7 @@ static void load_file(char *n) { void static_service_load(int in_chroot) { StaticServiceGroup *g, *n; glob_t globbuf; + int globret; char **p; for (g = groups; g; g = n) { @@ -681,8 +684,20 @@ void static_service_load(int in_chroot) { } memset(&globbuf, 0, sizeof(globbuf)); - if (glob(in_chroot ? "/services/*.service" : AVAHI_SERVICE_DIR "/*.service", GLOB_ERR, NULL, &globbuf) != 0) - avahi_log_error("Failed to read service directory."); + if ((globret = glob(in_chroot ? "/services/*.service" : AVAHI_SERVICE_DIR "/*.service", GLOB_ERR, NULL, &globbuf)) != 0) + switch (globret) { + case GLOB_NOSPACE: + avahi_log_error("Not enough memory to read service directory."); + break; + + case GLOB_ABORTED: + avahi_log_error("Failed to read %s.", AVAHI_SERVICE_DIR); + break; + + case GLOB_NOMATCH: + avahi_log_info("No service found in %s.", AVAHI_SERVICE_DIR); + break; + } else { for (p = globbuf.gl_pathv; *p; p++) load_file(*p);