]> arthur.barton.de Git - netatalk.git/commitdiff
Zeroconf instance name is precomposed UTF-8, not unixcharset
authorHAT <hat@fa2.so-net.ne.jp>
Wed, 30 Jun 2010 16:50:30 +0000 (01:50 +0900)
committerHAT <hat@fa2.so-net.ne.jp>
Wed, 30 Jun 2010 16:50:30 +0000 (01:50 +0900)
etc/afpd/afp_avahi.c
etc/afpd/afp_avahi.h

index e763a0cfb7034185dc226d06f7455573b5d5cfae..fc3627116be216f301ec713f3ce29cedb72bb3a9 100644 (file)
@@ -46,7 +46,7 @@ static void register_stuff(void) {
     const AFPConfig *config;
     const struct vol *volume;
     DSI *dsi;
-    const char *name;
+    char name[MAXINSTANCENAMELEN+1];
     AvahiStringList *strlist = NULL;
     char tmpname[256];
 
@@ -69,8 +69,10 @@ static void register_stuff(void) {
                
         for (volume = getvolumes(); volume; volume = volume->v_next) {
 
-            if (convert_string(CH_UCS2, CH_UTF8_MAC, volume->v_name, -1, tmpname, 255) <= 0)
+            if (convert_string(CH_UCS2, CH_UTF8_MAC, volume->v_name, -1, tmpname, 255) <= 0) {
+                LOG ( log_error, logtype_afpd, "Could not set Zeroconf volume name for TimeMachine");
                 goto fail;
+            }
 
             if (volume->v_flags & AFPVOL_TM) {
                 if (volume->v_uuid) {
@@ -91,9 +93,14 @@ static void register_stuff(void) {
         for (config = ctx->configs; config; config = config->next) {
 
             dsi = (DSI *)config->obj.handle;
-            name = config->obj.options.server ?
-                config->obj.options.server : config->obj.options.hostname;
             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");
+                goto fail;
+            }
 
             if (avahi_entry_group_add_service(ctx->group,
                                               AVAHI_IF_UNSPEC,
@@ -115,7 +122,7 @@ static void register_stuff(void) {
                                                           AVAHI_PROTO_UNSPEC,
                                                           0,
                                                           name,
-                                                          "_adisk._tcp",
+                                                          ADISK_SERVICE_TYPE,
                                                           NULL,
                                                           NULL,
                                                           9, /* discard */
index ae3d37dafaec57efb8e24e5c48a2e6cdaccdc598..2c6ca706d0e5176e1bf8d82eb12b2154d02d9480 100644 (file)
@@ -25,6 +25,9 @@
 #include "afp_config.h"
 
 #define AFP_DNS_SERVICE_TYPE "_afpovertcp._tcp"
+#define ADISK_SERVICE_TYPE "_adisk._tcp"
+
+#define MAXINSTANCENAMELEN 63
 
 struct context {
        /* Avahi stuff */