File python-memcached-ipv6-and-or.patch of Package python-python-memcached

diff -ruN a/memcache.py b/memcache.py
--- a/memcache.py	2011-11-28 02:17:32.000000000 +0100
+++ b/memcache.py	2013-04-26 11:18:47.765452711 +0200
@@ -1042,6 +1042,9 @@
         #  parse the connection string
         m = re.match(r'^(?P<proto>unix):(?P<path>.*)$', host)
         if not m:
+            m = re.match(r'^(?P<proto>inet6):'
+                    r'\[(?P<host>[^\[\]]+)\](:(?P<port>[0-9]+))?$', host)
+        if not m:
             m = re.match(r'^(?P<proto>inet):'
                     r'(?P<host>[^:]+)(:(?P<port>[0-9]+))?$', host)
         if not m: m = re.match(r'^(?P<host>[^:]+)(:(?P<port>[0-9]+))?$', host)
@@ -1052,10 +1055,15 @@
         if hostData.get('proto') == 'unix':
             self.family = socket.AF_UNIX
             self.address = hostData['path']
+        elif hostData.get('proto') == 'inet6':
+            self.family = socket.AF_INET6
+            self.ip = hostData['host']
+            self.port = int(hostData.get('port') or 11211)
+            self.address = ( self.ip, self.port )
         else:
             self.family = socket.AF_INET
             self.ip = hostData['host']
-            self.port = int(hostData.get('port', 11211))
+            self.port = int(hostData.get('port') or 11211)
             self.address = ( self.ip, self.port )
 
         self.deaduntil = 0
@@ -1158,6 +1166,8 @@
 
         if self.family == socket.AF_INET:
             return "inet:%s:%d%s" % (self.address[0], self.address[1], d)
+        elif self.family == socket.AF_INET6:
+            return "inet6:[%s]:%d%s" % (self.address[0], self.address[1], d)
         else:
             return "unix:%s%s" % (self.address, d)
 
openSUSE Build Service is sponsored by