]> arthur.barton.de Git - netatalk.git/blobdiff - etc/afpd/volume.c
Automatic unescaping of CAP hexencoded '/' and '.'
[netatalk.git] / etc / afpd / volume.c
index 4cd5fb7cea5969c8fe8485a3d9609c3a654155a9..61d744ca70cdc980d21b98734a06b25682e3e1d9 100644 (file)
@@ -321,7 +321,7 @@ static int getvolparams(const AFPObj *obj, uint16_t bitmap, struct vol *vol, str
      * .Parent file here if it doesn't exist. */
 
     /* Convert adouble:v2 to adouble:ea on the fly */
-    (void)ad_convert(vol->v_path, st, vol);
+    (void)ad_convert(vol->v_path, st, vol, NULL);
 
     ad_init(&ad, vol);
     if (ad_open(&ad, vol->v_path, ADFLAGS_HF | ADFLAGS_DIR | ADFLAGS_RDWR | ADFLAGS_CREATE, 0666) != 0 ) {
@@ -641,22 +641,14 @@ static int volume_openDB(const AFPObj *obj, struct vol *volume)
         flags |= CNID_FLAG_NODEV;
     }
 
-    if (volume->v_cnidscheme == NULL) {
-        volume->v_cnidscheme = strdup(DEFAULT_CNID_SCHEME);
-        LOG(log_info, logtype_afpd, "Volume %s use CNID scheme %s.",
-            volume->v_path, volume->v_cnidscheme);
-    }
-
-    LOG(log_info, logtype_afpd, "CNID server: %s:%s",
-        volume->v_cnidserver ? volume->v_cnidserver : obj->options.Cnid_srv,
-        volume->v_cnidport ? volume->v_cnidport : obj->options.Cnid_port);
+    LOG(log_debug, logtype_afpd, "CNID server: %s:%s", volume->v_cnidserver, volume->v_cnidport);
 
     volume->v_cdb = cnid_open(volume->v_path,
                               volume->v_umask,
                               volume->v_cnidscheme,
                               flags,
-                              volume->v_cnidserver ? volume->v_cnidserver : obj->options.Cnid_srv,
-                              volume->v_cnidport ? volume->v_cnidport : obj->options.Cnid_port);
+                              volume->v_cnidserver,
+                              volume->v_cnidport);
 
     if ( ! volume->v_cdb && ! (flags & CNID_FLAG_MEMORY)) {
         /* The first attempt failed and it wasn't yet an attempt to open in-memory */
@@ -919,10 +911,6 @@ void closevol(struct vol *vol)
     if (vol->v_root_postexec) {
         afprun(1, vol->v_root_postexec, NULL);
     }
-
-    volume_free(vol);
-    volume_unlink(vol);
-    free(vol);
 }
 
 /* ------------------------- */
@@ -952,6 +940,7 @@ int afp_closevol(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_
     }
 
     (void)chdir("/");
+    curdir = NULL;
     closevol(vol);
 
     return( AFP_OK );