File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -319,6 +319,8 @@ def _handle_request_noblock(self):
319319 except :
320320 self .handle_error (request , client_address )
321321 self .shutdown_request (request )
322+ else :
323+ self .shutdown_request (request )
322324
323325 def handle_timeout (self ):
324326 """Called if no new request arrives within self.timeout.
Original file line number Diff line number Diff line change @@ -280,6 +280,30 @@ def test_tcpserver_bind_leak(self):
280280 socketserver .TCPServer ((HOST , - 1 ),
281281 socketserver .StreamRequestHandler )
282282
283+ def test_shutdown_request_called_if_verify_request_false (self ):
284+ # Issue #26309: BaseServer should call shutdown_request even if
285+ # verify_request is False
286+ shutdown_called = False
287+
288+ class MyServer (socketserver .TCPServer ):
289+ def verify_request (self , request , client_address ):
290+ return False
291+
292+ def shutdown_request (self , request ):
293+ nonlocal shutdown_called
294+ shutdown_called = True
295+ super ().shutdown_request (request )
296+
297+ def connect_to_server (proto , addr ):
298+ s = socket .socket (proto , socket .SOCK_STREAM )
299+ s .connect (addr )
300+ s .close ()
301+
302+ self .run_server (MyServer ,
303+ socketserver .StreamRequestHandler ,
304+ connect_to_server )
305+ self .assertEqual (shutdown_called , True )
306+
283307
284308class MiscTestCase (unittest .TestCase ):
285309
Original file line number Diff line number Diff line change @@ -186,6 +186,10 @@ Core and Builtins
186186Library
187187-------
188188
189+ - Issue #26309: In the "socketserver" module, shut down the request (closing
190+ the connected socket) when verify_request() returns false. Patch by Aviv
191+ Palivoda.
192+
189193- Issue #25939: On Windows open the cert store readonly in ssl.enum_certificates.
190194
191195- Issue #25995: os.walk() no longer uses FDs proportional to the tree depth.
You can’t perform that action at this time.
0 commit comments