Antoine Pitrou <pit...@free.fr> added the comment:

I don't see any discrepancy here (with Python 3.3). Under both Linux and 
Windows, the client thread prints:

ERR [Errno 3] _ssl.c:1126: The operation did not complete (write)
done

The only difference is that the server thread receives 128KB under Linux, and 
48KB under Windows.

I think the main variation comes not from OpenSSL, but from the OS's thread 
scheduling algorithms. If you do a large write, you have to be prepared to get 
an error, because the buffers may be too small.

I agree it might seem strange that OpenSSL returns an error rather than the 
number of sent bytes, and this behaviour could actually be changed at the 
OpenSSL level (see http://www.openssl.org/docs/ssl/SSL_write.html) by allowing 
people to use the SSL_MODE_ENABLE_PARTIAL_WRITE option. However, doing so by 
default could break existing code which assumes that writes either fail or 
succeed completely.

issue8240 talks about a slightly related request.

----------
title: non-blocking SSL write in Windows sends large data but raises exception 
-> non-blocking SSL write fails if a partial write was issued
type: behavior -> feature request
versions: +Python 3.3 -Python 2.6, Python 3.2

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue12197>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to