Skip to content

Instantly share code, notes, and snippets.

@rokujyouhitoma
Created March 10, 2015 07:41
Show Gist options
  • Save rokujyouhitoma/7ecbb457d6d9f449e8c4 to your computer and use it in GitHub Desktop.
Save rokujyouhitoma/7ecbb457d6d9f449e8c4 to your computer and use it in GitHub Desktop.
locust and gevent patch for python2.7.9
#https://github.com/gevent/gevent/issues/477#issuecomment-56292848
# # Re-add sslwrap to Python 2.7.9
import inspect
__ssl__ = __import__('ssl')
try:
_ssl = __ssl__._ssl
except AttributeError:
_ssl = __ssl__._ssl2
def new_sslwrap(sock, server_side=False, keyfile=None, certfile=None, cert_reqs=__ssl__.CERT_NONE, ssl_version=__ssl__.PROTOCOL_SSLv23, ca_certs=None, ciphers=None):
context = __ssl__.SSLContext(ssl_version)
context.verify_mode = cert_reqs or __ssl__.CERT_NONE
if ca_certs:
context.load_verify_locations(ca_certs)
if certfile:
context.load_cert_chain(certfile, keyfile)
if ciphers:
context.set_ciphers(ciphers)
caller_self = inspect.currentframe().f_back.f_locals['self']
return context._wrap_socket(sock, server_side=server_side, ssl_sock=caller_self)
if not hasattr(_ssl, 'sslwrap'):
_ssl.sslwrap = new_sslwrap
# Ike patched
from gevent import ssl as _ssl
___init__ = _ssl.SSLSocket.__init__
def new__init__(self, sock, keyfile=None, certfile=None,
server_side=False, cert_reqs=__ssl__.CERT_NONE,
ssl_version=__ssl__.PROTOCOL_SSLv23, ca_certs=None,
do_handshake_on_connect=True,
suppress_ragged_eofs=True,
ciphers=None,
server_hostname=None, # Required by python >= 2.7.8
_context=None): # Required by python >= 2.7.8
return ___init__(self, sock, keyfile=None, certfile=None,
server_side=False, cert_reqs=__ssl__.CERT_NONE,
ssl_version=__ssl__.PROTOCOL_SSLv23, ca_certs=None,
do_handshake_on_connect=True,
suppress_ragged_eofs=True,
ciphers=None)
_ssl.SSLSocket.__init__ = new__init__
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment