diff --git a/backend/src/app/binfile/common.clj b/backend/src/app/binfile/common.clj index a0b256660..8cd4f8cd3 100644 --- a/backend/src/app/binfile/common.clj +++ b/backend/src/app/binfile/common.clj @@ -513,12 +513,11 @@ (assoc :ignore-sync-until (dt/plus timestamp (dt/duration {:seconds 5}))) (update :features (fn [features] - (let [features (cfeat/check-supported-features! features)] - (-> (::features cfg #{}) - (set/union features) - ;; We never want to store - ;; frontend-only features on file - (set/difference cfeat/frontend-only-features))))))] + (-> (::features cfg #{}) + (set/union features) + ;; We never want to store + ;; frontend-only features on file + (set/difference cfeat/frontend-only-features)))))] (when (contains? cf/flags :file-schema-validation) (fval/validate-file-schema! file)) diff --git a/backend/src/app/binfile/v3.clj b/backend/src/app/binfile/v3.clj index 006fc5ff0..dcda35455 100644 --- a/backend/src/app/binfile/v3.clj +++ b/backend/src/app/binfile/v3.clj @@ -875,14 +875,17 @@ :manifest manifest)) ;; Check if all files referenced on manifest are present - (doseq [{file-id :id} (:files manifest)] + (doseq [{file-id :id features :features} (:files manifest)] (let [path (str "files/" file-id ".json")] + (when-not (get-zip-entry input path) (ex/raise :type :validation :code :invalid-binfile-v3 :hint "some files referenced on manifest not found" :path path - :file-id file-id)))) + :file-id file-id)) + + (cfeat/check-supported-features! features))) (events/tap :progress {:section :manifest})