[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/4] qemu-sockets: refactor inet_connect_addr
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH 1/4] qemu-sockets: refactor inet_connect_addr |
Date: |
Mon, 20 Jul 2020 21:07:12 +0300 |
We are going to publish inet_connect_addr to be used in separate. Let's
move keep_alive handling to it. Pass the whole InetSocketAddress
pointer, not only keep_alive, so that future external callers will not
care about internals of InetSocketAddress.
While being here, remove redundant inet_connect_addr() declaration.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
util/qemu-sockets.c | 37 ++++++++++++++++---------------------
1 file changed, 16 insertions(+), 21 deletions(-)
diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index b37d288866..8ccf4088c2 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -354,9 +354,8 @@ listen_ok:
((rc) == -EINPROGRESS)
#endif
-static int inet_connect_addr(struct addrinfo *addr, Error **errp);
-
-static int inet_connect_addr(struct addrinfo *addr, Error **errp)
+static int inet_connect_addr(InetSocketAddress *saddr,
+ struct addrinfo *addr, Error **errp)
{
int sock, rc;
@@ -381,6 +380,18 @@ static int inet_connect_addr(struct addrinfo *addr, Error
**errp)
return -1;
}
+ if (saddr->keep_alive) {
+ int val = 1;
+ int ret = qemu_setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE,
+ &val, sizeof(val));
+
+ if (ret < 0) {
+ error_setg_errno(errp, errno, "Unable to set KEEPALIVE");
+ closesocket(sock);
+ return -1;
+ }
+ }
+
return sock;
}
@@ -455,7 +466,7 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error
**errp)
for (e = res; e != NULL; e = e->ai_next) {
error_free(local_err);
local_err = NULL;
- sock = inet_connect_addr(e, &local_err);
+ sock = inet_connect_addr(saddr, e, &local_err);
if (sock >= 0) {
break;
}
@@ -463,23 +474,7 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error
**errp)
freeaddrinfo(res);
- if (sock < 0) {
- error_propagate(errp, local_err);
- return sock;
- }
-
- if (saddr->keep_alive) {
- int val = 1;
- int ret = qemu_setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE,
- &val, sizeof(val));
-
- if (ret < 0) {
- error_setg_errno(errp, errno, "Unable to set KEEPALIVE");
- close(sock);
- return -1;
- }
- }
-
+ error_propagate(errp, local_err);
return sock;
}
--
2.21.0
- [PATCH for-5.1? 0/4] non-blocking connect, Vladimir Sementsov-Ogievskiy, 2020/07/20
- [PATCH 1/4] qemu-sockets: refactor inet_connect_addr,
Vladimir Sementsov-Ogievskiy <=
- [PATCH 2/4] qemu-sockets: implement non-blocking connect interface, Vladimir Sementsov-Ogievskiy, 2020/07/20
- [PATCH 3/4] io/channel-socket: implement non-blocking connect, Vladimir Sementsov-Ogievskiy, 2020/07/20
- Re: [PATCH 3/4] io/channel-socket: implement non-blocking connect, Daniel P . Berrangé, 2020/07/20
- Re: [PATCH 3/4] io/channel-socket: implement non-blocking connect, Vladimir Sementsov-Ogievskiy, 2020/07/22
- Re: [PATCH 3/4] io/channel-socket: implement non-blocking connect, Daniel P . Berrangé, 2020/07/22
- Re: [PATCH 3/4] io/channel-socket: implement non-blocking connect, Vladimir Sementsov-Ogievskiy, 2020/07/22
- Re: [PATCH 3/4] io/channel-socket: implement non-blocking connect, Daniel P . Berrangé, 2020/07/22
- Re: [PATCH 3/4] io/channel-socket: implement non-blocking connect, Vladimir Sementsov-Ogievskiy, 2020/07/22
- Re: [PATCH 3/4] io/channel-socket: implement non-blocking connect, Vladimir Sementsov-Ogievskiy, 2020/07/22
- Re: [PATCH 3/4] io/channel-socket: implement non-blocking connect, Daniel P . Berrangé, 2020/07/22