From 293e9862dc58663f88e00bda8e8b3dde4b00adb7 Mon Sep 17 00:00:00 2001 From: James Bunton Date: Sun, 29 Jul 2007 17:18:11 +1000 Subject: [PATCH] Handle new MSN accounts correctly --- src/legacy/msn/msn.py | 44 +++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/legacy/msn/msn.py b/src/legacy/msn/msn.py index c271423..ddc13d2 100644 --- a/src/legacy/msn/msn.py +++ b/src/legacy/msn/msn.py @@ -1221,38 +1221,37 @@ class NotificationClient(MSNEventBase): self._setStateData('lst_sofar',sofar) def handle_BLP(self, params): - # check to see if this is in response to a SYN - if self._getState() == 'SYNC': - self._getStateData('list').privacy = listCodeToID[params[0].lower()] - else: + # If this is in response to a SYN, then there will be a transaction ID + try: id = int(params[0]) self.factory.contacts.privacy = listCodeToID[params[1].lower()] self._fireCallback(id, params[1]) + except ValueError: + self._getStateData('list').privacy = listCodeToID[params[0].lower()] def handle_GTC(self, params): - # check to see if this is in response to a SYN - if self._getState() == 'SYNC': - if params[0].lower() == "a": self._getStateData('list').autoAdd = 0 - elif params[0].lower() == "n": self._getStateData('list').autoAdd = 1 - else: raise MSNProtocolError, "Invalid Paramater for GTC" # debug - else: + # If this is in response to a SYN, then there will be a transaction ID + try: id = int(params[0]) if params[1].lower() == "a": self._fireCallback(id, 0) elif params[1].lower() == "n": self._fireCallback(id, 1) else: raise MSNProtocolError, "Invalid Paramater for GTC" # debug + except ValueError: + if params[0].lower() == "a": self._getStateData('list').autoAdd = 0 + elif params[0].lower() == "n": self._getStateData('list').autoAdd = 1 + else: raise MSNProtocolError, "Invalid Paramater for GTC" # debug def handle_SYN(self, params): id = int(params[0]) - self._setStateData('phone', []) # Always needs to be set - if params[3] == 0: # No LST will be received. New account? + contacts = MSNContactList() + self._setStateData('list', contacts) + self._setStateData('phone', []) + self._setStateData('lst_reply', int(params[3])) + self._setStateData('lsg_reply', int(params[4])) + self._setStateData('lst_sofar', 0) + if params[3] == "0": # No LST will be received. New account? self._setState('SESSION') - self._fireCallback(id, None, None) - else: - contacts = MSNContactList() - self._setStateData('list', contacts) - self._setStateData('lst_reply', int(params[3])) - self._setStateData('lsg_reply', int(params[4])) - self._setStateData('lst_sofar', 0) + self._fireCallback(id, contacts, []) def handle_LSG(self, params): if self._getState() == 'SYNC': @@ -1261,10 +1260,11 @@ class NotificationClient(MSNEventBase): def handle_PRP(self, params): if params[1] == "MFN": self._fireCallback(int(params[0])) - elif self._getState() == 'SYNC': - self._getStateData('phone').append((params[0], unquote(params[1]))) else: - self._fireCallback(int(params[0]), int(params[1]), unquote(params[3])) + try: + self._fireCallback(int(params[0]), int(params[1]), unquote(params[3])) + except ValueError: + self._getStateData('phone').append((params[0], unquote(params[1]))) def handle_BPR(self, params): numParams = len(params) -- 2.39.2