Message186399
| Author |
pitrou |
| Recipients |
Hiroaki.Kawai, pitrou |
| Date |
2013年04月09日.13:15:20 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1365513320.5.0.976104549842.issue17672@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
I don't think your patch is right:
- calling unwrap() already shuts down the SSL layer; this is the right way to do it and is documented as such: "Performs the SSL shutdown handshake, which removes the TLS layer from the underlying socket, and returns the underlying socket object"
- shutdown() right now isn't blocking; if you add a call to SSL shutdown, it can either block or fail with EAGAIN or similar, which is something people won't expect
- close() should simply close the file descriptor, like on a regular socket (if you call socket.close(), it won't shutdown the TCP connection, especially if there's another file descriptor referencing the same connection)
As for Modules/_ssl.c, the case where SSL_shutdown() returns 0 is already handled:
if (err == 0) {
/* Don't loop endlessly; instead preserve legacy
behaviour of trying SSL_shutdown() only twice.
This looks necessary for OpenSSL < 0.9.8m */
if (++zeros > 1)
break;
/* Shutdown was sent, now try receiving */
self->shutdown_seen_zero = 1;
continue;
}
... so I don't think anything more is necessary.
So I think things are fine right now and your patch shouldn't be applied. |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2013年04月09日 13:15:20 | pitrou | set | recipients:
+ pitrou, Hiroaki.Kawai |
| 2013年04月09日 13:15:20 | pitrou | set | messageid: <1365513320.5.0.976104549842.issue17672@psf.upfronthosting.co.za> |
| 2013年04月09日 13:15:20 | pitrou | link | issue17672 messages |
| 2013年04月09日 13:15:20 | pitrou | create |
|