diff options
-rw-r--r-- | ssl/quic/quic_impl.c | 9 | ||||
-rw-r--r-- | ssl/quic/quic_local.h | 10 |
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; |