SDL: Disable cache in python http server

From 6607a3cface756a1b89f0dc97a86d391c10033aa Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 14 Aug 2023 03:50:03 +0200
Subject: [PATCH] Disable cache in python http server
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Érico Porto <ericoporto2008@gmail.com>
---
 test/emscripten/server.py | 34 +++++++++++++++++++++-------------
 1 file changed, 21 insertions(+), 13 deletions(-)

diff --git a/test/emscripten/server.py b/test/emscripten/server.py
index be751725dc3b..7787e3b9e488 100755
--- a/test/emscripten/server.py
+++ b/test/emscripten/server.py
@@ -3,13 +3,15 @@
 # Based on http/server.py from Python
 
 from argparse import ArgumentParser
+import contextlib
 from http.server import SimpleHTTPRequestHandler
+from http.server import ThreadingHTTPServer
+import socket
 from socketserver import TCPServer
 
 
-def serve_forever(port: int, ServerClass):
-    handler = SimpleHTTPRequestHandler
-    handler.extensions_map = {
+class MyHTTPRequestHandler(SimpleHTTPRequestHandler):
+    extensions_map = {
         ".manifest": "text/cache-manifest",
         ".html": "text/html",
         ".png": "image/png",
@@ -21,14 +23,25 @@ def serve_forever(port: int, ServerClass):
         "": "application/octet-stream",
     }
 
+    def end_headers(self):
+        self.send_my_headers()
+        SimpleHTTPRequestHandler.end_headers(self)
+
+    def send_my_headers(self):
+        self.send_header("Cache-Control", "no-cache, no-store, must-revalidate")
+        self.send_header("Pragma", "no-cache")
+        self.send_header("Expires", "0")
+
+
+def serve_forever(port: int, ServerClass):
+    handler = MyHTTPRequestHandler
+
     addr = ("0.0.0.0", port)
     HandlerClass = SimpleHTTPRequestHandler
     with ServerClass(addr, handler) as httpd:
         host, port = httpd.socket.getsockname()[:2]
         url_host = f"[{host}]" if ":" in host else host
-        print(
-            f"Serving HTTP on {host} port {port} (http://{url_host}:{port}/) ..."
-        )
+        print(f"Serving HTTP on {host} port {port} (http://{url_host}:{port}/) ...")
         try:
             httpd.serve_forever()
         except KeyboardInterrupt:
@@ -42,16 +55,11 @@ def main():
     parser.add_argument("-d", dest="directory", type=str, default=None)
     args = parser.parse_args()
 
-    import contextlib
-    import http.server
-    import socket
-
-    class DualStackServer(http.server.ThreadingHTTPServer):
+    class DualStackServer(ThreadingHTTPServer):
         def server_bind(self):
             # suppress exception when protocol is IPv4
             with contextlib.suppress(Exception):
-                self.socket.setsockopt(
-                    socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
+                self.socket.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
             return super().server_bind()
 
         def finish_request(self, request, client_address):