From 87822a842626901d41bdce825cfb419c609f95c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 17 Sep 2024 21:33:00 +0200 Subject: [PATCH] tileserver: service unavailable if outdated tile from upstream --- src/c3nav/tileserver/wsgi.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/c3nav/tileserver/wsgi.py b/src/c3nav/tileserver/wsgi.py index 9e798147..f7545702 100644 --- a/src/c3nav/tileserver/wsgi.py +++ b/src/c3nav/tileserver/wsgi.py @@ -304,8 +304,13 @@ class TileServer: r = requests.get('%s/map/%d/%d/%d/%d/%d/%s.png' % (self.upstream_base, level, zoom, x, y, theme_id, access_cache_key), headers=self.auth_headers, auth=self.http_auth) - if r.status_code == 200 and r.headers['Content-Type'] == 'image/png': + if r.headers['ETag'] != tile_etag: + error = b'outdated tile from upstream' + start_response('503 Service Unavailable', [self.get_date_header(), + ('Content-Length', len(error)), + ('ETag', tile_etag)]) + return [error] self.cache.set(cache_key, r.content) return self.deliver_tile(start_response, tile_etag, r.content)