__owur SSL *ossl_quic_new(SSL_CTX *ctx);
__owur SSL *ossl_quic_new_listener(SSL_CTX *ctx, uint64_t flags);
+__owur SSL *ossl_quic_new_from_listener(SSL *ssl, uint64_t flags);
__owur int ossl_quic_init(SSL *s);
void ossl_quic_deinit(SSL *s);
void ossl_quic_free(SSL *s);
* =================================
*/
+/*
+ * SSL_new_listener
+ * ----------------
+ */
SSL *ossl_quic_new_listener(SSL_CTX *ctx, uint64_t flags)
{
QUIC_LISTENER *ql = NULL;
goto err;
}
+ /* TODO(QUIC SERVER): Implement SSL_LISTENER_FLAG_NO_ACCEPT */
+
ossl_quic_port_set_allow_incoming(ql->port, 1);
/* Initialise the QUIC_LISTENER'S object header. */
return NULL;
}
+/*
+ * SSL_new_from_listener
+ * ---------------------
+ */
+SSL *ossl_quic_new_from_listener(SSL *ssl, uint64_t flags)
+{
+ /* TODO(QUIC SERVER): Implement SSL_new_from_listener */
+ return NULL;
+}
+
/*
* SSL_listen
* ----------
if (!ql_listen(ctx.ql))
goto out;
- /* TODO autotick/block */
+ /* TODO(QUIC SERVER): Autotick */
+ /* TODO(QUIC SERVER): Implement blocking and SSL_ACCEPT_CONNECTION_NO_BLOCK */
new_ch = ossl_quic_port_pop_incoming(ctx.ql->port);
if (new_ch == NULL) {
#endif
}
+SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags)
+{
+#ifndef OPENSSL_NO_QUIC
+ if (!IS_QUIC(ssl))
+ return NULL;
+
+ return ossl_quic_new_from_listener(ssl, flags);
+#else
+ return NULL;
+#endif
+}
+
SSL *SSL_accept_connection(SSL *ssl, uint64_t flags)
{
#ifndef OPENSSL_NO_QUIC