]> code.delx.au - pymsnt/blobdiff - src/legacy/msn/msn.py
Fixed bug with 64bit archictectures.
[pymsnt] / src / legacy / msn / msn.py
index d3da1e474145fecd93271d47a7ab4647acdf45b8..41b007176050bc98ae972f1189d9c58975466319 100644 (file)
@@ -113,6 +113,7 @@ MSN_MAX_MESSAGE      = 1664               # max message length
 MSN_CVR_STR          = "0x040c winnt 5.1 i386 MSNMSGR 7.0.0777 msmsgs"
 MSN_AVATAR_GUID      = "{A4268EEC-FEC5-49E5-95C3-F126696BDBF6}"
 MSN_MSNFTP_GUID      = "{5D3E02AB-6190-11D3-BBBB-00C04F795683}"
+MSN_MAXINT           = 2**31 - 1
 
 # auth constants
 LOGIN_SUCCESS  = 1
@@ -520,13 +521,18 @@ class MSNObject:
         e = parseText(s, True)
         if not e:
             return # Parse failed
-        self.creator = e.getAttribute("Creator")
-        self.size = int(e.getAttribute("Size"))
-        self.type = int(e.getAttribute("Type"))
-        self.location = e.getAttribute("Location")
-        self.friendly = e.getAttribute("Friendly")
-        self.sha1d = e.getAttribute("SHA1D")
-        self.text = s
+        try:
+            self.creator = e.getAttribute("Creator")
+            self.size = int(e.getAttribute("Size"))
+            self.type = int(e.getAttribute("Type"))
+            self.location = e.getAttribute("Location")
+            self.friendly = e.getAttribute("Friendly")
+            self.sha1d = e.getAttribute("SHA1D")
+            self.text = s
+        except TypeError:
+            self.setNull()
+        except ValueError:
+            self.setNull()
 
 
 class MSNContact:
@@ -1130,7 +1136,7 @@ class NotificationClient(MSNEventBase):
         msnContact.status = params[1]
         msnContact.screenName = unquote(params[3])
         if len(params) > 4: msnContact.caps = int(params[4])
-        if len(params) > 5:
+        if len(params) > 5 and params[5] != "0":
             self.handleAvatarHelper(msnContact, params[5])
         else:
             self.handleAvatarGoneHelper(msnContact)
@@ -1166,7 +1172,7 @@ class NotificationClient(MSNEventBase):
         msnContact.status = params[0]
         msnContact.screenName = unquote(params[2])
         if len(params) > 3: msnContact.caps = int(params[3])
-        if len(params) > 4:
+        if len(params) > 4 and params[4] != "0":
             self.handleAvatarHelper(msnContact, params[4])
         else:
             self.handleAvatarGoneHelper(msnContact)
@@ -2681,7 +2687,7 @@ class SeqID:
         if baseID:
             self.baseID = baseID
         else:
-            self.baseID = random.randint(1000, sys.maxint)
+            self.baseID = random.randint(1000, MSN_MAXINT)
         self.pos = -1
 
     def get(self):
@@ -2708,7 +2714,7 @@ class SLPLink:
     def __init__(self, remoteUser, switchboard, sessionID, sessionGuid):
         self.dataFlag = 0
         if not sessionID:
-            sessionID = random.randint(1000, sys.maxint)
+            sessionID = random.randint(1000, MSN_MAXINT)
         if not sessionGuid:
             sessionGuid = random_guid()
         self.remoteUser = remoteUser
@@ -2754,7 +2760,7 @@ class SLPLink:
         binaryFields[1] = self.seqID.next()
         binaryFields[3] = len(msgStr)
         binaryFields[4] = binaryFields[3]
-        binaryFields[6] = random.randint(1000, sys.maxint)
+        binaryFields[6] = random.randint(1000, MSN_MAXINT)
         self.sendP2PMessage(binaryFields, msgStr)
 
     def sendP2PMessage(self, binaryFields, msgStr):
@@ -2788,7 +2794,7 @@ class SLPLink_Send(SLPLink):
         binaryFields[1] = self.seqID.next()
         binaryFields[3] = 4
         binaryFields[4] = 4
-        binaryFields[6] = random.randint(1000, sys.maxint)
+        binaryFields[6] = random.randint(1000, MSN_MAXINT)
         binaryFields[9] = 1
         self.sendP2PMessage(binaryFields, chr(0) * 4)
 
@@ -2818,7 +2824,7 @@ class SLPLink_Send(SLPLink):
         binaryFields[3] = self.filesize
         binaryFields[4] = len(chunk)
         binaryFields[5] = self.dataFlag
-        binaryFields[6] = random.randint(1000, sys.maxint)
+        binaryFields[6] = random.randint(1000, MSN_MAXINT)
         binaryFields[9] = 1
         self.offset += len(chunk)
         self.sendP2PMessage(binaryFields, chunk)