[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