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>
This commit is contained in:
parent
510dace86c
commit
198f87835d
1 changed files with 2 additions and 2 deletions
4
tap.c
4
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
|
||||
|
|
Loading…
Reference in a new issue