> > > It doesn't look terribly hard to make the SSL wrapper obey > > > the timeout, by > > > calling select() on the "raw" socket before calling > > > SSL_write or SSL_read. > > > I'm willing to try to get this to work. > > > > That's cool. I don't know much about the SSL_read() API -- does it > > promise to read exactly the requested number of byte (unless the > > socket is closed)? Then a single select() before it is called may not > > be sufficient. > > I don't know any more than you do -- I've never looked at the OpenSSL docs > until today. It looks like SSL_read may indeed return fewer bytes than > requested: http://www.openssl.org/docs/ssl/SSL_read.html Hm, from that page it looks like the internal implementation may actually repeatedly read from the socket, until it has processed a full 16K block. But I may be mistaken, since it also refers to a non-blocking underlying "BIO", whatever that is. :-( > But I still think that a single select() is OK. It seems to be working fine > in my testing. The select() times out only if there has been no activity on > the socket for the entire timeout period, which seems sufficient to me. I > don't think it matters that SSL_read may return fewer bytes than requested. > Maybe I'm missing something. If you can see no CPU activity while it's waiting to time out, it's probably okay. > Anyhow, I'll do some more testing and then if it still seems to work I'll > upload a patch later today. Great! Please assign to me so I head about it. --Guido van Rossum (home page: http://www.python.org/~guido/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4