On Mar 28, 2013, at 9:24 AM, Michael Williamson <williamson.micha...@gmail.com> wrote:
> Hi, I'm having an issue where a tls connection never seems to shutdown > properly, and as a result, all the associated cleanup never happens. > > Basically we're trying to implement a jabber client and allow the user to > sign out and then re-sign back in without completely quitting the program. > When the user tries to sign back in, Twisted goes nuts because the original > connection was never shutdown properly. > > So, I traced through the code with the debugger and I came to the > _shutdownTLS() function in tls.py. I believe that what's supposed to happen > is that the first time through, the self._tlsConnection.shutdown() returns > False because the shutdown is initiated. Then, when the 2nd part of the > shutdown handshake comes back from the server, dataReceived is called, which > calls shutdownTLS again, and then the cleanup can continue. > > The problem is that after the initial call to shutdownTLS, I never see > anymore data from the server. I'm not sure if it's a server issue (we're > just connecting to the Google jabber servers) where they don't close down > their SSL connections correctly, or if I'm just doing something silly. So > anyway, I could solve this by overriding a bunch of stuff and ensuring that > self.transport.loseConnection() gets called no matter what, even when the > server doesn't respond with the second part of the close handshake, but I > figured I'd ask here first. > > So, any TLS experts out there? Thanks for any help or information - I really > appreciate it, Sadly I don't know enough about TLS specifics to tell you for sure. It sounds like you may have spotted a bug. More investigation is required though. Does .abortConnection() do what you expect? In your current problematic scenario, does the TCP connection to your peer stay alive? -glyph _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python