]> arthur.barton.de Git - netatalk.git/commitdiff
Fixes
authorFrank Lahm <franklahm@googlemail.com>
Sat, 3 Mar 2012 15:30:20 +0000 (16:30 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Sat, 3 Mar 2012 15:30:20 +0000 (16:30 +0100)
bin/ad/ad_util.c
etc/afpd/volume.c
libatalk/adouble/ad_open.c
libatalk/util/netatalk_conf.c

index 0143a1e4c7abb635c4e8e5c6f4cbdd19d5e204c2..d994f74f56afa666fe8376d142c882fcf6a83aaa 100644 (file)
@@ -138,9 +138,10 @@ int openvol(AFPObj *obj, const char *path, afpvol_t *vol)
 
 void closevol(afpvol_t *vol)
 {
-    if (vol->vol->v_cdb)
+    if (vol->vol->v_cdb) {
         cnid_close(vol->vol->v_cdb);
-
+        vol->vol->v_cdb = NULL;
+    }
     memset(vol, 0, sizeof(afpvol_t));
 }
 
index 1adf24af522a22efeda7abdf8e0e40a28b599187..6fbb6ec36171647e775d34c3cd5d097f0ad23381 100644 (file)
@@ -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 */
index c79d425173e4779d48a763be2469c89d368c355c..94549cd81769092d2a11aa40d5651ec5b8104384 100644 (file)
@@ -1955,9 +1955,9 @@ int ad_convert(const char *path, const struct stat *sp, const struct vol *vol)
     LOG(log_debug, logtype_default,"ad_conv_v22ea_hf(\"%s\"): deleting adouble:v2 file: \"%s\"",
         path, fullpathname(adpath));
 
-    become_root();
+//    become_root();
     EC_ZERO_LOG( unlink(adpath) );
-    unbecome_root();
+//    unbecome_root();
 
 EC_CLEANUP:
     LOG(log_debug, logtype_default,"ad_convert(\"%s\"): END: %d", fullpathname(path), ret);
index 93ff14781204433dad70f015da298f351c4bf453..b56b1e73288199b09255c2e7649e2aae3f8d5c6a 100644 (file)
@@ -173,18 +173,18 @@ static int do_check_ea_support(const struct vol *vol)
 
     mktemp(eaname);
 
-    become_root();
+//    become_root();
 
     if ((sys_setxattr(vol->v_path, eaname, eacontent, 4, 0)) == 0) {
         sys_removexattr(vol->v_path, eaname);
         haseas = 1;
     } else {
-        LOG(log_warning, logtype_afpd, "volume \"%s\" does not support Extended Attributes",
+        LOG(log_warning, logtype_afpd, "volume \"%s\" does not support Extended Attributes or read-only volume root",
             vol->v_localname);
         haseas = 0;
     }
 
-    unbecome_root();
+//    unbecome_root();
 
     return haseas;
 }
@@ -610,6 +610,8 @@ static struct vol *creatvol(AFPObj *obj,
 
     if (val = getoption(obj->iniconfig, section, "cnidscheme", preset))
         EC_NULL( volume->v_cnidscheme = strdup(val) );
+    else
+        volume->v_cnidscheme = strdup(DEFAULT_CNID_SCHEME);
 
     if (val = getoption(obj->iniconfig, section, "umask", preset))
         volume->v_umask = (int)strtol(val, NULL, 8);
@@ -652,11 +654,14 @@ static struct vol *creatvol(AFPObj *obj,
         volume->v_cnidserver = p;
         if (q = strrchr(val, ':')) {
             *q++ = 0;
-            volume->v_cnidport = q;
+            volume->v_cnidport = strdup(q);
         } else {
-            volume->v_cnidport = "4700";
+            volume->v_cnidport = strdup("4700");
         }
 
+    } else {
+        volume->v_cnidserver = strdup(obj->options.Cnid_srv);
+        volume->v_cnidport = strdup(obj->options.Cnid_port);
     }
 
     if (val = getoption(obj->iniconfig, section, "ea", preset)) {
@@ -1034,10 +1039,7 @@ void volume_free(struct vol *vol)
     free(vol->v_gvs);
     free(vol->v_uuid);
     free(vol->v_cnidserver);
-#if 0
-    /* NO! Just points to v_cnidserver + x */
     free(vol->v_cnidport);
-#endif
     free(vol->v_root_preexec);
     free(vol->v_postexec);
 
@@ -1281,7 +1283,6 @@ struct vol *getvolbypath(AFPObj *obj, const char *path)
     vol = creatvol(obj, pw, INISEC_HOMES, volname, volpath, preset ? preset : default_preset ? default_preset : NULL);
 
 EC_CLEANUP:
-    endpwent();
     if (user)
         free(user);
     if (ret != 0)