For my own benefit and that of others, I made a page at http://jmarshall.com/stuff/handling-nbio-errors-in-openssl.html listing various error conditions after SSL_accept(), SSL_connect(), SSL_read(), SSL_write(), and SSL_shutdown(), all on *non-blocking* sockets. The tables show what to do after the given function returns the given result, also considering the response from SSL_get_error(). The info is consolidated from the docs for those six functions.
I'm new to OpenSSL, so I'd love it if someone who knows this stuff could review it. Corrections, additions, and suggestions all very welcome. Thanks! James