You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
TCP Sockets not closed by TCPServer and StreamRequestHandler #50497
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2009-06-28.21:14:13.794>created_at=<Date2009-06-09.16:55:37.459>labels= ['type-bug', 'library']
title='TCP Sockets not closed by TCPServer and StreamRequestHandler'updated_at=<Date2009-06-28.21:14:13.793>user='https://github.com/kristjanvalur'
When an error occurs in a StreamRequestHandler, its wfile and rfile
members are not closed. This causes the underlaying socket to stay
alive and and it is therefore not closed, even when the SocketServer
closes it in server.close_request(). This means that a client will not
know that there is no one listening on the other end.
This is due to incorrect error handling semantics in BaseRequestHandler.
This patch fixes the error handling in BaseRequestHandler, ensuring that
request.finish() is called when request.setup() has completed.
I also add an explicit socket.shutdown() in TCPServer.close_request() to
make sure that at least a half-close occurs even in the face of socket
reference leaks.
Activity
kristjanvalur commentedon Jun 9, 2009
When an error occurs in a StreamRequestHandler, its wfile and rfile
members are not closed. This causes the underlaying socket to stay
alive and and it is therefore not closed, even when the SocketServer
closes it in server.close_request(). This means that a client will not
know that there is no one listening on the other end.
This is due to incorrect error handling semantics in BaseRequestHandler.
This patch fixes the error handling in BaseRequestHandler, ensuring that
request.finish() is called when request.setup() has completed.
I also add an explicit socket.shutdown() in TCPServer.close_request() to
make sure that at least a half-close occurs even in the face of socket
reference leaks.