aboutgitcodebugslistschat
path: root/tcp.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2023-02-16 16:43:10 +1100
committerStefano Brivio <sbrivio@redhat.com>2023-02-16 18:56:35 +0100
commit83b2061ae7c7f0b3f3c85fa88a195c84fd9404c6 (patch)
tree8cbb7e81104973983d2afd686db455f2ef73b4f6 /tcp.c
parent42bfd212b1f3bb52c7781bea10022e1c1d9db5fc (diff)
downloadpasst-83b2061ae7c7f0b3f3c85fa88a195c84fd9404c6.tar
passt-83b2061ae7c7f0b3f3c85fa88a195c84fd9404c6.tar.gz
passt-83b2061ae7c7f0b3f3c85fa88a195c84fd9404c6.tar.bz2
passt-83b2061ae7c7f0b3f3c85fa88a195c84fd9404c6.tar.lz
passt-83b2061ae7c7f0b3f3c85fa88a195c84fd9404c6.tar.xz
passt-83b2061ae7c7f0b3f3c85fa88a195c84fd9404c6.tar.zst
passt-83b2061ae7c7f0b3f3c85fa88a195c84fd9404c6.zip
tcp: Remove 'recvmsg' goto from tcp_data_from_sock
This goto can be handled just as simply and more clearly with a do while. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tcp.c')
-rw-r--r--tcp.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/tcp.c b/tcp.c
index 32ce1e9..d289f10 100644
--- a/tcp.c
+++ b/tcp.c
@@ -2186,13 +2186,12 @@ static int tcp_data_from_sock(struct ctx *c, struct tcp_tap_conn *conn)
iov_sock[fill_bufs].iov_len = iov_rem;
/* Receive into buffers, don't dequeue until acknowledged by guest. */
-recvmsg:
- len = recvmsg(s, &mh_sock, MSG_PEEK);
- if (len < 0) {
- if (errno == EINTR)
- goto recvmsg;
+ do
+ len = recvmsg(s, &mh_sock, MSG_PEEK);
+ while (len < 0 && errno == EINTR);
+
+ if (len < 0)
goto err;
- }
if (!len)
goto zero_len;