| 1144 | } |
| 1145 | |
| 1146 | void CConnman::AcceptConnection(const ListenSocket& hListenSocket) { |
| 1147 | struct sockaddr_storage sockaddr; |
| 1148 | socklen_t len = sizeof(sockaddr); |
| 1149 | auto sock = hListenSocket.sock->Accept((struct sockaddr*)&sockaddr, &len); |
| 1150 | CAddress addr; |
| 1151 | |
| 1152 | if (!sock) { |
| 1153 | const int nErr = WSAGetLastError(); |
| 1154 | if (nErr != WSAEWOULDBLOCK) { |
| 1155 | LogPrintf("socket error accept failed: %s\n", NetworkErrorString(nErr)); |
| 1156 | } |
| 1157 | return; |
| 1158 | } |
| 1159 | |
| 1160 | if (!addr.SetSockAddr((const struct sockaddr*)&sockaddr)) { |
| 1161 | LogPrintLevel(BCLog::Level::Warning, BCLog::NET, "Unknown socket family\n"); |
| 1162 | } else { |
| 1163 | addr = CAddress{MaybeFlipIPv6toCJDNS(addr), NODE_NONE}; |
| 1164 | } |
| 1165 | |
| 1166 | const CAddress addr_bind{MaybeFlipIPv6toCJDNS(GetBindAddress(sock->Get())), NODE_NONE}; |
| 1167 | |
| 1168 | NetPermissionFlags permissionFlags = NetPermissionFlags::None; |
| 1169 | hListenSocket.AddSocketPermissionFlags(permissionFlags); |
| 1170 | |
| 1171 | CreateNodeFromAcceptedSocket(std::move(sock), permissionFlags, addr_bind, addr); |
| 1172 | } |
| 1173 | |
| 1174 | void CConnman::CreateNodeFromAcceptedSocket(std::unique_ptr<Sock>&& sock, |
| 1175 | NetPermissionFlags permissionFlags, |
nothing calls this directly
no test coverage detected