diff -ruN papyon-0.5.1//debian/changelog papyon-0.5.2//debian/changelog --- papyon-0.5.1//debian/changelog 2010-10-24 13:02:30.000000000 +0500 +++ papyon-0.5.2//debian/changelog 2010-10-24 13:14:12.722302153 +0500 @@ -1,3 +1,13 @@ +papyon (0.5.2-0ubuntu1) maverick-proposed; urgency=low + + * new upstream release. + - cannot see msn contacts (LP: #665526) + + * debian/patches/lp_663670.patch. + - dropped, fix in latest source + + -- Omer Akram Sun, 24 Oct 2010 13:07:45 +0500 + papyon (0.5.1-0ubuntu2) maverick-proposed; urgency=low * debian/patches/lp_663670.patch diff -ruN papyon-0.5.1//debian/patches/lp_663670.patch papyon-0.5.2//debian/patches/lp_663670.patch --- papyon-0.5.1//debian/patches/lp_663670.patch 2010-10-24 13:02:30.000000000 +0500 +++ papyon-0.5.2//debian/patches/lp_663670.patch 1970-01-01 05:00:00.000000000 +0500 @@ -1,13 +0,0 @@ -diff --git a/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py b/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py -index 73c1127..42d7497 100644 ---- a/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py -+++ b/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py -@@ -21,7 +21,7 @@ - import xml.sax.saxutils as xml - - class LiveService(object): -- CONTACTS = ("contacts.msn.com", "?fs=1&id=24000&kv=7&rn=93S9SWWw&tw=0&ver=2.1.6000.1") -+ CONTACTS = ("contacts.msn.com", "MBI") - MESSENGER = ("messenger.msn.com", "?id=507") - MESSENGER_CLEAR = ("messengerclear.live.com", "MBI_KEY_OLD") - MESSENGER_SECURE = ("messengersecure.live.com", "MBI_SSL") diff -ruN papyon-0.5.1//debian/patches/series papyon-0.5.2//debian/patches/series --- papyon-0.5.1//debian/patches/series 2010-10-24 13:02:30.000000000 +0500 +++ papyon-0.5.2//debian/patches/series 1970-01-01 05:00:00.000000000 +0500 @@ -1 +0,0 @@ -lp_663670.patch diff -ruN papyon-0.5.1//NEWS papyon-0.5.2//NEWS --- papyon-0.5.1//NEWS 2010-09-11 02:42:39.000000000 +0500 +++ papyon-0.5.2//NEWS 2010-10-21 19:16:54.000000000 +0500 @@ -1,3 +1,13 @@ +papyon-0.5.2 (2010-10-21) +========================= + +Fixes: + * Use the right policy reference when requesting security token (fdo #31004) + * Set the peer end-points before requesting his display picture (fdo #30411) + * Don't queue all P2P chunks right away when using SB transport (fdo #29512) + * Don't send invalid command when contact is in Allow and Block lists + * Don't fail when current media that is not music (fdo #30625) + papyon-0.5.1 (2010-09-10) ========================= diff -ruN papyon-0.5.1//papyon/__init__.py papyon-0.5.2//papyon/__init__.py --- papyon-0.5.1//papyon/__init__.py 2010-09-11 02:42:58.000000000 +0500 +++ papyon-0.5.2//papyon/__init__.py 2010-10-21 19:16:54.000000000 +0500 @@ -26,7 +26,7 @@ @group Network Layer: gnet """ -version = (0, 5, 1) +version = (0, 5, 2) __version__ = ".".join(str(x) for x in version) __author__ = "Youness Alaoui " diff -ruN papyon-0.5.1//papyon/msnp/notification.py papyon-0.5.2//papyon/msnp/notification.py --- papyon-0.5.1//papyon/msnp/notification.py 2010-09-11 02:08:36.000000000 +0500 +++ papyon-0.5.2//papyon/msnp/notification.py 2010-10-21 19:16:54.000000000 +0500 @@ -538,9 +538,8 @@ if utl != "": msn_object = papyon.p2p.MSNObject.parse(self._client, utl) - if len(cm_parts) < 3 or cm_parts[2] == '0': - cm = None - elif cm_parts[1] == 'Music' and cm_parts[2] == '1': + cm = None + if len(cm_parts) >= 6 and cm_parts[1] == 'Music' and cm_parts[2] == '1': cm = (cm_parts[4], cm_parts[5]) eps = tree.findall("./EndpointData") @@ -562,11 +561,11 @@ contacts = self.__search_account(account, network_id) for contact in contacts: contact._add_flag(profile.ContactFlag.EXTENDED_PRESENCE_KNOWN) + contact._server_property_changed("end-points", end_points) contact._server_property_changed("msn-object", msn_object) contact._server_property_changed("current-media", cm) contact._server_property_changed("personal-message", pm) contact._server_property_changed("signature-sound", ss) - contact._server_property_changed("end-points", end_points) def _handle_UUN(self, command): # UBN acknowledgment pass @@ -769,9 +768,16 @@ address_book.profile.display_name) contacts = address_book.contacts.group_by_domain() + mask = ~(profile.Membership.REVERSE | profile.Membership.PENDING) + + for contact in address_book.contacts: + if (contact.memberships & mask & ~profile.Membership.FORWARD) == \ + (profile.Membership.ALLOW | profile.Membership.BLOCK): + logger.warning("Contact is on both Allow and Block list; " \ + "removing from Allow list (%s)" % contact.account) + contact._remove_membership(profile.Membership.ALLOW) payloads = [''] - mask = ~(profile.Membership.REVERSE | profile.Membership.PENDING) for domain, contacts in contacts.iteritems(): payloads[-1] += '' % domain for contact in contacts: diff -ruN papyon-0.5.1//papyon/msnp2p/session.py papyon-0.5.2//papyon/msnp2p/session.py --- papyon-0.5.1//papyon/msnp2p/session.py 2010-08-12 21:06:03.000000000 +0500 +++ papyon-0.5.2//papyon/msnp2p/session.py 2010-10-21 19:16:54.000000000 +0500 @@ -204,6 +204,7 @@ def _decline_transreq(self, transreq): body = SLPTransferResponseBody(session_id=self._id) self._respond_transreq(transreq, 603, body) + self._dispose() def _close(self, context=None, reason=None): body = SLPSessionCloseBody(context=context, session_id=self._id, diff -ruN papyon-0.5.1//papyon/msnp2p/transport/base.py papyon-0.5.2//papyon/msnp2p/transport/base.py --- papyon-0.5.1//papyon/msnp2p/transport/base.py 2010-09-03 21:40:30.000000000 +0500 +++ papyon-0.5.2//papyon/msnp2p/transport/base.py 2010-10-21 19:16:54.000000000 +0500 @@ -97,10 +97,7 @@ self._queue_lock.acquire() self._data_blob_queue.append((peer, peer_guid, blob)) self._queue_lock.release() - - if self._source is None: - self._source = gobject.timeout_add(200, self._process_send_queue) - self._process_send_queue() + self._start_processing() def cleanup(self, session_id): # remove this session's blobs from the data queue @@ -116,6 +113,9 @@ def close(self): self._transport_manager._unregister_transport(self) + def _ready_to_send(self): + raise NotImplementedError + def _send_chunk(self, peer, peer_guid, chunk): raise NotImplementedError @@ -168,7 +168,7 @@ else: # data chunk (buffered by the transport manager) self.emit("chunk-received", chunk) - self._process_send_queue() + self._start_processing() def _on_signaling_chunk_received(self, chunk): blob_id = chunk.blob_id @@ -187,17 +187,30 @@ def _on_chunk_sent(self, chunk): self.emit("chunk-sent", chunk) + self._start_processing() + + def _start_processing(self): + if self._source is None: + self._source = gobject.timeout_add(200, self._process_send_queue) self._process_send_queue() + def _stop_processing(self): + if self._source is not None: + gobject.source_remove(self._source) + self._source = None + def _process_send_queue(self): if not self._queue_lock.acquire(False): return True if len(self._data_blob_queue) == 0: self._queue_lock.release() - if self._source is not None: - gobject.source_remove(self._source) - self._source = None + self._stop_processing() return False + if not self._ready_to_send(): + logger.info("Transport is not ready to send, bail out") + self._queue_lock.release() + self._stop_processing() + return True sync = self._first self._first = False diff -ruN papyon-0.5.1//papyon/msnp2p/transport/switchboard.py papyon-0.5.2//papyon/msnp2p/transport/switchboard.py --- papyon-0.5.1//papyon/msnp2p/transport/switchboard.py 2010-09-11 02:08:36.000000000 +0500 +++ papyon-0.5.2//papyon/msnp2p/transport/switchboard.py 2010-10-21 19:16:54.000000000 +0500 @@ -33,7 +33,11 @@ class SwitchboardP2PTransport(BaseP2PTransport, SwitchboardHandler): + + MAX_OUTSTANDING_SENDS = 5 + def __init__(self, client, switchboard, contacts, peer, peer_guid, transport_manager): + self._oustanding_sends = 0 self._peer = peer self._peer_guid = peer_guid SwitchboardHandler.__init__(self, client, switchboard, contacts) @@ -91,19 +95,24 @@ return None return message.headers[header].split(';', 1)[1][1:-1] + def _ready_to_send(self): + return (self._oustanding_sends < self.MAX_OUTSTANDING_SENDS) + def _send_chunk(self, peer, peer_guid, chunk): logger.debug(">>> %s" % repr(chunk)) - if self.version is 1: + if chunk.version is 1 or peer_guid is None: headers = {'P2P-Dest': self.peer.account} - elif self.version is 2: + elif chunk.version is 2: headers = {'P2P-Src' : self._client.profile.account + ";{" + self._client.machine_guid + "}", 'P2P-Dest': peer.account + ";{" + peer_guid + "}"} content_type = 'application/x-msnmsgrp2p' body = str(chunk) + struct.pack('>L', chunk.application_id) + self._oustanding_sends += 1 self._send_message(content_type, body, headers, - MessageAcknowledgement.MSNC, (self._on_chunk_sent, chunk)) + MessageAcknowledgement.MSNC, (self._on_message_sent, chunk), + (self._on_message_error, chunk)) def _on_message_received(self, message): version = 1 @@ -121,6 +130,13 @@ logger.debug("<<< %s" % repr(chunk)) self._on_chunk_received(self._peer, self._peer_guid, chunk) + def _on_message_sent(self, chunk): + self._oustanding_sends -= 1 + self._on_chunk_sent(chunk) + + def _on_message_error(self, chunk): + self._oustanding_sends -= 1 + def _on_switchboard_closed(self): pass diff -ruN papyon-0.5.1//papyon/msnp2p/transport/TLPv1.py papyon-0.5.2//papyon/msnp2p/transport/TLPv1.py --- papyon-0.5.1//papyon/msnp2p/transport/TLPv1.py 2010-08-12 21:06:03.000000000 +0500 +++ papyon-0.5.2//papyon/msnp2p/transport/TLPv1.py 2010-10-21 19:16:54.000000000 +0500 @@ -137,6 +137,10 @@ def blob_size(self): return self.header.blob_size + @property + def version(self): + return 1 + def is_control_chunk(self): return self.header.flags & 0xCF diff -ruN papyon-0.5.1//papyon/msnp2p/transport/TLPv2.py papyon-0.5.2//papyon/msnp2p/transport/TLPv2.py --- papyon-0.5.1//papyon/msnp2p/transport/TLPv2.py 2010-08-12 21:06:03.000000000 +0500 +++ papyon-0.5.2//papyon/msnp2p/transport/TLPv2.py 2010-10-21 19:16:54.000000000 +0500 @@ -257,6 +257,10 @@ return 0 return self.header.data_remaining + self.size + @property + def version(self): + return 2 + def is_control_chunk(self): return self.is_ack_chunk() or self.is_nak_chunk() or \ (self.require_ack() and self.size == 0) diff -ruN papyon-0.5.1//papyon/msnp2p/webcam.py papyon-0.5.2//papyon/msnp2p/webcam.py --- papyon-0.5.1//papyon/msnp2p/webcam.py 2010-08-12 21:06:03.000000000 +0500 +++ papyon-0.5.2//papyon/msnp2p/webcam.py 2010-10-21 19:16:54.000000000 +0500 @@ -32,6 +32,7 @@ import gobject import logging import base64 +import os import random from papyon.media import MediaCall, MediaCandidate, MediaCandidateEncoder, \ diff -ruN papyon-0.5.1//papyon/profile.py papyon-0.5.2//papyon/profile.py --- papyon-0.5.1//papyon/profile.py 2010-09-11 02:08:36.000000000 +0500 +++ papyon-0.5.2//papyon/profile.py 2010-10-21 19:16:54.000000000 +0500 @@ -566,6 +566,7 @@ self._id = "00000000-0000-0000-0000-000000000000" self._profile = "" + self._network_id = NetworkID.MSN self._display_name = self._account.split("@", 1)[0] self._privacy = Privacy.BLOCK self._end_point_name = "" diff -ruN papyon-0.5.1//papyon/service/description/AB/common.py papyon-0.5.2//papyon/service/description/AB/common.py --- papyon-0.5.1//papyon/service/description/AB/common.py 2010-06-09 23:29:11.000000000 +0500 +++ papyon-0.5.2//papyon/service/description/AB/common.py 2010-10-21 19:16:54.000000000 +0500 @@ -25,7 +25,7 @@ return """ - 996CDE1E-AA53-4477-B943-2BE802EA6166 + CFE80F9D-180F-4399-82AB-413F33A1FA11 false %s diff -ruN papyon-0.5.1//papyon/service/description/Sharing/common.py papyon-0.5.2//papyon/service/description/Sharing/common.py --- papyon-0.5.1//papyon/service/description/Sharing/common.py 2010-06-09 23:29:11.000000000 +0500 +++ papyon-0.5.2//papyon/service/description/Sharing/common.py 2010-10-21 19:16:54.000000000 +0500 @@ -27,7 +27,7 @@ return """ - 996CDE1E-AA53-4477-B943-2BE802EA6166 + CFE80F9D-180F-4399-82AB-413F33A1FA11 false %s diff -ruN papyon-0.5.1//papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py papyon-0.5.2//papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py --- papyon-0.5.1//papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py 2010-06-09 23:29:11.000000000 +0500 +++ papyon-0.5.2//papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py 2010-10-21 19:16:54.000000000 +0500 @@ -21,7 +21,7 @@ import xml.sax.saxutils as xml class LiveService(object): - CONTACTS = ("contacts.msn.com", "?fs=1&id=24000&kv=7&rn=93S9SWWw&tw=0&ver=2.1.6000.1") + CONTACTS = ("contacts.msn.com", "MBI") MESSENGER = ("messenger.msn.com", "?id=507") MESSENGER_CLEAR = ("messengerclear.live.com", "MBI_KEY_OLD") MESSENGER_SECURE = ("messengersecure.live.com", "MBI_SSL") diff -ruN papyon-0.5.1//papyon/sip/dialog.py papyon-0.5.2//papyon/sip/dialog.py --- papyon-0.5.1//papyon/sip/dialog.py 2010-09-11 02:08:36.000000000 +0500 +++ papyon-0.5.2//papyon/sip/dialog.py 2010-10-21 19:16:54.000000000 +0500 @@ -447,6 +447,7 @@ def _handle_reinvite_request(self, request): # 14.2 UAS Behavior (Modifying an Existing Session) + self.answer(request, 100) if self._state in ("INVITED", "REINVITED"): logger.warning("Already invited, can't handle incoming INVITE") self.answer(request, 500) @@ -468,6 +469,7 @@ return request def _handle_ack_request(self, request): + self._pending_incoming_requests.remove(request) # No need to answer self._state = "CONFIRMED" # CANCEL Method ---------------------------------------------------------- diff -ruN papyon-0.5.1//papyon/util/tlv.py papyon-0.5.2//papyon/util/tlv.py --- papyon-0.5.1//papyon/util/tlv.py 2010-08-12 21:06:03.000000000 +0500 +++ papyon-0.5.2//papyon/util/tlv.py 2010-10-21 19:16:54.000000000 +0500 @@ -61,8 +61,9 @@ size = 0 for (t, v) in self._data.items(): size += 2 + self._length_dict[t] - padding = 4 - (size % 4) - return size + padding + if (size % 4) != 0: + size += 4 - (size % 4) + return size def __str__(self): """Pack data in a string and add padding.""" @@ -72,8 +73,8 @@ l = self._length_dict[t] f = self.size_to_packed_format(l) string += struct.pack(">BB%s" % f, t, l, v) - padding = 4 - (len(string) % 4) - string += '\x00' * padding + if (len(string) % 4) != 0: + string += '\x00' * (4 - (len(string) % 4)) return string def parse(self, data, size): diff -ruN papyon-0.5.1//PKG-INFO papyon-0.5.2//PKG-INFO --- papyon-0.5.1//PKG-INFO 2010-09-11 02:50:03.000000000 +0500 +++ papyon-0.5.2//PKG-INFO 2010-10-21 19:19:01.000000000 +0500 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: papyon -Version: 0.5.1 +Version: 0.5.2 Summary: Python msn client library Home-page: http://telepathy.freedesktop.org/wiki/Papyon Author: Youness Alaoui