
Hi, I'm trying to timeout a really simple LineReceiver protocol. It's function is to connect to a daemon, receive a line that's to be displayed to an end-user upon which the user should undertake some action. The action will trigger a second line (fail/success) at which point the daemon will close the connection. If, however, the end-user does not follow-up on the first challenge I want the script to timeout with a failed result. Now, I have the LineReceiver do exactly what I want, but I can't for the life of me understand how I should "wrap" it in the TimoutProtocol so that it disconnects after a couple of seconds? This is my Factory: class WebSSOFactory(ClientFactory): pamh = None client = None def __init__(self, pamh): self.pamh = pamh def clientConnectionLost(self, connector, reason): reactor.stop() def buildProtocol(self, addr): client = WebSSOClient() #client = TimeoutProtocol(self, WebSSOClient, 5) client.pamh = self.pamh self.client = client return client And this is the protocol: class WebSSOClient(LineReceiver): line = None pamh = None state = 'start' def __init__(self): print("__init__") self.setTimeout(5) def lineReceived(self, line): print("lineReceived") self.line = line if self.state == 'start': self.pamh.conversation(self.pamh.Message(self.pamh.PAM_PROMPT_ECHO_OFF, "Visit http://***/login/%s to login\nand press <enter> to continue." % line)) self.state = None else: self.transport.loseConnection() Before anyone starts to scream http (no s): This is all test/debug. I want the timeout to work before I deploy to something more serious. The client is loaded straightforward using a reactor.connectTCP() with the instantiated factory object. Best regards, Martin -- If 'but' was any useful, it would be a logic operator