[Python-modules-commits] r19208 - in packages/papyon/trunk/debian (4 files)

bigon at users.alioth.debian.org bigon at users.alioth.debian.org
Thu Nov 10 08:21:33 UTC 2011


    Date: Thursday, November 10, 2011 @ 08:21:26
  Author: bigon
Revision: 19208

Use better patch that add support for redirect

Added:
  packages/papyon/trunk/debian/patches/01-add-redirect-support.patch
Modified:
  packages/papyon/trunk/debian/changelog
  packages/papyon/trunk/debian/patches/series
Deleted:
  packages/papyon/trunk/debian/patches/01-bypass-url-redirect.patch

Modified: packages/papyon/trunk/debian/changelog
===================================================================
--- packages/papyon/trunk/debian/changelog	2011-11-09 23:15:14 UTC (rev 19207)
+++ packages/papyon/trunk/debian/changelog	2011-11-10 08:21:26 UTC (rev 19208)
@@ -1,10 +1,10 @@
 papyon (0.5.5-3) UNRELEASED; urgency=high
 
-  * Add 01-bypass-url-redirect.patch patch to fix backtrace due to unexpected
-    redirect (Closes: #648163)
+  * High urgency to fix unusable package in testing
+  * Add 01-add-redirect-support.patch to add redirect support (Closes: #648163)
   * debian/control: Update Vcs-* fields to new URL
 
- -- Laurent Bigonville <bigon at debian.org>  Wed, 09 Nov 2011 11:09:55 +0100
+ -- Laurent Bigonville <bigon at debian.org>  Thu, 10 Nov 2011 09:06:09 +0100
 
 papyon (0.5.5-2) unstable; urgency=low
 

Added: packages/papyon/trunk/debian/patches/01-add-redirect-support.patch
===================================================================
--- packages/papyon/trunk/debian/patches/01-add-redirect-support.patch	                        (rev 0)
+++ packages/papyon/trunk/debian/patches/01-add-redirect-support.patch	2011-11-10 08:21:26 UTC (rev 19208)
@@ -0,0 +1,147 @@
+From: Louis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne at collabora.co.uk>
+Date: Tue, 08 Nov 2011 16:56:02 +0000
+Subject: bugfix: use the right server for AB and Sharing services and allow HTTP redirection (fdo #42689)
+
+---
+--- a/papyon/gnet/parser.py
++++ b/papyon/gnet/parser.py
+@@ -212,4 +212,3 @@
+         response.parse(self._receive_buffer)
+         self.emit("received", response)
+         self._reset_state()
+-
+--- a/papyon/gnet/protocol/HTTP.py
++++ b/papyon/gnet/protocol/HTTP.py
+@@ -25,6 +25,8 @@
+ from papyon.gnet.parser import HTTPParser
+ from papyon.gnet.proxy.factory import ProxyFactory
+ 
++from urlparse import urlsplit
++
+ import gobject
+ import base64
+ import logging
+@@ -71,7 +73,10 @@
+         self._transport = None
+         self._http_parser = None
+         self._outgoing_queue = []
++        self._redirected = False
+         self._waiting_response = False
++        self._parser_handles = []
++        self._transport_handles = []
+ 
+         if self._proxies and self._proxies.get('http', None):
+             if self._proxies['http'].type == 'http':
+@@ -100,17 +105,32 @@
+ 
+     def _setup_parser(self):
+         self._http_parser = HTTPParser(self._transport)
+-        self._http_parser.connect("received", self._on_response_received)
+-        self._transport.connect("notify::status", self._on_status_change)
+-        self._transport.connect("error", self._on_error)
+-        self._transport.connect("sent", self._on_request_sent)
++        self._parser_handles.append(self._http_parser.connect("received",
++            self._on_response_received))
++
++        self._transport_handles.append(self._transport.connect("notify::status",
++            self._on_status_change))
++        self._transport_handles.append(self._transport.connect("error",
++            self._on_error))
++        self._transport_handles.append(self._transport.connect("sent",
++            self._on_request_sent))
++
++    def _clean_transport(self):
++        if self._http_parser:
++            self._http_parser.disable()
++            for handle in self._parser_handles:
++                self._http_parser.disconnect(handle)
++            self._http_parser = None
++        if self._transport:
++            for handle in self._transport_handles:
++                self._transport.disconnect(handle)
+ 
+     def _on_status_change(self, transport, param):
+         if transport.get_property("status") == IoStatus.OPEN:
+             self._process_queue()
+         elif transport.get_property("status") == IoStatus.CLOSED and\
+                 (self._waiting_response or len(self._outgoing_queue) > 0) and\
+-                not self._errored:
++                not (self._errored or self._redirected):
+             self._waiting_response = False
+             self._setup_transport()
+ 
+@@ -124,23 +144,30 @@
+             return
+         if not self._waiting_response:
+             logger.warning("Received response but wasn't waiting for one")
++            logger.warning("<<< " + str(response))
+             return
+-        #if response.status in (301, 302): # UNTESTED: please test
+-        #    location = response.headers['Location']
+ 
+-        #    location = location.rsplit("://", 1)
+-        #    if len(location) == 2:
+-        #        scheme = location[0]
+-        #        location = location[1]
+-        #    if scheme == "http":
+-        #        location = location.rsplit(":", 1)
+-        #        self._host = location[0]
+-        #        if len(location) == 2:
+-        #            self._port = int(location[1])
+-        #        self._outgoing_queue[0].headers['Host'] = response.headers['Location']
+-        #        self._setup_transport()
+-        #        return
+         self._waiting_response = False
++
++        if response.status in (301, 302):
++            self.close()
++            location = response.headers['Location']
++            logger.info("Server moved to %s" % location)
++            logger.info("<<< " + str(response))
++
++            protocol, host, path, query, fragment = urlsplit(location)
++            self._redirected = True
++            self._outgoing_queue[0].headers['Host'] = host
++            try:
++                host, port = host.rsplit(":", 1)
++                port = int(port)
++            except:
++                port = None
++            self._host = host
++            self._redirected = False
++            self._setup_transport()
++            return
++
+         if len(self._outgoing_queue) > 0:
+             self._outgoing_queue.pop(0) # pop the request from the queue
+         if response.status >= 400:
+@@ -186,5 +213,7 @@
+         self._process_queue()
+ 
+     def close(self):
++        self._clean_transport()
+         if self._transport:
+             self._transport.close()
++        self._transport = None
+--- a/papyon/service/description/AB/__init__.py
++++ b/papyon/service/description/AB/__init__.py
+@@ -20,7 +20,7 @@
+ name = "AB"
+ description = "Hotmail address book service"
+ 
+-url = "http://contacts.msn.com/abservice/abservice.asmx"
++url = "https://omega.contacts.msn.com/abservice/abservice.asmx"
+ 
+ from constants import *
+ 
+--- a/papyon/service/description/Sharing/__init__.py
++++ b/papyon/service/description/Sharing/__init__.py
+@@ -20,7 +20,7 @@
+ name = "Sharing"
+ description = "Membership address book service"
+ 
+-url = "http://contacts.msn.com/abservice/SharingService.asmx"
++url = "https://omega.contacts.msn.com/abservice/SharingService.asmx"
+ 
+ import FindMembership
+ import AddMember

Deleted: packages/papyon/trunk/debian/patches/01-bypass-url-redirect.patch
===================================================================
--- packages/papyon/trunk/debian/patches/01-bypass-url-redirect.patch	2011-11-09 23:15:14 UTC (rev 19207)
+++ packages/papyon/trunk/debian/patches/01-bypass-url-redirect.patch	2011-11-10 08:21:26 UTC (rev 19208)
@@ -1,63 +0,0 @@
-From 011201e47004538e732f247bfeb21634c6e1d97f Mon Sep 17 00:00:00 2001
-From: Mike Ruprecht <mike.ruprecht at collabora.co.uk>
-Date: Tue, 8 Nov 2011 05:29:03 -0600
-Subject: [PATCH] Fix login failure due to trying to interact to an obsolete
- server
-
-The ABFindAll and FindMembership requests were getting HTTP 301
-Permanently Moved responses with empty ABFindAllResponse nodes.
-This was causing an assertion when trying to access a nonexistent
-part of the ABFindAllResponse packet and therefore impossible
-to log in.
-
-This patch replaces occurrences of the obsolete 'contacts.msn.com'
-with the preferred address (according to the responses) of
-'local-bay.contacts.msn.com'.
----
- papyon/service/description/AB/__init__.py          |    2 +-
- papyon/service/description/Sharing/__init__.py     |    2 +-
- .../SingleSignOn/RequestMultipleSecurityTokens.py  |    2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/papyon/service/description/AB/__init__.py b/papyon/service/description/AB/__init__.py
-index 48af7e2..2f116de 100644
---- a/papyon/service/description/AB/__init__.py
-+++ b/papyon/service/description/AB/__init__.py
-@@ -20,7 +20,7 @@
- name = "AB"
- description = "Hotmail address book service"
- 
--url = "http://contacts.msn.com/abservice/abservice.asmx"
-+url = "http://local-bay.contacts.msn.com/abservice/abservice.asmx"
- 
- from constants import *
- 
-diff --git a/papyon/service/description/Sharing/__init__.py b/papyon/service/description/Sharing/__init__.py
-index 20423c9..253c972 100644
---- a/papyon/service/description/Sharing/__init__.py
-+++ b/papyon/service/description/Sharing/__init__.py
-@@ -20,7 +20,7 @@
- name = "Sharing"
- description = "Membership address book service"
- 
--url = "http://contacts.msn.com/abservice/SharingService.asmx"
-+url = "http://local-bay.contacts.msn.com/abservice/SharingService.asmx"
- 
- import FindMembership
- import AddMember
-diff --git a/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py b/papyon/service/description/SingleSignOn/RequestMultipleSecurityTokens.py
-index 42d7497..af7b6f3 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", "MBI")
-+    CONTACTS = ("local-bay.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")
--- 
-1.7.5.4
-

Modified: packages/papyon/trunk/debian/patches/series
===================================================================
--- packages/papyon/trunk/debian/patches/series	2011-11-09 23:15:14 UTC (rev 19207)
+++ packages/papyon/trunk/debian/patches/series	2011-11-10 08:21:26 UTC (rev 19208)
@@ -1,2 +1,2 @@
 00-twice_handle_QNG.diff
-01-bypass-url-redirect.patch
+01-add-redirect-support.patch




More information about the Python-modules-commits mailing list