[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#926074: RSS-Feed: Server ignores 'Last-Modified' date



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)


Reply to: