@@ -46,6 +46,7 @@ def __init__(self, *args: Any, **kwargs: Any):
46
46
)
47
47
self .plugins .append (plugin )
48
48
self ._upstream_proxy_pass : Optional [str ] = None
49
+ self ._needs_upstream : bool = False
49
50
50
51
def do_upgrade (self , request : HttpParser ) -> bool :
51
52
"""Signal web protocol handler to not upgrade websocket requests by default."""
@@ -72,8 +73,6 @@ def handle_request(self, request: HttpParser) -> None:
72
73
raise HttpProtocolException ('before_routing closed connection' )
73
74
request = r
74
75
75
- needs_upstream = False
76
-
77
76
# routes
78
77
for plugin in self .plugins :
79
78
for route in plugin .routes ():
@@ -84,7 +83,7 @@ def handle_request(self, request: HttpParser) -> None:
84
83
self .choice = Url .from_bytes (
85
84
random .choice (route [1 ]),
86
85
)
87
- needs_upstream = True
86
+ self . _needs_upstream = True
88
87
break
89
88
# Dynamic routes
90
89
elif isinstance (route , str ):
@@ -93,7 +92,7 @@ def handle_request(self, request: HttpParser) -> None:
93
92
choice = plugin .handle_route (request , pattern )
94
93
if isinstance (choice , Url ):
95
94
self .choice = choice
96
- needs_upstream = True
95
+ self . _needs_upstream = True
97
96
self ._upstream_proxy_pass = str (self .choice )
98
97
elif isinstance (choice , memoryview ):
99
98
self .client .queue (choice )
@@ -107,7 +106,7 @@ def handle_request(self, request: HttpParser) -> None:
107
106
else :
108
107
raise ValueError ('Invalid route' )
109
108
110
- if needs_upstream :
109
+ if self . _needs_upstream :
111
110
assert self .choice and self .choice .hostname
112
111
port = (
113
112
self .choice .port or DEFAULT_HTTP_PORT
@@ -150,10 +149,10 @@ def handle_request(self, request: HttpParser) -> None:
150
149
)
151
150
152
151
def on_client_connection_close (self ) -> None :
153
- if self .upstream and not self .upstream .closed :
152
+ if self ._needs_upstream and self . upstream and not self .upstream .closed :
154
153
logger .debug ('Closing upstream server connection' )
155
154
self .upstream .close ()
156
- self .upstream = None
155
+ self .upstream = None
157
156
158
157
def on_client_data (
159
158
self ,
0 commit comments