Message ID | 20221115142329.92524-2-antoine.damhet@shadow.tech (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | TLS: fix read stall with large buffers | expand |
On Tue, Nov 15, 2022 at 03:23:28PM +0100, antoine.damhet@shadow.tech wrote: > From: Antoine Damhet <antoine.damhet@shadow.tech> > > The new `qcrypto_tls_session_check_pending` function allows the caller > to know if data have already been consumed from the backend and is > already available. > > Signed-off-by: Antoine Damhet <antoine.damhet@shadow.tech> > --- > crypto/tlssession.c | 14 ++++++++++++++ > include/crypto/tlssession.h | 11 +++++++++++ > 2 files changed, 25 insertions(+) Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel
diff --git a/crypto/tlssession.c b/crypto/tlssession.c index b302d835d2..1e98f44e0d 100644 --- a/crypto/tlssession.c +++ b/crypto/tlssession.c @@ -493,6 +493,13 @@ qcrypto_tls_session_read(QCryptoTLSSession *session, } +size_t +qcrypto_tls_session_check_pending(QCryptoTLSSession *session) +{ + return gnutls_record_check_pending(session->handle); +} + + int qcrypto_tls_session_handshake(QCryptoTLSSession *session, Error **errp) @@ -615,6 +622,13 @@ qcrypto_tls_session_read(QCryptoTLSSession *sess, } +size_t +qcrypto_tls_session_check_pending(QCryptoTLSSession *session) +{ + return 0; +} + + int qcrypto_tls_session_handshake(QCryptoTLSSession *sess, Error **errp) diff --git a/include/crypto/tlssession.h b/include/crypto/tlssession.h index 15b9cef086..571049bd0e 100644 --- a/include/crypto/tlssession.h +++ b/include/crypto/tlssession.h @@ -248,6 +248,17 @@ ssize_t qcrypto_tls_session_read(QCryptoTLSSession *sess, char *buf, size_t len); +/** + * qcrypto_tls_session_check_pending: + * @sess: the TLS session object + * + * Check if there are unread data in the TLS buffers that have + * already been read from the underlying data source. + * + * Returns: the number of bytes available or zero + */ +size_t qcrypto_tls_session_check_pending(QCryptoTLSSession *sess); + /** * qcrypto_tls_session_handshake: * @sess: the TLS session object