summary refs log tree commit diff
diff options
context:
space:
mode:
authorOlivier 'reivilibre <oliverw@matrix.org>2024-07-30 13:08:55 +0100
committerOlivier 'reivilibre <oliverw@matrix.org>2024-07-30 14:27:19 +0100
commit48d92ed0f6f61113457a713c3cb8ced5aaf06767 (patch)
tree18328f90e04a544ff04187818b27ad47fed145ab
parentSlightly simplify some tests whilst reducing 'Any'-typing (diff)
downloadsynapse-48d92ed0f6f61113457a713c3cb8ced5aaf06767.tar.xz
Make HTTP proxy support changes in Twisted 24.7.0rc1
-rw-r--r--synapse/http/proxy.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/synapse/http/proxy.py b/synapse/http/proxy.py
index 5b5ded757b..04d8b519fe 100644
--- a/synapse/http/proxy.py
+++ b/synapse/http/proxy.py
@@ -62,6 +62,15 @@ HOP_BY_HOP_HEADERS = {
     "Upgrade",
 }
 
+if hasattr(Headers, "_canonicalNameCaps"):
+    # Twisted < 24.7.0rc1
+    _canonicalHeaderName = Headers()._canonicalNameCaps
+else:
+    # Twisted >= 24.7.0rc1
+    # But note that `_encodeName` still exists on prior versions,
+    # it just encodes differently
+    _canonicalHeaderName = Headers()._encodeName
+
 
 def parse_connection_header_value(
     connection_header_value: Optional[bytes],
@@ -85,11 +94,10 @@ def parse_connection_header_value(
         The set of header names that should not be copied over from the remote response.
         The keys are capitalized in canonical capitalization.
     """
-    headers = Headers()
     extra_headers_to_remove: Set[str] = set()
     if connection_header_value:
         extra_headers_to_remove = {
-            headers._canonicalNameCaps(connection_option.strip()).decode("ascii")
+            _canonicalHeaderName(connection_option.strip()).decode("ascii")
             for connection_option in connection_header_value.split(b",")
         }