Hmm, some progress, but still puzzled. When my code is acting as the client, it seems that the problem can be overcome by calling SSL_set_read_ahead with a zero parameter, to turn off reading ahead. This is done just before calling SSL_connect. The application now seems able to read megabytes of data from the server without hanging. However, adding a similar call just before SSL_accept does not solve the problem when the application is the server, and is reading a lot of data from the client. It looks as if the data is read (certainly hundreds of KB in packets of 16384 bytes) but the application then hangs. Presumably for lack of any trigger (such as EPOLLIN) to generate any further activity. Any suggestions please? -- View this message in context: http://openssl.6102.n7.nabble.com/OpenSSL-non-blocking-epoll-hanging-on-data-receiving-tp66355p66370.html Sent from the OpenSSL - User mailing list archive at Nabble.com.