Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…sclient@8096 051b1e3e-aa0c-0410-b6c2-bfbade6052be
  • Loading branch information
pjkersha committed Aug 17, 2012
1 parent 38d62e5 commit 13ef629
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 9 deletions.
2 changes: 1 addition & 1 deletion ndg/httpsclient/https.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def close(self):
"""Close socket and shut down SSL connection"""
self.sock.close()


class HTTPSContextHandler(AbstractHTTPHandler):
'''HTTPS handler that allows a SSL context to be set for the SSL
connections.
Expand Down
29 changes: 22 additions & 7 deletions ndg/httpsclient/ssl_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ def __init__(self, ctx, sock=None):

self.__ssl_conn = SSL.Connection(ctx, self.socket)
self.buf_size = self.__class__.default_buf_size
self._makefile_refs = 0

def __del__(self):
"""Close underlying socket when this object goes out of scope
Expand All @@ -68,13 +69,16 @@ def buf_size(self, value):
def close(self):
"""Shutdown the SSL connection and call the close method of the
underlying socket"""
try:
# try:
# self.__ssl_conn.shutdown()
# except SSL.Error:
# # Make errors on shutdown non-fatal
# pass

if self._makefile_refs < 1:
self.__ssl_conn.shutdown()
except SSL.Error:
# Make errors on shutdown non-fatal
pass

self.__ssl_conn.close()
else:
self._makefile_refs -= 1

def set_shutdown(self, mode):
"""Set the shutdown state of the Connection.
Expand Down Expand Up @@ -212,7 +216,7 @@ def state_string(self):
"""Return the SSL state of this connection."""
return self.__ssl_conn.state_string()

def makefile(self, *args):
def _DEPRECATE_makefile(self, *args):
"""Specific to Python socket API and required by httplib: convert
response into a file-like object. This implementation reads using recv
and copies the output into a StringIO buffer to simulate a file object
Expand Down Expand Up @@ -256,6 +260,17 @@ def makefile(self, *args):

return stream

def makefile(self, mode='r', bufsize=-1):

"""Make and return a file-like object that
works with the SSL connection. Just use the code
from the socket module."""

self._makefile_refs += 1
# close=True so as to decrement the reference count when done with
# the file-like object.
return socket._fileobject(self.socket, mode, bufsize, close=True)

def getsockname(self):
"""
@return: the socket's own address
Expand Down
2 changes: 1 addition & 1 deletion ndg/httpsclient/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ def open_url(url, config, data=None):
handlers.append(urllib2.ProxyHandler(config.proxies))
log.debug("Configuring proxies: %s" % config.proxies)

opener = build_opener(config.ssl_context, *handlers)
opener = build_opener(*handlers, ssl_context=config.ssl_context)

# Open the URL and check the response.
return_code = 0
Expand Down

0 comments on commit 13ef629

Please sign in to comment.