[Python-apps-commits] r7771 - in packages/emesene/trunk/debian/patches (1 file)
fabreg-guest at users.alioth.debian.org
fabreg-guest at users.alioth.debian.org
Tue Nov 8 22:39:45 UTC 2011
Date: Tuesday, November 8, 2011 @ 22:39:41
Author: fabreg-guest
Revision: 7771
Update 01-Use-local-bay.contacts.msn.com.diff patch with recent changes
Modified:
packages/emesene/trunk/debian/patches/01-Use-local-bay.contacts.msn.com.diff
Modified: packages/emesene/trunk/debian/patches/01-Use-local-bay.contacts.msn.com.diff
===================================================================
--- packages/emesene/trunk/debian/patches/01-Use-local-bay.contacts.msn.com.diff 2011-11-08 22:17:58 UTC (rev 7770)
+++ packages/emesene/trunk/debian/patches/01-Use-local-bay.contacts.msn.com.diff 2011-11-08 22:39:41 UTC (rev 7771)
@@ -1,4 +1,4 @@
-Description: Use the local-bay.contacts.msn.com contact server
+Description: use the right server for AB and Sharing services and allow HTTP redirection
Author: Fabrizio Regalli <fabreg at fabreg.it>
Forward: not-needed
Bug-Debian: http://bugs.debian.org/648027
@@ -11,7 +11,7 @@
description = "Hotmail address book service"
-url = "http://contacts.msn.com/abservice/abservice.asmx"
-+url = "http://local-bay.contacts.msn.com/abservice/abservice.asmx"
++url = "http://byrdr.omega.contacts.msn.com/abservice/abservice.asmx"
from constants import *
@@ -22,7 +22,120 @@
description = "Membership address book service"
-url = "http://contacts.msn.com/abservice/SharingService.asmx"
-+url = "http://local-bay.contacts.msn.com/abservice/SharingService.asmx"
++url = "http://byrdr.omega.contacts.msn.com/abservice/SharingService.asmx"
import FindMembership
import AddMember
+--- a/emesene/e3/papylib/papyon/papyon/gnet/parser.py
++++ b/emesene/e3/papylib/papyon/papyon/gnet/parser.py
+@@ -212,4 +212,3 @@
+ response.parse(self._receive_buffer)
+ self.emit("received", response)
+ self._reset_state()
+-
+--- a/emesene/e3/papylib/papyon/papyon/gnet/protocol/HTTP.py
++++ b/emesene/e3/papylib/papyon/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,22 @@
+
+ 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 _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()
+
+@@ -123,24 +133,32 @@
+ if response.status >= 100 and response.status < 200:
+ return
+ if not self._waiting_response:
+- logger.warning("Received response but wasn't waiting for one")
++ logger.warning("Received response but wasn't waiting for one %s" % (parser))
++ logger.warning(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.warning(response)
++
++ protocol, host, path, query, fragment = urlsplit(location)
++ if protocol == "http":
++ 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 +204,7 @@
+ self._process_queue()
+
+ def close(self):
++ self._clean_transport()
+ if self._transport:
+ self._transport.close()
++ self._transport = None
More information about the Python-apps-commits
mailing list