Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.1
python-pywbem
pywbem-ipv6.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pywbem-ipv6.patch of Package python-pywbem
diff -ur orig-pywbem-0.7.0/cim_http.py pywbem-0.7.1/cim_http.py --- orig-pywbem-0.7.0/cim_http.py 2013-08-02 11:00:13.000000000 +0200 +++ pywbem-0.7.1/cim_http.py 2013-09-26 15:32:29.765504492 +0200 @@ -58,6 +58,15 @@ if m: host = url[len(m.group(0)):] + # IPv6 with/without port + m = re.match("^\[?([0-9A-Fa-f:]*)\]?(:([0-9]*))?$", host) + if m: + host = m.group(1) + port_tmp = m.group(3) + if port_tmp: + port = int(port_tmp) + return host, port, ssl + s = string.split(host, ":") # Set port number if len(s) != 1: host = s[0] @@ -120,24 +129,41 @@ key_file = x509.get('key_file') if verify_callback is not None: - try: - from OpenSSL import SSL - ctx = SSL.Context(SSL.SSLv3_METHOD) - ctx.set_verify(SSL.VERIFY_PEER, verify_callback) - # Add the key and certificate to the session - if cert_file is not None and key_file is not None: - ctx.use_certificate_file(cert_file) - ctx.use_privatekey_file(key_file) - s = SSL.Connection(ctx, socket.socket(socket.AF_INET, - socket.SOCK_STREAM)) - s.connect((host, port)) - s.do_handshake() - s.shutdown() - s.close() - except socket.error, arg: - raise Error("Socket error: %s" % (arg,)) - except socket.sslerror, arg: - raise Error("SSL error: %s" % (arg,)) + addr_ind = 0 + # Temporary exception store + addr_exc = None + # Get a list of arguments for socket(). + addr_list = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM) + for addr_ind in xrange(len(addr_list)): + family, socktype, proto, canonname, sockaddr = addr_list[addr_ind] + try: + from OpenSSL import SSL + ctx = SSL.Context(SSL.SSLv3_METHOD) + ctx.set_verify(SSL.VERIFY_PEER, verify_callback) + ctx.set_default_verify_paths() + # Add the key and certificate to the session + if cert_file is not None and key_file is not None: + ctx.use_certificate_file(cert_file) + ctx.use_privatekey_file(key_file) + s = SSL.Connection(ctx, socket.socket(family, socktype, proto)) + s.connect((host, port)) + s.do_handshake() + s.shutdown() + s.close() + addr_exc = None + break + except (socket.gaierror, socket.error), arg: + # Could not perform connect() call, store the exception object for + # later use. + addr_exc = arg + continue + except socket.sslerror, arg: + raise Error("SSL error: %s" % (arg,)) + + # Did we try all the addresses from getaddrinfo() and no successful + # connection performed? + if addr_exc: + raise Error("Socket error: %s" % (addr_exc),) numTries = 0 localAuthHeader = None @@ -166,7 +192,7 @@ raise Error('Invalid URL') locallogin = None - if host in ('localhost', '127.0.0.1'): + if host in ('localhost', 'localhost6', '127.0.0.1', '::1'): local = True if local: uid = os.getuid()
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor