[pmg-devel] [PATCH pmg-api v3 3/5] pmg-smtp-filter: archive-detection: use header information as well

Dominik Csapak d.csapak at proxmox.com
Thu Feb 20 16:21:52 CET 2025


On 2/19/25 13:18, Stoiko Ivanov wrote:
> This restores the fall-back to the content-type from the header for
> detecting archives, which we want to unpack, as eagerly trying to get
> all information seems sensible in this case.
> 
> Signed-off-by: Stoiko Ivanov <s.ivanov at proxmox.com>
> ---
>   src/bin/pmg-smtp-filter | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/src/bin/pmg-smtp-filter b/src/bin/pmg-smtp-filter
> index 6061459..5c79a58 100755
> --- a/src/bin/pmg-smtp-filter
> +++ b/src/bin/pmg-smtp-filter
> @@ -561,7 +561,13 @@ sub run_dequeue {
>   sub unpack_entity {
>       my ($self, $unpack, $entity, $msginfo, $queue) = @_;
>   
> -    my ($magic, $path) = $entity->@{'PMX_magic_ct', 'PMX_decoded_path'};
> +    my ($magic, $headerct, $path) = $entity->@{'PMX_magic_ct', 'PMX_header_ct', 'PMX_decoded_path'};
> +
> +    # in order to not miss information from a misdetected archive use information provided in the
> +    # header here as well
> +    if ($magic eq 'application/octet-stream' && $headerct) {
> +	$magic = $headerct;
> +    }

AFAICS this will be called for all entities? so magic does not necessarily has to be set?

in that case i'd move this block into the if condition below here, where we check that magic
is actually set

>   
>       if ($magic && $path) {
>   	my $filename = basename ($path);





More information about the pmg-devel mailing list