TLS/SSL による通信をやりたい場合、OpenSSL を使えば簡単に実装することができる。 具体的には、recv(2), send(2) を直に発行するノリで、SSL_read(3), SSL_write(3) を使えばいい……と思っていたが、そうではないらしい。 ということで、調べたことをつらつら書いてみる。なお、以下は socket が non-blocking であることを想定して書いている。 それから、OpenSSL をそこまで読み込んだわけではないので、間違っているかもしれない。ツッコミ大歓迎! SSL_read での SSL_ERROR_WANT_READ. SSL_write での SSL_ERROR_WANT_WRITE データの送信を行おうとしたときに TCP/IP のバッファがいっぱいで積めない場合、send は EAGAIN でエラーする。 同様に SSL_wri