Skip to content

ftp.funet.fi is misconfigured and handles content-encoding incorrectly #654

@AMDmi3

Description

@AMDmi3

ftp.funet.fi seems to be badly misconfigured as it unconditionally serves .gz files as

Content-Type: application/xml
Content-Encoding: x-gzip

even if accept-encoding headers is not passed. This leads to client failures as in this case HTTP library transparently decompressed the content, while client code still expecting compressed content.

% curl -I https://ftp.funet.fi/pub/mirrors/ftp.opensuse.com/pub/opensuse/update/leap/15.6/oss/repodata/2cd535dd8479340ddfb645a33e939dc7431947006524bd6f79fcacc04dbe5b1f-primary.xml.gz
HTTP/1.1 200 OK
Date: Wed, 20 May 2026 14:51:23 GMT
Server: Apache/2.4.67 (Unix) OpenSSL/3.5.5
Last-Modified: Mon, 18 May 2026 10:34:18 GMT
ETag: "b0054-652151ad5dcbb"
Accept-Ranges: bytes
Content-Length: 720980
Content-Type: application/xml
Content-Encoding: x-gzip

Here are responses from correctly behaving mirrors:

% curl -I https://opensuse.koyanet.lv/update/leap/15.6/oss/repodata/2cd535dd8479340ddfb645a33e939dc7431947006524bd6f79fcacc04dbe5b1f-primary.xml.gz 
HTTP/2 200 
server: nginx
date: Wed, 20 May 2026 14:52:46 GMT
content-type: application/gzip
content-length: 720980
last-modified: Mon, 18 May 2026 10:34:18 GMT
etag: "6a0aeb2a-b0054"
strict-transport-security: max-age=31536000; includeSubDomains
x-frame-options: DENY
x-content-type-options: nosniff
content-security-policy: frame-ancestors 'none'; upgrade-insecure-requests; base-uri 'none'; form-action 'none'; default-src 'none';
referrer-policy: no-referrer, strict-origin-when-cross-origin
accept-ranges: bytes
% curl -I https://mirror.aardsoft.fi/opensuse/update/leap/15.6/oss/repodata/2cd535dd8479340ddfb645a33e939dc7431947006524bd6f79fcacc04dbe5b1f-primary.xml.gz 
HTTP/2 200 
server: nginx/1.21.5
date: Wed, 20 May 2026 14:44:00 GMT
content-type: application/octet-stream
content-length: 720980
last-modified: Mon, 18 May 2026 10:34:18 GMT
etag: "6a0aeb2a-b0054"
accept-ranges: bytes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions