diff options
Diffstat (limited to 'OpenSSL/SSL.py')
| -rw-r--r-- | OpenSSL/SSL.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/OpenSSL/SSL.py b/OpenSSL/SSL.py index 8c87c34..9b27013 100644 --- a/OpenSSL/SSL.py +++ b/OpenSSL/SSL.py @@ -1,3 +1,4 @@ +import socket from sys import platform from functools import wraps, partial from itertools import count, chain @@ -1311,12 +1312,15 @@ class Connection(object): method again with the SAME buffer. :param bufsiz: The maximum number of bytes to read - :param flags: (optional) Included for compatibility with the socket - API, the value is ignored + :param flags: (optional) The only supported flag is ``MSG_PEEK``, + all other flags are ignored. :return: The string read from the Connection """ buf = _ffi.new("char[]", bufsiz) - result = _lib.SSL_read(self._ssl, buf, bufsiz) + if flags is not None and flags & socket.MSG_PEEK: + result = _lib.SSL_peek(self._ssl, buf, bufsiz) + else: + result = _lib.SSL_read(self._ssl, buf, bufsiz) self._raise_ssl_error(self._ssl, result) return _ffi.buffer(buf, result)[:] read = recv @@ -1332,8 +1336,8 @@ class Connection(object): buffer. If not present, defaults to the size of the buffer. If larger than the size of the buffer, is reduced to the size of the buffer. - :param flags: (optional) Included for compatibility with the socket - API, the value is ignored. + :param flags: (optional) The only supported flag is ``MSG_PEEK``, + all other flags are ignored. :return: The number of bytes read into the buffer. """ if nbytes is None: @@ -1345,7 +1349,10 @@ class Connection(object): # better if we could pass memoryviews straight into the SSL_read call, # but right now we can't. Revisit this if CFFI gets that ability. buf = _ffi.new("char[]", nbytes) - result = _lib.SSL_read(self._ssl, buf, nbytes) + if flags is not None and flags & socket.MSG_PEEK: + result = _lib.SSL_peek(self._ssl, buf, nbytes) + else: + result = _lib.SSL_read(self._ssl, buf, nbytes) self._raise_ssl_error(self._ssl, result) # This strange line is all to avoid a memory copy. The buffer protocol |
