Django crashes when receiving a request containing a If-Modified-Since header with an incorrect date:
Traceback (most recent call last): File "/path/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/path/lib/python3.13/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/path/archives/mailarchives/views.py", line 112, in __cache resp = fn(request, *_args, **_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/path/archives/mailarchives/views.py", line 500, in message if ims >= newest: ^^^^^^^^^^^^^
Exception Type: TypeError at /message-id/<redacted> Exception Value: '>=' not supported between instances of 'NoneType' and 'int'
This patch adds a condition to avoid this.
Good catch. Applied. Thanks!
(For some reason, archives on postgresql.org do NOT crash on this. Are headers filtered before reaching pgarchives there? When deploying upstream version of pgarchives locally, I do have this crash)
IMS in particular is handled by the cache. So the brwoser does IMS <-> the cache, and then varnish does it independently <-> backend. And Varnish will always create the correct headers. And since headers from the client are never passed through to the backend, it doesn't show up there.