[m2crypto] Support IPv6 in M2Crypto.httpslib
Miloslav Trmac
mitr at fedoraproject.org
Tue Mar 13 14:28:37 UTC 2012
commit d6ab1877a10dd53dca23d6d47227ac3744ccbd54
Author: Miloslav Trmač <mitr at redhat.com>
Date: Tue Mar 13 15:28:09 2012 +0100
Support IPv6 in M2Crypto.httpslib
m2crypto-0.21.1-IPv6.patch | 60 ++++++++++++++++++++++++++++++++++++++++++++
m2crypto.spec | 9 ++++++-
2 files changed, 68 insertions(+), 1 deletions(-)
---
diff --git a/m2crypto-0.21.1-IPv6.patch b/m2crypto-0.21.1-IPv6.patch
new file mode 100644
index 0000000..fe36f3e
--- /dev/null
+++ b/m2crypto-0.21.1-IPv6.patch
@@ -0,0 +1,60 @@
+diff -urN M2Crypto/M2Crypto/httpslib.py M2Crypto-0.21.1/M2Crypto/httpslib.py
+--- M2Crypto/M2Crypto/httpslib.py 2011-01-15 20:10:05.000000000 +0100
++++ M2Crypto-0.21.1/M2Crypto/httpslib.py 2012-03-13 15:04:13.848836581 +0100
+@@ -44,10 +44,33 @@
+ HTTPConnection.__init__(self, host, port, strict)
+
+ def connect(self):
+- self.sock = SSL.Connection(self.ssl_ctx)
+- if self.session:
+- self.sock.set_session(self.session)
+- self.sock.connect((self.host, self.port))
++ error = None
++ # We ignore the returned sockaddr because SSL.Connection.connect needs
++ # a host name.
++ for (family, _, _, _, _) in \
++ socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM):
++ sock = None
++ try:
++ try:
++ sock = SSL.Connection(self.ssl_ctx, family=family)
++ if self.session is not None:
++ sock.set_session(self.session)
++ sock.connect((self.host, self.port))
++
++ self.sock = sock
++ sock = None
++ return
++ except socket.error, e:
++ # Other exception are probably SSL-related, in that case we
++ # abort and the exception is forwarded to the caller.
++ error = e
++ finally:
++ if sock is not None:
++ sock.close()
++
++ if error is None:
++ raise AssertionError("Empty list returned by getaddrinfo")
++ raise error
+
+ def close(self):
+ # This kludges around line 545 of httplib.py,
+diff -urN M2Crypto/M2Crypto/SSL/Connection.py M2Crypto-0.21.1/M2Crypto/SSL/Connection.py
+--- M2Crypto/M2Crypto/SSL/Connection.py 2012-03-13 15:00:25.058411492 +0100
++++ M2Crypto-0.21.1/M2Crypto/SSL/Connection.py 2012-03-13 15:04:13.849836578 +0100
+@@ -38,13 +38,13 @@
+ m2_bio_free = m2.bio_free
+ m2_ssl_free = m2.ssl_free
+
+- def __init__(self, ctx, sock=None):
++ def __init__(self, ctx, sock=None, family=socket.AF_INET):
+ self.ctx = ctx
+ self.ssl = m2.ssl_new(self.ctx.ctx)
+ if sock is not None:
+ self.socket = sock
+ else:
+- self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
++ self.socket = socket.socket(family, socket.SOCK_STREAM)
+ self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ self._fileno = self.socket.fileno()
+
diff --git a/m2crypto.spec b/m2crypto.spec
index bee74db..a383ed0 100644
--- a/m2crypto.spec
+++ b/m2crypto.spec
@@ -6,7 +6,7 @@
Summary: Support for using OpenSSL in python scripts
Name: m2crypto
Version: 0.21.1
-Release: 6%{?dist}
+Release: 7%{?dist}
Source0: http://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-%{version}.tar.gz
# https://bugzilla.osafoundation.org/show_bug.cgi?id=2341
Patch0: m2crypto-0.21.1-timeouts.patch
@@ -22,6 +22,8 @@ Patch4: m2crypto-0.21.1-memoryview.patch
Patch5: m2crypto-0.21.1-smime-doc.patch
# https://bugzilla.osafoundation.org/show_bug.cgi?id=12999
Patch6: m2crypto-0.21.1-AES_crypt.patch
+# https://bugzilla.osafoundation.org/show_bug.cgi?id=13044
+Patch7: m2crypto-0.21.1-IPv6.patch
License: MIT
Group: System Environment/Libraries
URL: http://wiki.osafoundation.org/bin/view/Projects/MeTooCrypto
@@ -43,6 +45,7 @@ This package allows you to call OpenSSL functions from python scripts.
%patch4 -p1 -b .memoryview
%patch5 -p0
%patch6 -p0 -b .AES_crypt
+%patch7 -p1 -b .IPv6
# Red Hat opensslconf.h #includes an architecture-specific file, but SWIG
# doesn't follow the #include.
@@ -108,6 +111,10 @@ rm -rf $RPM_BUILD_ROOT
%{python_sitearch}/M2Crypto-*.egg-info
%changelog
+* Tue Mar 13 2012 Miloslav Trmač <mitr at redhat.com> - 0.21.1-7
+- Support IPv6 in M2Crypto.httpslib
+ Resolves: #742914
+
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.21.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
More information about the scm-commits
mailing list