When the generated service processor waits on a new message to arrive in the TProcessorImpl.Process() function, it treats all exceptions identically, causing the function to return False when an exception is raised. When returning false, the server treats this as an error, aborts the processing loop and subsequently aborts the connection, tears down all connection information and then waits for a new connection.
However, this is undesired in the situation where a message hasn't arrived for longer than the configured timeout of the connection. In this instance, the server shouldn't consider the timeout to be an error, because it is desired to have the server continue running even when an RPC call hasn't been received in longer than the duration of the timeout.
The patch fixes this issue by catching the timeout exception and returning success even when a timeout occurs, allowing the server to continue execution with the current connection. This behavior mirrors what happens in the C++ library in TConnectedClient.cpp, where in TConnectedClient.run(), TIMED_OUT exception types don't cause the processing loop to abort.