prepare to upload
[debian/amanda] / server-src / server_util.c
index e649359886863ff4a4b64ec250b32036c8b5de53..24a91ff9625ac2af1a2ea47b9ecdf3422a4eaa23 100644 (file)
@@ -49,8 +49,8 @@ const char *cmdstr[] = {
      
     "PARTDONE", "PORT-WRITE", "DUMPER-STATUS",             /* taper cmds */
     "PORT", "TAPE-ERROR", "TAPER-OK",                   /* taper results */
-    "REQUEST-NEW-TAPE", "DIRECTTCP-PORT",
-    "LAST_TOK",
+    "REQUEST-NEW-TAPE", "DIRECTTCP-PORT", "TAKE-SCRIBE-FROM",
+    "START-SCAN", "LAST_TOK",
     NULL
 };
 
@@ -216,6 +216,9 @@ int check_infofile(
                        return -1;
                }
            }
+           amfree(old_hostinfodir);
+           amfree(old_diskdir);
+           amfree(old_infofile);
        }
        amfree(diskdir);
        amfree(hostinfodir);
@@ -338,11 +341,13 @@ run_server_script(
     if (streamout) {
        while((line = agets(streamout)) != NULL) {
            dbprintf("script: %s\n", line);
+           amfree(line);
        }
     }
     fclose(streamout);
     waitpid(scriptpid, NULL, 0);
     g_ptr_array_free_full(argv_ptr);
+    amfree(cmd);
 }
 
 
@@ -509,8 +514,10 @@ internal_server_estimate(
            size = (gint64)10000;
            if (size > tapetype_get_length(tape)/2)
                size = tapetype_get_length(tape)/2;
-           if (size > level0_size/2)
-               size = level0_size/2;
+           if (level0_size > 0 && dp->strategy != DS_NOFULL) {
+               if (size > level0_size/2)
+                   size = level0_size/2;
+           }
            *stats = 0;
        }
     }
@@ -543,10 +550,18 @@ internal_server_estimate(
            size = (gint64)100000;
            if (size > tapetype_get_length(tape)/2)
                size = tapetype_get_length(tape)/2;
-           if (size > level0_size/2)
-               size = level0_size/2;
+           if (level0_size > 0 && dp->strategy != DS_NOFULL) {
+               if (size > level0_size/2)
+                   size = level0_size/2;
+           }
            *stats = 0;
        }
+    } else {
+       char *conf_tapetype = getconf_str(CNF_TAPETYPE);
+       tapetype_t *tape = lookup_tapetype(conf_tapetype);
+       size = (gint64)100000;
+       if (size > tapetype_get_length(tape)/2)
+           size = tapetype_get_length(tape)/2;
     }
 
     return size;