Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wXxcl-003aTd-2Y for pgsql-www@arkaria.postgresql.org; Fri, 12 Jun 2026 08:52:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wXxcj-001aPG-1j for pgsql-www@arkaria.postgresql.org; Fri, 12 Jun 2026 08:52:21 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wXxcj-001aP7-0s for pgsql-www@lists.postgresql.org; Fri, 12 Jun 2026 08:52:21 +0000 Received: from smtp.cmatte.me ([54.37.205.152]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wXxcg-00000002Jje-3AUc for pgsql-www@lists.postgresql.org; Fri, 12 Jun 2026 08:52:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cmatte.me; s=myselector; t=1781254335; bh=+YxFJwjLWjM87em3XarLID4SXLym7R3kbzPuyfOhCWw=; h=Date:From:Subject:To; b=QkVMDlk/dGL3Y0i+6j+3jFutC545ipztFZHEyoA7q09yt8kfE6JdDGgvV14onu4Ps qOS5ukhQ9q2Pjg6RD4rmE0yOy+aAGvKwSI/8wtNHxus0b2SQmtYvudirMCLX4VavLH 9dFPVTx+rC0m7i+SXSBuFQMd8tE+OohmBdZWnvBre36b7OeDgoN36qxT2twJNhF3G2 Hcz7jUHTzMcYJRYouHFcJHBvOsDOC3Oh7kO8t7MSGwHnDIhLRAJM8G/BTEL7NidKCs U9eRIeBvBAszMu6IYU3tMYTl2eibu4ud0CIS8llpJ+H0+qIOBwrJ8+jfa/iYjPc04F fxPSnuNyNIn1A== Content-Type: multipart/mixed; boundary="------------0LM0L320wuREcc9Yg6O4dJJM" Message-ID: Date: Fri, 12 Jun 2026 10:52:08 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: =?UTF-8?Q?C=C3=A9lestin_Matte?= Subject: [PATCH] pgarchives: Fix crash when receiving a request with an incorrect If-Modified-Since header To: PostgreSQL WWW Content-Language: en-US Autocrypt: addr=celestin.matte@cmatte.me; keydata= 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 co++UjjOPJT3t7qY4ekbQ3xf6bdSDZh7Aw== List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------0LM0L320wuREcc9Yg6O4dJJM Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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/ Exception Value: '>=' not supported between instances of 'NoneType' and 'int' This patch adds a condition to avoid this. (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) -- Célestin Matte --------------0LM0L320wuREcc9Yg6O4dJJM Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-crash-when-receiving-a-request-with-an-incorrect.patch" Content-Disposition: attachment; filename*0="0001-Fix-crash-when-receiving-a-request-with-an-incorrect.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwZjFiN2ZkMWI5YzYwOTgxMWMwNWI4ZWUxYzczOWI4MGQzMWFjNDkxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Qz1DMz1BOWxlc3Rpbj0yME1hdHRl Pz0gPGRldkBjbWF0dGUubWU+CkRhdGU6IFRodSwgMTEgSnVuIDIwMjYgMTg6NDc6MDAgKzAy MDAKU3ViamVjdDogW1BBVENIXSBGaXggY3Jhc2ggd2hlbiByZWNlaXZpbmcgYSByZXF1ZXN0 IHdpdGggYW4gaW5jb3JyZWN0CiBJZi1Nb2RpZmllZC1TaW5jZSBoZWFkZXIKCi0tLQogZGph bmdvL2FyY2hpdmVzL21haWxhcmNoaXZlcy92aWV3cy5weSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RqYW5n by9hcmNoaXZlcy9tYWlsYXJjaGl2ZXMvdmlld3MucHkgYi9kamFuZ28vYXJjaGl2ZXMvbWFp bGFyY2hpdmVzL3ZpZXdzLnB5CmluZGV4IGZlNzRmN2MuLmYyNThkNWQgMTAwNjQ0Ci0tLSBh L2RqYW5nby9hcmNoaXZlcy9tYWlsYXJjaGl2ZXMvdmlld3MucHkKKysrIGIvZGphbmdvL2Fy Y2hpdmVzL21haWxhcmNoaXZlcy92aWV3cy5weQpAQCAtNDgyLDcgKzQ4Miw3IEBAIGRlZiBt ZXNzYWdlKHJlcXVlc3QsIG1zZ2lkKToKICAgICBuZXdlc3QgPSBjYWxlbmRhci50aW1lZ20o bWF4KHRocmVhZHN0cnVjdCwga2V5PWxhbWJkYSB4OiB4WydkYXRlJ10pWydkYXRlJ10udXRj dGltZXR1cGxlKCkpCiAgICAgaWYgJ0hUVFBfSUZfTU9ESUZJRURfU0lOQ0UnIGluIHJlcXVl c3QuTUVUQSBhbmQgbm90IHNldHRpbmdzLkRFQlVHOgogICAgICAgICBpbXMgPSBwYXJzZV9o dHRwX2RhdGVfc2FmZShyZXF1ZXN0Lk1FVEEuZ2V0KCJIVFRQX0lGX01PRElGSUVEX1NJTkNF IikpCi0gICAgICAgIGlmIGltcyA+PSBuZXdlc3Q6CisgICAgICAgIGlmIGltcyBpcyBub3Qg Tm9uZSBhbmQgaW1zID49IG5ld2VzdDoKICAgICAgICAgICAgIHJldHVybiBIdHRwUmVzcG9u c2VOb3RNb2RpZmllZCgpCiAKICAgICByZXNwb25zZXMgPSBbdCBmb3IgdCBpbiB0aHJlYWRz dHJ1Y3QgaWYgdFsncGFyZW50aWQnXSA9PSBtLmlkXQotLSAKMi41NC4wCgo= --------------0LM0L320wuREcc9Yg6O4dJJM--