]> code.delx.au - pymsnt/blobdiff - src/tlib/msn/msnw.py
Messages sent to offline contacts should be bounced properly now.
[pymsnt] / src / tlib / msn / msnw.py
index ad693cd953485213d4dace1628bc81acefb69f69..2855c0c03edd5ae0d6e9daf407fc6a9020345139 100644 (file)
@@ -469,13 +469,8 @@ class SwitchboardSessionBase(msn.SwitchboardClient):
                self.funcBuffer = []
                self.ready = False
 
-       def __del__(self):
-               self.ready = False
-               LogEvent(INFO, self.ident)
-               del self.msncon
-               self.transport.disconnect()
-       
        def connectionLost(self, reason):
+               LogEvent(INFO, self.ident)
                self.ready = False
                self.msncon = None
                self.msnobj = None
@@ -591,7 +586,7 @@ class MultiSwitchboardSession(SwitchboardSessionBase):
        def __init__(self, msncon):
                """ Automatically creates a new switchboard connection to the server """
                SwitchboardSessionBase.__init__(self, msncon)
-               self.ident = (self.msncon.ident, self)
+               self.ident = (self.msncon.ident, repr(self))
                self.contactCount = 0
                self.groupchat = None
                self.connect()
@@ -642,13 +637,14 @@ class OneSwitchboardSession(SwitchboardSessionBase):
                self.chattingUsers = []
                self.timeout = None
        
-       def __del__(self):
+       def connectionLost(self, reason):
                if self.timeout:
                        self.timeout.cancel()
                self.timeout = None
                for message, noerror in self.messageBuffer:
                        if not noerror:
                                self.failedMessage(message)
+               SwitchboardSessionBase.connectionLost(self, reason)
 
        def _ready(self):
                LogEvent(INFO, self.ident)
@@ -682,6 +678,7 @@ class OneSwitchboardSession(SwitchboardSessionBase):
                                LogEvent(INFO, self.ident, "User has not joined after 30 seconds.")
                                del self.msncon.switchboardSessions[self.remoteUser]
                                self.timeout = None
+                               self.transport.loseConnection()
                        d = self.inviteUser(self.remoteUser)
                        d.addErrback(failCB)
                        self.timeout = reactor.callLater(30.0, failCB)