aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabiano Rosas <farosas@suse.de>2025-02-07 10:48:21 -0300
committerFabiano Rosas <farosas@suse.de>2025-02-14 15:19:04 -0300
commit322d873b634dc515220f154e29626a33f528bbfb (patch)
treee595ae3201b149df2c66b8f0535ab0a22909b0d9
parenta25b013019672ab456ef8b51912eadcdda418b73 (diff)
downloadqemu-322d873b634dc515220f154e29626a33f528bbfb.zip
qemu-322d873b634dc515220f154e29626a33f528bbfb.tar.gz
qemu-322d873b634dc515220f154e29626a33f528bbfb.tar.bz2
io: Add a read flag for relaxed EOF
Add a read flag that can inform a channel that it's ok to receive an EOF at any moment. Channels that have some form of strict EOF tracking, such as TLS session termination, may choose to ignore EOF errors with the use of this flag. This is being added for compatibility with older migration streams that do not include a TLS termination step. Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de>
-rw-r--r--include/io/channel.h1
-rw-r--r--io/channel-tls.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/include/io/channel.h b/include/io/channel.h
index 58940ee..62b6571 100644
--- a/include/io/channel.h
+++ b/include/io/channel.h
@@ -35,6 +35,7 @@ OBJECT_DECLARE_TYPE(QIOChannel, QIOChannelClass,
#define QIO_CHANNEL_WRITE_FLAG_ZERO_COPY 0x1
#define QIO_CHANNEL_READ_FLAG_MSG_PEEK 0x1
+#define QIO_CHANNEL_READ_FLAG_RELAXED_EOF 0x2
typedef enum QIOChannelFeature QIOChannelFeature;
diff --git a/io/channel-tls.c b/io/channel-tls.c
index ecde6b5..caf8301 100644
--- a/io/channel-tls.c
+++ b/io/channel-tls.c
@@ -359,6 +359,7 @@ static ssize_t qio_channel_tls_readv(QIOChannel *ioc,
tioc->session,
iov[i].iov_base,
iov[i].iov_len,
+ flags & QIO_CHANNEL_READ_FLAG_RELAXED_EOF ||
qatomic_load_acquire(&tioc->shutdown) & QIO_CHANNEL_SHUTDOWN_READ,
errp);
if (ret == QCRYPTO_TLS_SESSION_ERR_BLOCK) {