From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id EBF5B95DCC for ; Wed, 28 Feb 2024 15:03:23 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 83CD9CF59 for ; Wed, 28 Feb 2024 15:02:52 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Wed, 28 Feb 2024 15:02:48 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 03984479BF for ; Wed, 28 Feb 2024 15:02:48 +0100 (CET) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Wed, 28 Feb 2024 15:02:00 +0100 Message-Id: <20240228140226.1251979-11-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240228140226.1251979-1-c.ebner@proxmox.com> References: <20240228140226.1251979-1-c.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.048 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pbs-devel] [RFC pxar 10/36] encoder/format: finish payload stream with marker X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Feb 2024 14:03:24 -0000 Mark the end of the optional payload stream, this makes sure that at least some bytes are written to the stream (as empty archives are not allowed by the proxmox backup server) and possible injected chunks must be consumed. Signed-off-by: Christian Ebner --- examples/mk-format-hashes.rs | 5 +++++ src/encoder/mod.rs | 7 +++++++ src/format/mod.rs | 2 ++ 3 files changed, 14 insertions(+) diff --git a/examples/mk-format-hashes.rs b/examples/mk-format-hashes.rs index 83adb38..de73df0 100644 --- a/examples/mk-format-hashes.rs +++ b/examples/mk-format-hashes.rs @@ -56,6 +56,11 @@ const CONSTANTS: &[(&str, &str, &str)] = &[ "PXAR_GOODBYE_TAIL_MARKER", "__PROXMOX_FORMAT_PXAR_GOODBYE_TAIL_MARKER__", ), + ( + "The end marker used in the separate payload stream", + "PXAR_PAYLOAD_TAIL_MARKER", + "__PROXMOX_FORMAT_PXAR_PAYLOAD_TAIL_MARKER__", + ), ]; fn main() { diff --git a/src/encoder/mod.rs b/src/encoder/mod.rs index dbb6fcb..9854114 100644 --- a/src/encoder/mod.rs +++ b/src/encoder/mod.rs @@ -890,6 +890,13 @@ impl<'a, T: SeqWrite + 'a> EncoderImpl<'a, T> { if let EncoderOutput::Owned(output) = &mut self.payload_output { if let Some(output) = output { + seq_write_pxar_entry( + output, + format::PXAR_PAYLOAD_TAIL_MARKER, + &[], + &mut state.payload_write_position, + ) + .await?; flush(output).await?; } } diff --git a/src/format/mod.rs b/src/format/mod.rs index 3512691..d6fad49 100644 --- a/src/format/mod.rs +++ b/src/format/mod.rs @@ -105,6 +105,8 @@ pub const PXAR_PAYLOAD_REF: u64 = 0x419d3d6bc4ba977e; pub const PXAR_GOODBYE: u64 = 0x2fec4fa642d5731d; /// The end marker used in the GOODBYE object pub const PXAR_GOODBYE_TAIL_MARKER: u64 = 0xef5eed5b753e1555; +/// The end marker used in the separate payload stream +pub const PXAR_PAYLOAD_TAIL_MARKER: u64 = 0x6c72b78b984c81b5; #[derive(Debug, Endian)] #[repr(C)] -- 2.39.2