Hi Martin,

On June 14, 2018 at 8:29:45 AM, Martin van Es (mrvanes@gmail.com) wrote:

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


I think one problem here is that your WebSSOFactory is not a TimeoutFactory (https://twistedmatrix.com/documents/current/api/twisted.protocols.policies.TimeoutFactory.html).

You have to pass a TimeoutFactory to the TimeoutProtocol in order for it to work with the LineReceiver you are wrapping, otherwise the timeout value will not be set; a regular Factory’s buildProtocol method would not know that it needs to pass the timeout to the TimeoutProtocol.

Hope this helps,

Daniel