Fixed the problem in the end, using eNULL was useful to get the full picture. The issue my assumption that if there was data available to process (after read ahead was turned off) then SSL_pending would tell me so. But it seems that when the data extends beyond a single block (with OpenSSL imposing a 16K block size limit) it is necessary to keep reading after a successful read, as there may be more data available from the next block. I haven't seen any more positive way to know if there is data to process than simply repeatedly reading until no data is received. -- View this message in context: http://openssl.6102.n7.nabble.com/OpenSSL-non-blocking-epoll-hanging-on-data-receiving-tp66355p66452.html Sent from the OpenSSL - User mailing list archive at Nabble.com.