+ return openssl_write_from_fifo_into_bio (f, oc->wbio, deq_max);
+}
+
+static int
+openssl_try_handshake_write (openssl_ctx_t * oc, session_t * tls_session)
+{
+ u32 read;
+
+ if (BIO_ctrl_pending (oc->rbio) <= 0)
+ return 0;
+
+ read = openssl_read_from_bio_into_fifo (tls_session->tx_fifo, oc->rbio);
+ if (read)
+ tls_add_vpp_q_tx_evt (tls_session);
+
+ return read;
+}
+
+#ifdef HAVE_OPENSSL_ASYNC
+static int
+openssl_check_async_status (tls_ctx_t * ctx, openssl_resume_handler * handler,
+ session_t * session)
+{
+ openssl_ctx_t *oc = (openssl_ctx_t *) ctx;
+ int estatus;
+
+ SSL_get_async_status (oc->ssl, &estatus);
+ if (estatus == ASYNC_STATUS_EAGAIN)
+ {
+ vpp_tls_async_update_event (ctx, 1);
+ }
+ else
+ {
+ vpp_tls_async_update_event (ctx, 0);
+ }
+
+ return 1;