]> code.delx.au - pymsnt/commitdiff
Declines now work in backend
authorjamesbunton <jamesbunton@55fbd22a-6204-0410-b2f0-b6c764c7e90a>
Sat, 10 Dec 2005 11:34:36 +0000 (11:34 +0000)
committerjamesbunton <jamesbunton@55fbd22a-6204-0410-b2f0-b6c764c7e90a>
Sat, 10 Dec 2005 11:34:36 +0000 (11:34 +0000)
git-svn-id: http://delx.cjb.net/svn/pymsnt/trunk@47 55fbd22a-6204-0410-b2f0-b6c764c7e90a

committer: jamesbunton <jamesbunton@55fbd22a-6204-0410-b2f0-b6c764c7e90a>

src/tlib/msn/msn.py
src/tlib/msn/test_msn.py

index 02adcdd457142f5a9fecd1a4805a54cfa41deb58..db75850bd4ac0f0a9f095e2db6201b511c482d09 100644 (file)
@@ -2053,12 +2053,13 @@ class SwitchboardClient(MSNEventBase):
         except KeyError:
             log.msg('Received munged file transfer request ... ignoring.')
             return 0
-        import msnft
+        raise NotImplementedError
         self.gotSendRequest(msnft.MSNFTP_Receive(filename, filesize, message.userHandle, cookie, connectivity, self))
         return 1
 
     def _handleP2PMessage(self, message):
         """ helper method for msnslp messages (file transfer & avatars) """
+        if not message.getHeader("P2P-Dest") == self.userHandle: return
         packet = message.message
         binaryFields = BinaryFields(packet=packet)
         if binaryFields[0] != 0:
@@ -2867,7 +2868,9 @@ class SLPLink_FileReceive(SLPLink_Receive, FileReceive):
         FileReceive.__init__(self, filename, filesize, remoteUser)
 
     def reject(self):
-        pass
+        # Send a 603 decline
+        self.sendMSNSLPResponse("603 Decline")
+        self.killLink()
 
     def accept(self, consumer):
         FileReceive.accept(self, consumer)
index 5e55e1ac7729c06ee5bb35a07f83058ff80cf53a..bcf26007febafb89b2f99dd74d876954514cf664 100644 (file)
@@ -1023,7 +1023,7 @@ class SwitchboardP2PTests(unittest.TestCase):
         # Check that client2 got the avatar
         self.failUnless((self.gotAvatar), "Failed to transfer avatar")
 
-    def testFiles(self):
+    def testFilesHappyPath(self):
         fileData = self._generateData()
         self.gotFile = False
 
@@ -1049,13 +1049,41 @@ class SwitchboardP2PTests(unittest.TestCase):
             self.gotFile = (data == fileData)
         fileBuffer = msn.StringBuffer(finished)
         fileReceive = self.client1.fileReceive
+        self.failUnless((fileReceive.filename == "myfile.txt" and fileReceive.filesize == len(fileData)), "Filename or length wrong.")
         fileReceive.accept(fileBuffer)
 
         # Lets transfer!!
-        self._loop(100)
+        self._loop(10)
 
         self.failUnless((self.gotFile), "Failed to transfer file")
 
+    def testFilesDeclinePath(self):
+        fileData = self._generateData()
+        self.gotDecline = False
+
+        # Send the file (client2->client1)
+        msnContact = msn.MSNContact(userHandle='foo1@bar.com', caps=msn.MSNContact.MSNC1)
+        fileSend, d = self.client2.sendFile(msnContact, "myfile.txt", len(fileData))
+        def accepted((yes,)):
+            self.failUnless((not yes), "Failed to understand a decline.")
+            self.gotDecline = True
+        def failed():
+            raise "TransferError"
+        d.addCallback(accepted)
+        d.addErrback(failed)
+
+        # Let the request get pushed to client1
+        self._loop(10)
+
+        # Decline the file
+        fileReceive = self.client1.fileReceive
+        fileReceive.reject()
+
+        # Let the decline get pushed to client2
+        self._loop(10)
+
+        self.failUnless((self.gotDecline), "Failed to understand a decline, ignored.")
+
 
 ################
 # MSNFTP tests #