Package: tracker.debian.org Severity: normal As developer of a RSS/Atom newsreader I found problems with the RSS-Feed offerd by Debian-Tracker.
The 'Last-Modified' date is ignored when used in a second request in the 'If- Modified-Since' field. When there are only some seconds between two requests, the expected behaviour, when using the date from the first request directly, is that in the second request should no feed entries. In my newsreader I use Pythons 'aiohttp' package but in that example below I use 'feedparser' for easier handling. The problem is reproducable with both. Side note: I know (and do) that as a workaround I can check the "published" dates of each entry and delete them if my newsreader still have them. But this is Debian and I am hopefull that this can be improved. What I would reocmmand: 1. Ofer an Etag. 2. If not 1 than correct handling of the modified date. 3. If not 2 than remove the modified date from the header do prevent confusion. Please see this Python example to illustrate the problem Python 3.5.3 (default, Sep 27 2018, 17:25:39) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>> url = 'https://tracker.debian.org/pkg/feedparser/rss' >>> import feedparser as fp >>> a = fp.parse(url) >>> import json >>> print(json.dumps(a.headers, indent=4)) { "X-Clacks-Overhead": "GNU Terry Pratchett", "X-Xss-Protection": "1", "Transfer-Encoding": "chunked", "Last-Modified": "Sat, 30 Mar 2019 13:06:51 GMT", "Public-Key-Pins": "pin- sha256=\"M9Wyk2x6hLne/VkyJWFx33+LB8s+kAaMbO49fnm5fEY=\"; pin- sha256=\"ZsBWn0bekrum/1CJtBlg5yZ2eqRywN6YwGeBS31nH+s=\"; max-age=5184000", "Strict-Transport-Security": "max-age=15552000", "Content-Type": "application/rss+xml; charset=utf-8", "X-Content-Type-Options": "nosniff", "Connection": "close", "Referrer-Policy": "same-origin", "Content-Encoding": "gzip", "X-Frame-Options": "sameorigin", "Server": "Apache", "Vary": "Cookie,Accept-Encoding", "Date": "Sun, 31 Mar 2019 11:11:03 GMT" } >>> a.modified 'Sat, 30 Mar 2019 13:06:51 GMT' >>> b = fp.parse(url, modified=a.modified) >>> len(a.entries) 30 >>> len(b.entries) 30 -- System Information: Debian Release: 9.8 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.9.0-8-amd64 (SMP w/4 CPU cores) Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8), LANGUAGE=de_DE.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system)