aboutsummaryrefslogtreecommitdiffstats
path: root/util/network
diff options
context:
space:
mode:
authorMaxim Yurchuk <maxim-yurchuk@ydb.tech>2024-11-20 17:37:57 +0000
committerGitHub <noreply@github.com>2024-11-20 17:37:57 +0000
commitf76323e9b295c15751e51e3443aa47a36bee8023 (patch)
tree4113c8cad473a33e0f746966e0cf087252fa1d7a /util/network
parent753ecb8d410a4cb459c26f3a0082fb2d1724fe63 (diff)
parenta7b9a6afea2a9d7a7bfac4c5eb4c1a8e60adb9e6 (diff)
downloadydb-f76323e9b295c15751e51e3443aa47a36bee8023.tar.gz
Merge pull request #11788 from ydb-platform/mergelibs-241120-1113
Library import 241120-1113
Diffstat (limited to 'util/network')
-rw-r--r--util/network/hostip.cpp9
-rw-r--r--util/network/pair.cpp12
-rw-r--r--util/network/sock.h54
-rw-r--r--util/network/socket.cpp25
-rw-r--r--util/network/socket_ut.cpp6
5 files changed, 70 insertions, 36 deletions
diff --git a/util/network/hostip.cpp b/util/network/hostip.cpp
index cb8d43bf90..e13ccc2b82 100644
--- a/util/network/hostip.cpp
+++ b/util/network/hostip.cpp
@@ -53,15 +53,18 @@ int NResolver::GetHostIP(const char* hostname, ui32* ip, size_t* slots) {
#else
hostent* hostent = gethostbyname(hostname);
- if (!hostent)
+ if (!hostent) {
return GetDnsError();
+ }
- if (hostent->h_addrtype != AF_INET || (unsigned)hostent->h_length < sizeof(ui32))
+ if (hostent->h_addrtype != AF_INET || (unsigned)hostent->h_length < sizeof(ui32)) {
return HOST_NOT_FOUND;
+ }
char** cur = hostent->h_addr_list;
- for (i = 0; i < *slots && *cur; i++, cur++, ipsFound++)
+ for (i = 0; i < *slots && *cur; i++, cur++, ipsFound++) {
ip[i] = *(ui32*)*cur;
+ }
#endif
for (i = 0; i < ipsFound; i++) {
ip[i] = InetToHost(ip[i]);
diff --git a/util/network/pair.cpp b/util/network/pair.cpp
index 9751ef5c96..de07d5f35c 100644
--- a/util/network/pair.cpp
+++ b/util/network/pair.cpp
@@ -47,17 +47,21 @@ int SocketPair(SOCKET socks[2], bool overlapped, bool cloexec) {
}
do {
- if (listen(listener, 1) == SOCKET_ERROR)
+ if (listen(listener, 1) == SOCKET_ERROR) {
break;
+ }
- if ((socks[0] = WSASocket(AF_INET, SOCK_STREAM, 0, nullptr, 0, flags)) == INVALID_SOCKET)
+ if ((socks[0] = WSASocket(AF_INET, SOCK_STREAM, 0, nullptr, 0, flags)) == INVALID_SOCKET) {
break;
+ }
- if (connect(socks[0], (const struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR)
+ if (connect(socks[0], (const struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR) {
break;
+ }
- if ((socks[1] = accept(listener, nullptr, nullptr)) == INVALID_SOCKET)
+ if ((socks[1] = accept(listener, nullptr, nullptr)) == INVALID_SOCKET) {
break;
+ }
closesocket(listener);
diff --git a/util/network/sock.h b/util/network/sock.h
index b9b73b2d37..65ccd5e0e9 100644
--- a/util/network/sock.h
+++ b/util/network/sock.h
@@ -106,13 +106,15 @@ struct TSockAddrLocal: public ISockAddr {
int ret = 0;
// 1. open file
TFileHandle f(Path, OpenExisting | RdOnly);
- if (!f.IsOpen())
+ if (!f.IsOpen()) {
return -errno;
+ }
// 2. read the port from file
ret = f.Read(&in.sin_port, sizeof(in.sin_port));
- if (ret != sizeof(in.sin_port))
+ if (ret != sizeof(in.sin_port)) {
return -(errno ? errno : EFAULT);
+ }
}
return 0;
@@ -123,24 +125,28 @@ struct TSockAddrLocal: public ISockAddr {
int ret = 0;
// 1. open file
TFileHandle f(Path, CreateAlways | WrOnly);
- if (!f.IsOpen())
+ if (!f.IsOpen()) {
return -errno;
+ }
// 2. find port and bind to it
in.sin_port = 0;
ret = bind(s, SockAddr(), Len());
- if (ret != 0)
+ if (ret != 0) {
return -WSAGetLastError();
+ }
int size = Size();
ret = getsockname(s, (struct sockaddr*)(&in), &size);
- if (ret != 0)
+ if (ret != 0) {
return -WSAGetLastError();
+ }
// 3. write port to file
ret = f.Write(&(in.sin_port), sizeof(in.sin_port));
- if (ret != sizeof(in.sin_port))
+ if (ret != sizeof(in.sin_port)) {
return -errno;
+ }
return 0;
}
@@ -208,12 +214,14 @@ struct TSockAddrLocal: public sockaddr_un, public ISockAddr {
(void)unlink(sun_path);
int ret = bind(s, SockAddr(), Len());
- if (ret < 0)
+ if (ret < 0) {
return -errno;
+ }
ret = Chmod(sun_path, mode);
- if (ret < 0)
+ if (ret < 0) {
return -errno;
+ }
return 0;
}
};
@@ -266,12 +274,14 @@ struct TSockAddrInet: public sockaddr_in, public ISockAddr {
int Bind(SOCKET s, ui16 mode) const override {
Y_UNUSED(mode);
int ret = bind(s, SockAddr(), Len());
- if (ret < 0)
+ if (ret < 0) {
return -errno;
+ }
socklen_t len = Len();
- if (getsockname(s, (struct sockaddr*)(SockAddr()), &len) < 0)
+ if (getsockname(s, (struct sockaddr*)(SockAddr()), &len) < 0) {
return -WSAGetLastError();
+ }
return 0;
}
@@ -377,13 +387,15 @@ public:
}
void CheckSock() {
- if ((SOCKET) * this == INVALID_SOCKET)
+ if ((SOCKET) * this == INVALID_SOCKET) {
ythrow TSystemError() << "no socket";
+ }
}
static ssize_t Check(ssize_t ret, const char* op = "") {
- if (ret < 0)
+ if (ret < 0) {
ythrow TSystemError(-(int)ret) << "socket operation " << op;
+ }
return ret;
}
};
@@ -436,36 +448,41 @@ public:
ssize_t Send(const void* msg, size_t len, int flags = 0) {
const ssize_t ret = send((SOCKET) * this, (const char*)msg, (int)len, flags);
- if (ret < 0)
+ if (ret < 0) {
return -errno;
+ }
return ret;
}
ssize_t Recv(void* buf, size_t len, int flags = 0) {
const ssize_t ret = recv((SOCKET) * this, (char*)buf, (int)len, flags);
- if (ret < 0)
+ if (ret < 0) {
return -errno;
+ }
return ret;
}
int Connect(const ISockAddr* addr) {
int ret = addr->ResolveAddr();
- if (ret < 0)
+ if (ret < 0) {
return -errno;
+ }
ret = connect((SOCKET) * this, addr->SockAddr(), addr->Len());
- if (ret < 0)
+ if (ret < 0) {
return -errno;
+ }
return ret;
}
int Listen(int backlog) {
int ret = listen((SOCKET) * this, backlog);
- if (ret < 0)
+ if (ret < 0) {
return -errno;
+ }
return ret;
}
@@ -479,8 +496,9 @@ public:
s = accept((SOCKET) * this, nullptr, nullptr);
}
- if (s == INVALID_SOCKET)
+ if (s == INVALID_SOCKET) {
return -errno;
+ }
TSocketHolder sock(s);
acceptedSock->Swap(sock);
diff --git a/util/network/socket.cpp b/util/network/socket.cpp
index 0d86ceadfd..ba9c3f7d42 100644
--- a/util/network/socket.cpp
+++ b/util/network/socket.cpp
@@ -110,15 +110,18 @@ static int convert_events(int events, const evpair* evpairs, size_t nevpairs, bo
if (events & event) {
events ^= event;
long winEvent = evpairs[i].winevent;
- if (winEvent == -1)
+ if (winEvent == -1) {
return -1;
- if (winEvent == 0)
+ }
+ if (winEvent == 0) {
continue;
+ }
result |= winEvent;
}
}
- if (events != 0 && !ignoreUnknown)
+ if (events != 0 && !ignoreUnknown) {
return -1;
+ }
return result;
}
@@ -199,12 +202,13 @@ int poll(struct pollfd fds[], nfds_t nfds, int timeout) noexcept {
HANDLE events[] = {event.Get()};
DWORD wait_result = WSAWaitForMultipleEvents(1, events, TRUE, timeout, FALSE);
- if (wait_result == WSA_WAIT_TIMEOUT)
+ if (wait_result == WSA_WAIT_TIMEOUT) {
return 0;
- else if (wait_result == WSA_WAIT_EVENT_0) {
+ } else if (wait_result == WSA_WAIT_EVENT_0) {
for (pollfd* fd = fds; fd < fds + nfds; ++fd) {
- if (fd->revents == POLLNVAL)
+ if (fd->revents == POLLNVAL) {
continue;
+ }
WSANETWORKEVENTS network_events;
if (WSAEnumNetworkEvents(fd->fd, event.Get(), &network_events)) {
errno = EIO;
@@ -217,8 +221,9 @@ int poll(struct pollfd fds[], nfds_t nfds, int timeout) noexcept {
break;
}
}
- if (fd->revents == POLLERR)
+ if (fd->revents == POLLERR) {
continue;
+ }
if (network_events.lNetworkEvents) {
fd->revents = static_cast<short>(convert_events(network_events.lNetworkEvents, evpairs_to_unix, nevpairs_to_unix, true));
if (fd->revents & POLLHUP) {
@@ -227,9 +232,11 @@ int poll(struct pollfd fds[], nfds_t nfds, int timeout) noexcept {
}
}
int chanded_sockets = 0;
- for (pollfd* fd = fds; fd < fds + nfds; ++fd)
- if (fd->revents != 0)
+ for (pollfd* fd = fds; fd < fds + nfds; ++fd) {
+ if (fd->revents != 0) {
++chanded_sockets;
+ }
+ }
return chanded_sockets;
} else {
errno = EIO;
diff --git a/util/network/socket_ut.cpp b/util/network/socket_ut.cpp
index b49ca639cc..f8b97c3992 100644
--- a/util/network/socket_ut.cpp
+++ b/util/network/socket_ut.cpp
@@ -270,8 +270,9 @@ void TPollTest::TestPollInOut() {
if (i % 5 == 0 || i % 5 == 2) {
char buffer = 'c';
- if (send(*clientSocket, &buffer, 1, 0) == -1)
+ if (send(*clientSocket, &buffer, 1, 0) == -1) {
ythrow yexception() << "Can not send (" << LastSystemErrorText() << ")";
+ }
}
TSimpleSharedPtr<TSocketHolder> connectedSocket(new TSocketHolder(AcceptConnection(serverSocket)));
@@ -287,8 +288,9 @@ void TPollTest::TestPollInOut() {
for (size_t i = 0; i < connectedSockets.size(); ++i) {
pollfd fd = {(i % 5 == 4) ? INVALID_SOCKET : static_cast<SOCKET>(*connectedSockets[i]), POLLIN | POLLOUT, 0};
fds.push_back(fd);
- if (i % 5 != 4)
+ if (i % 5 != 4) {
++expectedCount;
+ }
}
int polledCount = poll(&fds[0], fds.size(), INFTIM);