Paweł Janicki created THRIFT-3226:
-------------------------------------

             Summary: Fix TNamedPipeServer trapped in loop on accept
                 Key: THRIFT-3226
                 URL: https://issues.apache.org/jira/browse/THRIFT-3226
             Project: Thrift
          Issue Type: Bug
            Reporter: Paweł Janicki
            Priority: Critical


TNamedPipeServer can trap itself in infinite loop if the client closed Pipe 
before server instantiated TPipe object in NamedPipeServer::acceptImpl().

The accept loop waits for connected client on GetOverlappedResult(Pipe_.h , ..) 
then wraps the connected pipe client hande into TPipe object, opens another 
pipe handle to wait for next client nd returns the newly created pipe object.

TPipe object may throw on c-tor. If so the new pipe instance for next client 
will not be created. If accept is called with no inital valid pipe handle it 
throws and restarts. It happens then forever with no possiblity to interrupt.

To solve the issue, the case when TPipe throws should be handled. The failed 
connection should be dropped and new pipe created and wait for next client 
repeated.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to