Package: apt-cacher-ng Version: 3.7.4-1+b2 Severity: normal I've two acng proxies acting in a cascading manner (the other location does not have direct access to network, so I forward local acng port to the other location and have acng there to cache things for nearby machines). And almost always it fails to provide simple `apt update', failing to update InRelease files, reporting 530 [Server reports unexpected range] errors:
$ wget http://apt-proxy:3142/www.corpit.ru/mjt/packages/samba/bookworm/samba-4.18/InRelease Connecting to apt-proxy:3142 (10.221.1.37:3142) wget: server returned error: HTTP/1.1 503 Server reports unexpected range This issue will persist until I remove the cached InRelease file, - after which download of the updated InRelease and all other files will succeed. Here's what's going on the wire, the view from the intermediate acng: GET http://www.corpit.ru/mjt/ackages/samba/bookworm/samba-4.18/InRelease HTTP/1.1 User-Agent: Apt-Cacher-NG/3.7.4 Host: www.corpit.ru Proxy-Connection: keep-alive If-Range: Tue, 10 Oct 2023 15:46:31 GMT Range: bytes=2324- Cache-Control: max-age=0 Accept: application/octet-stream Accept-Encoding: identity Connection: keep HTTP/1.1 206 Partial Content Content-Type: octet/stream Last-Modified: Tue, 10 Oct 2023 17:41:09 GMT Content-Range: bytes 2324-2324/2325 Content-Length: 1 X-Original-Source: http://www.corpit.ru/mjt/packages/samba/bookworm/samba-4.18/InRelease Connection: Keep-Alive Date: Thu, 12.Oct 2023 09:19:39.GMT Server: Debian Apt-Cacher NG/3.7.4 (1-byte payload) The cached file, on the intemediate host: -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng 2325 Oct 12 01:15 /var/cache/apt-cacher-ng/www.corpit.ru/mjt/packages/samba/bookworm/samba-4.18/InRelease On the end-user host: -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng 2325 Oct 10 16:31 /var/cache/apt-cacher-ng/www.corpit.ru/mjt/packages/samba/bookworm/samba-4.18/InRelease The file's different (from different archive rebuilds) but has the same size (which is expected for an InRelease file). What I see here are at least two issues: 1. Why the end-user acng rejects the reply? Seems like a valid byte range. 2. Why the intermediate acng does not take into account the If-Range header? Clearly the If-Range requested by client is *older* than Last-Modified on the intermediate, shouldn't the intermediate ignore Range: and send whole file which is modified later than the requested range? This affects mostly the InRelease files, - maybe it's because these files always has the same size. So far, acng in this configuration is almost unusable - one have to remove all InRelease files on the caching host before doing any apt-update. /mjt