[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