aboutgitcodebugslistschat
path: root/tap.c
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2022-11-08 09:08:32 +0100
committerStefano Brivio <sbrivio@redhat.com>2022-11-10 11:17:50 +0100
commit198f87835dc448c7561e2d8ba0ece24e63bc9447 (patch)
treebd6c775e686411a55b5d14aa4f93f408fc4d33d5 /tap.c
parent510dace86ccf0bd63be3b1dbd35ae9c0b0538e5b (diff)
downloadpasst-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar
passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.gz
passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.bz2
passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.lz
passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.xz
passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.zst
passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.zip
tap: Return -EIO from tap_handler_passt() on inconsistent packet stream
While it's important to fail in that case, it makes little sense to fail quietly: it's better to tell qemu explicitly that something went wrong and that we won't recover, by closing the socket. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tap.c')
-rw-r--r--tap.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/tap.c b/tap.c
index 11ac732..abeff25 100644
--- a/tap.c
+++ b/tap.c
@@ -757,7 +757,7 @@ redo:
rem = recv(c->fd_tap, p + n,
(ssize_t)sizeof(uint32_t) - n, 0);
if ((n += rem) != (ssize_t)sizeof(uint32_t))
- return 0;
+ return -EIO;
}
len = ntohl(*(uint32_t *)p);
@@ -771,7 +771,7 @@ redo:
if (len > n) {
rem = recv(c->fd_tap, p + n, len - n, 0);
if ((n += rem) != len)
- return 0;
+ return -EIO;
}
/* Complete the partial read above before discarding a malformed