- self._sendP2PACK(slpLink, binaryFields)
-
-
- def _sendP2PACK(self, slpLink, ackHeaders):
- binaryFields = BinaryFields()
- binaryFields[1] = slpLink.seqID.next()
- binaryFields[3] = ackHeaders[3]
- binaryFields[5] = BinaryFields.ACK
- binaryFields[6] = ackHeaders[1]
- binaryFields[7] = ackHeaders[6]
- binaryFields[8] = ackHeaders[3]
- self._sendP2PMessage(binaryFields, "", slpLink.remoteUser)
-
- def _sendMSNSLPCommand(self, command, slpLink, guid, context):
- msg = MSNSLPMessage()
- msg.create(method=command, to=slpLink.remoteUser, fro=self.userHandle, cseq=0, sessionGuid=slpLink.sessionGuid)
- msg.setData(sessionID=slpLink.sessionID, appID="1", guid=guid, context=b64enc(context + chr(0)))
- self._sendMSNSLPMessage(slpLink, msg)
-
- def _sendMSNSLPResponse(self, slpLink, response):
- msg = MSNSLPMessage()
- msg.create(status=response, to=slpLink.remoteUser, fro=self.userHandle, cseq=1, sessionGuid=slpLink.sessionGuid)
- msg.setData(sessionID=slpLink.sessionID)
- self._sendMSNSLPMessage(slpLink, msg)
-
- def _sendMSNSLPMessage(self, slpLink, msnSLPMessage):
- msgStr = str(msnSLPMessage)
- binaryFields = BinaryFields()
- binaryFields[1] = slpLink.seqID.next()
- binaryFields[3] = len(msgStr)
- binaryFields[4] = binaryFields[3]
- binaryFields[6] = random.randint(0, sys.maxint)
- self._sendP2PMessage(binaryFields, msgStr, msnSLPMessage.to)
-
- def _sendP2PMessage(self, binaryFields, msgStr, to):
- packet = binaryFields.packHeaders() + msgStr + binaryFields.packFooter()
-
- message = MSNMessage(message=packet)
- message.setHeader("Content-Type", "application/x-msnmsgrp2p")
- message.setHeader("P2P-Dest", to)
- message.ack = MSNMessage.MESSAGE_ACK_FAT
- self.sendMessage(message)
-