ustream-ssl: add support for using a fd instead of ustream as backing
[project/ustream-ssl.git] / ustream-io-wolfssl.c
index 4ff85d34e33331535f25645121d90b11078e20df..0a97edcb481eefb086fe7d370af9f024ee4eff82 100644 (file)
@@ -65,10 +65,15 @@ static int io_send_cb(SSL* ssl, char *buf, int sz, void *ctx)
        return s_ustream_write(buf, sz, ctx);
 }
 
-__hidden void ustream_set_io(struct ustream_ssl_ctx *ctx, void *ssl, struct ustream *conn)
+__hidden void ustream_set_io(struct ustream_ssl *us)
 {
-       wolfSSL_SSLSetIORecv(ssl, io_recv_cb);
-       wolfSSL_SSLSetIOSend(ssl, io_send_cb);
-       wolfSSL_SetIOReadCtx(ssl, conn);
-       wolfSSL_SetIOWriteCtx(ssl, conn);
+       if (!us->conn) {
+               wolfSSL_set_fd(us->ssl, us->fd.fd);
+               return;
+       }
+
+       wolfSSL_SSLSetIORecv(us->ssl, io_recv_cb);
+       wolfSSL_SSLSetIOSend(us->ssl, io_send_cb);
+       wolfSSL_SetIOReadCtx(us->ssl, us->conn);
+       wolfSSL_SetIOWriteCtx(us->ssl, us->conn);
 }