]> arthur.barton.de Git - netatalk.git/commitdiff
Registered bonjour name probably should not be in a static buffer, so allocate and...
authorFrank Lahm <franklahm@googlemail.com>
Tue, 22 Mar 2011 16:06:04 +0000 (17:06 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Tue, 22 Mar 2011 16:06:04 +0000 (17:06 +0100)
etc/afpd/afp_avahi.c
include/atalk/dsi.h

index 28c72e22424ae96b3bef20dd9f9759951eec9d94..a06c7be4237209e35faa9a4bee6f16da6ff01d00 100644 (file)
@@ -94,19 +94,31 @@ static void register_stuff(void) {
 
             dsi = (DSI *)config->obj.handle;
             port = getip_port((struct sockaddr *)&dsi->server);
-            
-            if (convert_string(config->obj.options.unixcharset, CH_UTF8,
-                               config->obj.options.server ? config->obj.options.server : config->obj.options.hostname, -1,
-                               name, MAXINSTANCENAMELEN) <= 0) {
-                LOG ( log_error, logtype_afpd, "Could not set Zeroconf instance name");
+
+            if (convert_string(config->obj.options.unixcharset,
+                               CH_UTF8,
+                               config->obj.options.server ?
+                               config->obj.options.server :
+                               config->obj.options.hostname,
+                               -1,
+                               name,
+                               MAXINSTANCENAMELEN) <= 0) {
+                LOG(log_error, logtype_afpd, "Could not set Zeroconf instance name");
+                goto fail;
+            }
+            if ((dsi->bonjourname = strdup(name)) == NULL) {
+                LOG(log_error, logtype_afpd, "Could not set Zeroconf instance name");
                 goto fail;
+
             }
+            LOG(log_info, logtype_afpd, "Registering server '%s' with with Bonjour",
+                dsi->bonjourname);
 
             if (avahi_entry_group_add_service(ctx->group,
                                               AVAHI_IF_UNSPEC,
                                               AVAHI_PROTO_UNSPEC,
                                               0,
-                                              name,
+                                              dsi->bonjourname,
                                               AFP_DNS_SERVICE_TYPE,
                                               NULL,
                                               NULL,
@@ -121,7 +133,7 @@ static void register_stuff(void) {
                                                           AVAHI_IF_UNSPEC,
                                                           AVAHI_PROTO_UNSPEC,
                                                           0,
-                                                          name,
+                                                          dsi->bonjourname,
                                                           ADISK_SERVICE_TYPE,
                                                           NULL,
                                                           NULL,
index dc32f6e3779496edffa20d9ddcbd88992db82f41..ff50d59c8b1dbdb0f71b559990bed824170d4551 100644 (file)
@@ -91,6 +91,7 @@ typedef struct DSI {
 #endif 
 
 #ifdef USE_ZEROCONF
+  char *bonjourname;      /* server name as UTF8 maxlen MAXINSTANCENAMELEN */
   int zeroconf_registered;
 #endif