diff options
author | Maxim Yurchuk <maxim-yurchuk@ydb.tech> | 2024-11-20 17:37:57 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-20 17:37:57 +0000 |
commit | f76323e9b295c15751e51e3443aa47a36bee8023 (patch) | |
tree | 4113c8cad473a33e0f746966e0cf087252fa1d7a /util/network | |
parent | 753ecb8d410a4cb459c26f3a0082fb2d1724fe63 (diff) | |
parent | a7b9a6afea2a9d7a7bfac4c5eb4c1a8e60adb9e6 (diff) | |
download | ydb-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.cpp | 9 | ||||
-rw-r--r-- | util/network/pair.cpp | 12 | ||||
-rw-r--r-- | util/network/sock.h | 54 | ||||
-rw-r--r-- | util/network/socket.cpp | 25 | ||||
-rw-r--r-- | util/network/socket_ut.cpp | 6 |
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); |