generalized read loop in favor of ssl-only 'drain'
tweaking gevent ssl PR WIP
This commit is contained in:
@@ -79,9 +79,6 @@ class GeventConnection(Connection):
|
|||||||
self._socket = socket.socket(af, socktype, proto)
|
self._socket = socket.socket(af, socktype, proto)
|
||||||
if self.ssl_options:
|
if self.ssl_options:
|
||||||
self._socket = ssl.wrap_socket(self._socket, **self.ssl_options)
|
self._socket = ssl.wrap_socket(self._socket, **self.ssl_options)
|
||||||
self._ssl_socket = True
|
|
||||||
else:
|
|
||||||
self._ssl_socket = False
|
|
||||||
self._socket.settimeout(1.0)
|
self._socket.settimeout(1.0)
|
||||||
self._socket.connect(sockaddr)
|
self._socket.connect(sockaddr)
|
||||||
sockerr = None
|
sockerr = None
|
||||||
@@ -155,15 +152,11 @@ class GeventConnection(Connection):
|
|||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
buf = self._socket.recv(self.in_buffer_size)
|
while True:
|
||||||
self._iobuf.write(buf)
|
buf = self._socket.recv(self.in_buffer_size)
|
||||||
if self._ssl_socket:
|
self._iobuf.write(buf)
|
||||||
# We need to drain pending data when dealing with a SSL socket
|
if len(buf) < self.in_buffer_size:
|
||||||
data_left = self._socket.pending()
|
break
|
||||||
while data_left:
|
|
||||||
buf = self._socket.recv(data_left)
|
|
||||||
self._iobuf.write(buf)
|
|
||||||
data_left = self._socket.pending()
|
|
||||||
except socket.error as err:
|
except socket.error as err:
|
||||||
if not is_timeout(err):
|
if not is_timeout(err):
|
||||||
log.debug("Exception during socket recv for %s: %s", self, err)
|
log.debug("Exception during socket recv for %s: %s", self, err)
|
||||||
|
|||||||
BIN
cassandra/io/libevwrapper.sox
Executable file
BIN
cassandra/io/libevwrapper.sox
Executable file
Binary file not shown.
Reference in New Issue
Block a user