chiark / gitweb /
sd-dhcp6-client: delay setting the DUID and don't fail constructor
[elogind.git] / src / import / importd.c
index eaf04e6a2b1f7e046270b381829f7fafa3adc8ae..8a6a8c8ed1be85e332bad1abd6551a0c487b49db 100644 (file)
 #include "def.h"
 #include "socket-util.h"
 #include "mkdir.h"
-#include "import-util.h"
 #include "def.h"
+#include "missing.h"
+#include "machine-pool.h"
+#include "path-util.h"
+#include "import-util.h"
 
 typedef struct Transfer Transfer;
 typedef struct Manager Manager;
@@ -686,6 +689,10 @@ static int method_pull_tar_or_raw(sd_bus *bus, sd_bus_message *msg, void *userda
         if (v < 0)
                 return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unknown verification mode %s", verify);
 
+        r = setup_machine_directory((uint64_t) -1, error);
+        if (r < 0)
+                return r;
+
         type = streq_ptr(sd_bus_message_get_member(msg), "PullTar") ? TRANSFER_TAR : TRANSFER_RAW;
 
         if (manager_find(m, type, NULL, remote))
@@ -777,6 +784,10 @@ static int method_pull_dkr(sd_bus *bus, sd_bus_message *msg, void *userdata, sd_
         if (v != IMPORT_VERIFY_NO)
                 return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "DKR does not support verification.");
 
+        r = setup_machine_directory((uint64_t) -1, error);
+        if (r < 0)
+                return r;
+
         if (manager_find(m, TRANSFER_DKR, index_url, remote))
                 return sd_bus_error_setf(error, BUS_ERROR_TRANSFER_IN_PROGRESS, "Transfer for %s already in progress.", remote);