summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ssl/quic/quic_impl.c9
-rw-r--r--ssl/quic/quic_local.h10
2 files changed, 14 insertions, 5 deletions
diff --git a/ssl/quic/quic_impl.c b/ssl/quic/quic_impl.c
index 106e4b3023..52fce3ea45 100644
--- a/ssl/quic/quic_impl.c
+++ b/ssl/quic/quic_impl.c
@@ -247,6 +247,9 @@ SSL *ossl_quic_new(SSL_CTX *ctx)
qc->is_thread_assisted
= (ssl_base->method == OSSL_QUIC_client_thread_method());
+ qc->as_server = 0; /* TODO(QUIC): server support */
+ qc->as_server_state = qc->as_server;
+
/* Channel is not created yet. */
qc->ssl_mode = qc->ssl.ctx->mode;
qc->last_error = SSL_ERROR_NONE;
@@ -803,7 +806,7 @@ void ossl_quic_set_connect_state(SSL *s)
if (ctx.qc->started)
return;
- ctx.qc->as_server = 0;
+ ctx.qc->as_server_state = 0;
}
/* SSL_set_accept_state */
@@ -818,7 +821,7 @@ void ossl_quic_set_accept_state(SSL *s)
if (ctx.qc->started)
return;
- ctx.qc->as_server = 1;
+ ctx.qc->as_server_state = 1;
}
/* SSL_do_handshake */
@@ -926,7 +929,7 @@ static int quic_do_handshake(QUIC_CONNECTION *qc)
return -1; /* Non-protocol error */
}
- if (qc->as_server) {
+ if (qc->as_server != qc->as_server_state) {
/* TODO(QUIC): Server mode not currently supported */
QUIC_RAISE_NON_NORMAL_ERROR(qc, ERR_R_PASSED_INVALID_ARGUMENT, NULL);
return -1; /* Non-protocol error */
diff --git a/ssl/quic/quic_local.h b/ssl/quic/quic_local.h
index a1e84e6854..903e681008 100644
--- a/ssl/quic/quic_local.h
+++ b/ssl/quic/quic_local.h
@@ -86,11 +86,17 @@ struct quic_conn_st {
unsigned int can_poll_net_wbio : 1;
/*
- * Has the application called SSL_set_accept_state? We do not support this
- * but track it here so we can reject a subsequent handshake call.
+ * This is 1 if we were instantiated using a QUIC server method
+ * (for future use).
*/
unsigned int as_server : 1;
+ /*
+ * Has the application called SSL_set_accept_state? We require this to be
+ * congruent with the value of as_server.
+ */
+ unsigned int as_server_state : 1;
+
/* Are we using thread assisted mode? Never changes after init. */
unsigned int is_thread_assisted : 1;