[Twisted-Python] M2Crypto+Twisted, part 2
Jp Calderone
exarkun at divmod.com
Wed Dec 8 10:04:46 EST 2004
On Tue, 07 Dec 2004 17:46:52 -0800, Heikki Toivonen <heikki at osafoundation.org> wrote:
>A while back I integrated M2Crypto into Twisted, but the architecture
> was not deemed good then (it was adding more of the SSL cruft in tcp.py
> etc.).
>
> James Knight pointed me to TLS Lite, which had achieved similar
> functionality by using ProtocolWrapper and WrappingFactory and all the
> code was outside of Twisted. (Thanks James!)
>
> I've now got an implementation of M2Crypto + Twisted integration using
> the TLS Lite approach - no changes in Twisted required. (Client only for
> now and not yet fully cleaned up, but all the important pieces should be
> there.)
>
> However, I've run into some problems and I am not sure if they are bugs
> in Twisted or if I am using these interfaces wrong. Maybe you can help.
>
> The most interesting piece of the code is my TLSProtocolWrapper that
> inherits from ProtocolWrapper. See
> http://lxr.osafoundation.org/source/internal/m2crypto/M2Crypto/SSL/TwistedProtocolWrapper.py
>
> Now, this seems to works perfectly with the echoclient samples when the
> SSL connection has no errors.
>
> When there is an error in the SSL connection, and I call
> connectionLost(), I end up with a traceback that feels like it might be
> a Twisted bug. Or if I am not allowed to call that, how do I signal that
> I want to break the connection? Here's the traceback:
You should call proto.transport.loseConnection() instead of proto.connectionLost(). The former indicates to the reactor that the connection should be dropped, the latter is a callback that the reactor invokes to tell you that the connection has been dropped.
Jp
More information about the Twisted-Python
mailing list