classification
Title: ssl.SSLSocket.send(b"") fails
Type: behavior Stage:
Components: SSL Versions: Python 3.6
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: christian.heimes Nosy List: christian.heimes, joernheissler
Priority: normal Keywords:

Created on 2017-10-06 09:43 by joernheissler, last changed 2017-10-06 09:43 by joernheissler.

Files
File name Uploaded Description Edit
client.py joernheissler, 2017-10-06 09:42
Messages (1)
msg303810 - (view) Author: Jörn Heissler (joernheissler) Date: 2017-10-06 09:42
Traceback (most recent call last):
  File "client.py", line 10, in <module>
    conn.send(b'')
  File "/usr/lib/python3.6/ssl.py", line 941, in send
    return self._sslobj.write(data)
  File "/usr/lib/python3.6/ssl.py", line 642, in write
    return self._sslobj.write(data)
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2074)

This error is not what I expected. I expected a noop instead.

My guess is, that python calls SSL_write (3.6 branch, _ssl.c:2038) with that empty buffer.
The manpage states: "When calling SSL_write() with num=0 bytes to be sent the behaviour is undefined."

This undefined behaviour should either be documented in python, or defined to either raise an exception (ValueError?) or defined as a noop. I'd prefer the latter.
History
Date User Action Args
2017-10-06 09:43:00joernheisslercreate