mirror of
https://github.com/openssl/openssl.git
synced 2025-02-17 14:32:04 +08:00
QUIC DISPATCH/APL: Implement SSL_get_stream_type
Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/20765)
This commit is contained in:
parent
e1dee2e379
commit
1bca3f1b2d
@ -67,6 +67,7 @@ __owur int ossl_quic_conn_set_initial_peer_addr(SSL *s,
|
||||
const BIO_ADDR *peer_addr);
|
||||
__owur SSL *ossl_quic_conn_stream_new(SSL *s, uint64_t flags);
|
||||
__owur SSL *ossl_quic_get0_connection(SSL *s);
|
||||
__owur int ossl_quic_get_stream_type(SSL *s);
|
||||
|
||||
/*
|
||||
* Used to override ossl_time_now() for debug purposes. Must be called before
|
||||
|
@ -2269,6 +2269,12 @@ __owur int SSL_set_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr);
|
||||
__owur SSL *SSL_get0_connection(SSL *s);
|
||||
__owur int SSL_is_connection(SSL *s);
|
||||
|
||||
#define SSL_STREAM_TYPE_NONE 0
|
||||
#define SSL_STREAM_TYPE_READ 1
|
||||
#define SSL_STREAM_TYPE_WRITE 2
|
||||
#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE)
|
||||
__owur int SSL_get_stream_type(SSL *s);
|
||||
|
||||
#define SSL_STREAM_FLAG_UNI (1U << 0)
|
||||
__owur SSL *SSL_new_stream(SSL *s, uint64_t flags);
|
||||
|
||||
|
@ -1835,6 +1835,38 @@ SSL *ossl_quic_get0_connection(SSL *s)
|
||||
return &ctx.qc->ssl;
|
||||
}
|
||||
|
||||
/*
|
||||
* SSL_get_stream_type
|
||||
* -------------------
|
||||
*/
|
||||
int ossl_quic_get_stream_type(SSL *s)
|
||||
{
|
||||
QCTX ctx;
|
||||
|
||||
if (!expect_quic(s, &ctx))
|
||||
return SSL_STREAM_TYPE_NONE;
|
||||
|
||||
if (ctx.xso == NULL) {
|
||||
/*
|
||||
* If we are deferring XSO creation, assume single stream mode and
|
||||
* default to BIDI, as the deferred XSO which will be created will be
|
||||
* bidirectional.
|
||||
*/
|
||||
if (!ctx.qc->default_xso_created)
|
||||
return SSL_STREAM_TYPE_BIDI;
|
||||
else
|
||||
return SSL_STREAM_TYPE_NONE;
|
||||
}
|
||||
|
||||
if (ossl_quic_stream_is_bidi(ctx.xso->stream))
|
||||
return SSL_STREAM_TYPE_BIDI;
|
||||
|
||||
if (ossl_quic_stream_is_server_init(ctx.xso->stream) != ctx.qc->as_server)
|
||||
return SSL_STREAM_TYPE_READ;
|
||||
else
|
||||
return SSL_STREAM_TYPE_WRITE;
|
||||
}
|
||||
|
||||
/*
|
||||
* QUIC Front-End I/O API: SSL_CTX Management
|
||||
* ==========================================
|
||||
|
@ -7328,6 +7328,18 @@ int SSL_is_connection(SSL *s)
|
||||
return SSL_get0_connection(s) == s;
|
||||
}
|
||||
|
||||
int SSL_get_stream_type(SSL *s)
|
||||
{
|
||||
#ifndef OPENSSL_NO_QUIC
|
||||
if (!IS_QUIC(s))
|
||||
return SSL_STREAM_TYPE_BIDI;
|
||||
|
||||
return ossl_quic_get_stream_type(s);
|
||||
#else
|
||||
return SSL_STREAM_TYPE_BIDI;
|
||||
#endif
|
||||
}
|
||||
|
||||
int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk)
|
||||
{
|
||||
unsigned char *data = NULL;
|
||||
|
@ -562,3 +562,5 @@ SSL_is_tls ? 3_2_0 EXIST::FUNCTION:
|
||||
SSL_is_quic ? 3_2_0 EXIST::FUNCTION:
|
||||
SSL_new_stream ? 3_2_0 EXIST::FUNCTION:
|
||||
SSL_get0_connection ? 3_2_0 EXIST::FUNCTION:
|
||||
SSL_is_connection ? 3_2_0 EXIST::FUNCTION:
|
||||
SSL_get_stream_type ? 3_2_0 EXIST::FUNCTION:
|
||||
|
Loading…
Reference in New Issue
Block a user