mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-13 20:36:21 +01:00
Merge bitcoin/bitcoin#34033: scripted-diff: Unify error and warning log formatting
fa89f60e31scripted-diff: LogPrintLevel(*,BCLog::Level::*,*) -> LogError()/LogWarning() (MarcoFalke)fa6c7a1954scripted-diff: LogPrintLevel(*,BCLog::Level::Debug,*) -> LogDebug() (MarcoFalke) Pull request description: Errors and warnings should normally not happen. However, if they do happen, it is easier to spot them, if they are all logged in the same format via `LogError` or `LogWarning`. So do that with a scripted-diff. This is a minimal behavior change and unifies the log output from: [net:error] Something bad happened [net:warning] Something problematic happened to either [error] Something bad happened [warning] Something problematic happened or, when `-loglevelalways=1` is enabled: [all:error] Something bad happened [all:warning] Something problematic happened Such a behavior change is desired, because all warning and error logs are written in the same style in the source code and they are logged in the same format for log consumers. Removing the category should be harmless, because warning and error messages should be descriptive and unique anyway. ACKs for top commit: ajtowns: ACKfa89f60e31stickies-v: ACKfa89f60e31rkrux: lgtm code review ACKfa89f60e31Tree-SHA512: dafa47ab561609a79005faf008fe188dd714f6e07bb2dfbe4db49290d6636b12eb7ac4a18ed32bcc5526641a9f258dbc37c08e10c223ec068b97976590ff0b52
This commit is contained in:
@@ -73,7 +73,7 @@ std::optional<CNetAddr> QueryDefaultGatewayImpl(sa_family_t family)
|
||||
// Create a netlink socket.
|
||||
auto sock{CreateSock(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE)};
|
||||
if (!sock) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "socket(AF_NETLINK): %s\n", NetworkErrorString(errno));
|
||||
LogError("socket(AF_NETLINK): %s\n", NetworkErrorString(errno));
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ std::optional<CNetAddr> QueryDefaultGatewayImpl(sa_family_t family)
|
||||
request.dst_hdr.nla_len = sizeof(nlattr) + dst_data_len;
|
||||
|
||||
if (sock->Send(&request, request.hdr.nlmsg_len, 0) != static_cast<ssize_t>(request.hdr.nlmsg_len)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "send() to netlink socket: %s\n", NetworkErrorString(errno));
|
||||
LogError("send() to netlink socket: %s\n", NetworkErrorString(errno));
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
@@ -124,13 +124,13 @@ std::optional<CNetAddr> QueryDefaultGatewayImpl(sa_family_t family)
|
||||
recv_result = sock->Recv(response, sizeof(response), 0);
|
||||
} while (recv_result < 0 && (errno == EINTR || errno == EAGAIN));
|
||||
if (recv_result < 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "recv() from netlink socket: %s\n", NetworkErrorString(errno));
|
||||
LogError("recv() from netlink socket: %s\n", NetworkErrorString(errno));
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
total_bytes_read += recv_result;
|
||||
if (total_bytes_read > NETLINK_MAX_RESPONSE_SIZE) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "Netlink response exceeded size limit (%zu bytes, family=%d)\n", NETLINK_MAX_RESPONSE_SIZE, family);
|
||||
LogWarning("Netlink response exceeded size limit (%zu bytes, family=%d)\n", NETLINK_MAX_RESPONSE_SIZE, family);
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
@@ -200,7 +200,7 @@ std::optional<CNetAddr> QueryDefaultGatewayImpl(sa_family_t family)
|
||||
destination_address.si_family = family;
|
||||
status = GetBestInterfaceEx((sockaddr*)&destination_address, &best_if_idx);
|
||||
if (status != NO_ERROR) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "Could not get best interface for default route: %s\n", NetworkErrorString(status));
|
||||
LogError("Could not get best interface for default route: %s\n", NetworkErrorString(status));
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ std::optional<CNetAddr> QueryDefaultGatewayImpl(sa_family_t family)
|
||||
// Leave interface_luid at all-zeros to use interface index instead.
|
||||
status = GetBestRoute2(&interface_luid, best_if_idx, nullptr, &destination_address, 0, &best_route, &best_source_address);
|
||||
if (status != NO_ERROR) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "Could not get best route for default route for interface index %d: %s\n",
|
||||
LogError("Could not get best route for default route for interface index %d: %s\n",
|
||||
best_if_idx, NetworkErrorString(status));
|
||||
return std::nullopt;
|
||||
}
|
||||
@@ -235,12 +235,12 @@ std::optional<CNetAddr> QueryDefaultGatewayImpl(sa_family_t family)
|
||||
// The size of the available data is determined by calling sysctl() with oldp=nullptr. See sysctl(3).
|
||||
size_t l = 0;
|
||||
if (sysctl(/*name=*/mib, /*namelen=*/sizeof(mib) / sizeof(int), /*oldp=*/nullptr, /*oldlenp=*/&l, /*newp=*/nullptr, /*newlen=*/0) < 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "Could not get sysctl length of routing table: %s\n", SysErrorString(errno));
|
||||
LogError("Could not get sysctl length of routing table: %s\n", SysErrorString(errno));
|
||||
return std::nullopt;
|
||||
}
|
||||
std::vector<std::byte> buf(l);
|
||||
if (sysctl(/*name=*/mib, /*namelen=*/sizeof(mib) / sizeof(int), /*oldp=*/buf.data(), /*oldlenp=*/&l, /*newp=*/nullptr, /*newlen=*/0) < 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "Could not get sysctl data of routing table: %s\n", SysErrorString(errno));
|
||||
LogError("Could not get sysctl data of routing table: %s\n", SysErrorString(errno));
|
||||
return std::nullopt;
|
||||
}
|
||||
// Iterate over messages (each message is a routing table entry).
|
||||
@@ -340,7 +340,7 @@ std::vector<CNetAddr> GetLocalAddresses()
|
||||
if (status != NO_ERROR) {
|
||||
// This includes ERROR_NO_DATA if there are no addresses and thus there's not even one PIP_ADAPTER_ADDRESSES
|
||||
// record in the returned structure.
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "Could not get local adapter addresses: %s\n", NetworkErrorString(status));
|
||||
LogError("Could not get local adapter addresses: %s\n", NetworkErrorString(status));
|
||||
return addresses;
|
||||
}
|
||||
|
||||
|
||||
@@ -228,11 +228,11 @@ std::optional<std::vector<uint8_t>> PCPSendRecv(Sock &sock, const std::string &p
|
||||
int recvsz = 0;
|
||||
for (int ntry = 0; !got_response && ntry < num_tries; ++ntry) {
|
||||
if (ntry > 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "%s: Retrying (%d)\n", protocol, ntry);
|
||||
LogDebug(BCLog::NET, "%s: Retrying (%d)\n", protocol, ntry);
|
||||
}
|
||||
// Dispatch packet to gateway.
|
||||
if (sock.Send(request.data(), request.size(), 0) != static_cast<ssize_t>(request.size())) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "%s: Could not send request: %s\n", protocol, NetworkErrorString(WSAGetLastError()));
|
||||
LogDebug(BCLog::NET, "%s: Could not send request: %s\n", protocol, NetworkErrorString(WSAGetLastError()));
|
||||
return std::nullopt; // Network-level error, probably no use retrying.
|
||||
}
|
||||
|
||||
@@ -243,21 +243,21 @@ std::optional<std::vector<uint8_t>> PCPSendRecv(Sock &sock, const std::string &p
|
||||
if (interrupt) return std::nullopt;
|
||||
Sock::Event occurred = 0;
|
||||
if (!sock.Wait(deadline - cur_time, Sock::RECV, &occurred)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "%s: Could not wait on socket: %s\n", protocol, NetworkErrorString(WSAGetLastError()));
|
||||
LogWarning("%s: Could not wait on socket: %s\n", protocol, NetworkErrorString(WSAGetLastError()));
|
||||
return std::nullopt; // Network-level error, probably no use retrying.
|
||||
}
|
||||
if (!occurred) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "%s: Timeout\n", protocol);
|
||||
LogDebug(BCLog::NET, "%s: Timeout\n", protocol);
|
||||
break; // Retry.
|
||||
}
|
||||
|
||||
// Receive response.
|
||||
recvsz = sock.Recv(response, sizeof(response), MSG_DONTWAIT);
|
||||
if (recvsz < 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "%s: Could not receive response: %s\n", protocol, NetworkErrorString(WSAGetLastError()));
|
||||
LogDebug(BCLog::NET, "%s: Could not receive response: %s\n", protocol, NetworkErrorString(WSAGetLastError()));
|
||||
return std::nullopt; // Network-level error, probably no use retrying.
|
||||
}
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "%s: Received response of %d bytes: %s\n", protocol, recvsz, HexStr(std::span(response, recvsz)));
|
||||
LogDebug(BCLog::NET, "%s: Received response of %d bytes: %s\n", protocol, recvsz, HexStr(std::span(response, recvsz)));
|
||||
|
||||
if (check_packet(std::span<uint8_t>(response, recvsz))) {
|
||||
got_response = true; // Got expected response, break from receive loop as well as from retry loop.
|
||||
@@ -266,7 +266,7 @@ std::optional<std::vector<uint8_t>> PCPSendRecv(Sock &sock, const std::string &p
|
||||
}
|
||||
}
|
||||
if (!got_response) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "%s: Giving up after %d tries\n", protocol, num_tries);
|
||||
LogDebug(BCLog::NET, "%s: Giving up after %d tries\n", protocol, num_tries);
|
||||
return std::nullopt;
|
||||
}
|
||||
return std::vector<uint8_t>(response, response + recvsz);
|
||||
@@ -279,7 +279,7 @@ std::variant<MappingResult, MappingError> NATPMPRequestPortMap(const CNetAddr &g
|
||||
struct sockaddr_storage dest_addr;
|
||||
socklen_t dest_addrlen = sizeof(struct sockaddr_storage);
|
||||
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "natpmp: Requesting port mapping port %d from gateway %s\n", port, gateway.ToStringAddr());
|
||||
LogDebug(BCLog::NET, "natpmp: Requesting port mapping port %d from gateway %s\n", port, gateway.ToStringAddr());
|
||||
|
||||
// Validate gateway, make sure it's IPv4. NAT-PMP does not support IPv6.
|
||||
if (!CService(gateway, PCP_SERVER_PORT).GetSockAddr((struct sockaddr*)&dest_addr, &dest_addrlen)) return MappingError::NETWORK_ERROR;
|
||||
@@ -288,13 +288,13 @@ std::variant<MappingResult, MappingError> NATPMPRequestPortMap(const CNetAddr &g
|
||||
// Create IPv4 UDP socket
|
||||
auto sock{CreateSock(AF_INET, SOCK_DGRAM, IPPROTO_UDP)};
|
||||
if (!sock) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Could not create UDP socket: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
LogWarning("natpmp: Could not create UDP socket: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
return MappingError::NETWORK_ERROR;
|
||||
}
|
||||
|
||||
// Associate UDP socket to gateway.
|
||||
if (sock->Connect((struct sockaddr*)&dest_addr, dest_addrlen) != 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Could not connect to gateway: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
LogWarning("natpmp: Could not connect to gateway: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
return MappingError::NETWORK_ERROR;
|
||||
}
|
||||
|
||||
@@ -302,7 +302,7 @@ std::variant<MappingResult, MappingError> NATPMPRequestPortMap(const CNetAddr &g
|
||||
struct sockaddr_in internal;
|
||||
socklen_t internal_addrlen = sizeof(struct sockaddr_in);
|
||||
if (sock->GetSockName((struct sockaddr*)&internal, &internal_addrlen) != 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Could not get sock name: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
LogWarning("natpmp: Could not get sock name: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
return MappingError::NETWORK_ERROR;
|
||||
}
|
||||
|
||||
@@ -314,11 +314,11 @@ std::variant<MappingResult, MappingError> NATPMPRequestPortMap(const CNetAddr &g
|
||||
auto recv_res = PCPSendRecv(*sock, "natpmp", request, num_tries, timeout_per_try,
|
||||
[&](const std::span<const uint8_t> response) -> bool {
|
||||
if (response.size() < NATPMP_GETEXTERNAL_RESPONSE_SIZE) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Response too small\n");
|
||||
LogWarning("natpmp: Response too small\n");
|
||||
return false; // Wasn't response to what we expected, try receiving next packet.
|
||||
}
|
||||
if (response[NATPMP_HDR_VERSION_OFS] != NATPMP_VERSION || response[NATPMP_HDR_OP_OFS] != (NATPMP_RESPONSE | NATPMP_OP_GETEXTERNAL)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Response to wrong command\n");
|
||||
LogWarning("natpmp: Response to wrong command\n");
|
||||
return false; // Wasn't response to what we expected, try receiving next packet.
|
||||
}
|
||||
return true;
|
||||
@@ -332,7 +332,7 @@ std::variant<MappingResult, MappingError> NATPMPRequestPortMap(const CNetAddr &g
|
||||
Assume(response.size() >= NATPMP_GETEXTERNAL_RESPONSE_SIZE);
|
||||
uint16_t result_code = ReadBE16(response.data() + NATPMP_RESPONSE_HDR_RESULT_OFS);
|
||||
if (result_code != NATPMP_RESULT_SUCCESS) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Getting external address failed with result %s\n", NATPMPResultString(result_code));
|
||||
LogWarning("natpmp: Getting external address failed with result %s\n", NATPMPResultString(result_code));
|
||||
return MappingError::PROTOCOL_ERROR;
|
||||
}
|
||||
|
||||
@@ -352,16 +352,16 @@ std::variant<MappingResult, MappingError> NATPMPRequestPortMap(const CNetAddr &g
|
||||
recv_res = PCPSendRecv(*sock, "natpmp", request, num_tries, timeout_per_try,
|
||||
[&](const std::span<const uint8_t> response) -> bool {
|
||||
if (response.size() < NATPMP_MAP_RESPONSE_SIZE) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Response too small\n");
|
||||
LogWarning("natpmp: Response too small\n");
|
||||
return false; // Wasn't response to what we expected, try receiving next packet.
|
||||
}
|
||||
if (response[0] != NATPMP_VERSION || response[1] != (NATPMP_RESPONSE | NATPMP_OP_MAP_TCP)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Response to wrong command\n");
|
||||
LogWarning("natpmp: Response to wrong command\n");
|
||||
return false; // Wasn't response to what we expected, try receiving next packet.
|
||||
}
|
||||
uint16_t internal_port = ReadBE16(response.data() + NATPMP_MAP_RESPONSE_INTERNAL_PORT_OFS);
|
||||
if (internal_port != port) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Response port doesn't match request\n");
|
||||
LogWarning("natpmp: Response port doesn't match request\n");
|
||||
return false; // Wasn't response to what we expected, try receiving next packet.
|
||||
}
|
||||
return true;
|
||||
@@ -374,7 +374,7 @@ std::variant<MappingResult, MappingError> NATPMPRequestPortMap(const CNetAddr &g
|
||||
Assume(response.size() >= NATPMP_MAP_RESPONSE_SIZE);
|
||||
uint16_t result_code = ReadBE16(response.data() + NATPMP_RESPONSE_HDR_RESULT_OFS);
|
||||
if (result_code != NATPMP_RESULT_SUCCESS) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "natpmp: Port mapping failed with result %s\n", NATPMPResultString(result_code));
|
||||
LogWarning("natpmp: Port mapping failed with result %s\n", NATPMPResultString(result_code));
|
||||
if (result_code == NATPMP_RESULT_NO_RESOURCES) {
|
||||
return MappingError::NO_RESOURCES;
|
||||
}
|
||||
@@ -394,7 +394,7 @@ std::variant<MappingResult, MappingError> PCPRequestPortMap(const PCPMappingNonc
|
||||
struct sockaddr_storage dest_addr, bind_addr;
|
||||
socklen_t dest_addrlen = sizeof(struct sockaddr_storage), bind_addrlen = sizeof(struct sockaddr_storage);
|
||||
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "pcp: Requesting port mapping for addr %s port %d from gateway %s\n", bind.ToStringAddr(), port, gateway.ToStringAddr());
|
||||
LogDebug(BCLog::NET, "pcp: Requesting port mapping for addr %s port %d from gateway %s\n", bind.ToStringAddr(), port, gateway.ToStringAddr());
|
||||
|
||||
// Validate addresses, make sure they're the same network family.
|
||||
if (!CService(gateway, PCP_SERVER_PORT).GetSockAddr((struct sockaddr*)&dest_addr, &dest_addrlen)) return MappingError::NETWORK_ERROR;
|
||||
@@ -404,20 +404,20 @@ std::variant<MappingResult, MappingError> PCPRequestPortMap(const PCPMappingNonc
|
||||
// Create UDP socket (IPv4 or IPv6 based on provided gateway).
|
||||
auto sock{CreateSock(dest_addr.ss_family, SOCK_DGRAM, IPPROTO_UDP)};
|
||||
if (!sock) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "pcp: Could not create UDP socket: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
LogWarning("pcp: Could not create UDP socket: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
return MappingError::NETWORK_ERROR;
|
||||
}
|
||||
|
||||
// Make sure that we send from requested destination address, anything else will be
|
||||
// rejected by a security-conscious router.
|
||||
if (sock->Bind((struct sockaddr*)&bind_addr, bind_addrlen) != 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "pcp: Could not bind to address: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
LogWarning("pcp: Could not bind to address: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
return MappingError::NETWORK_ERROR;
|
||||
}
|
||||
|
||||
// Associate UDP socket to gateway.
|
||||
if (sock->Connect((struct sockaddr*)&dest_addr, dest_addrlen) != 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "pcp: Could not connect to gateway: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
LogWarning("pcp: Could not connect to gateway: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
return MappingError::NETWORK_ERROR;
|
||||
}
|
||||
|
||||
@@ -427,12 +427,12 @@ std::variant<MappingResult, MappingError> PCPRequestPortMap(const PCPMappingNonc
|
||||
struct sockaddr_storage internal_addr;
|
||||
socklen_t internal_addrlen = sizeof(struct sockaddr_storage);
|
||||
if (sock->GetSockName((struct sockaddr*)&internal_addr, &internal_addrlen) != 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "pcp: Could not get sock name: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
LogWarning("pcp: Could not get sock name: %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
return MappingError::NETWORK_ERROR;
|
||||
}
|
||||
CService internal;
|
||||
if (!internal.SetSockAddr((struct sockaddr*)&internal_addr, internal_addrlen)) return MappingError::NETWORK_ERROR;
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "pcp: Internal address after connect: %s\n", internal.ToStringAddr());
|
||||
LogDebug(BCLog::NET, "pcp: Internal address after connect: %s\n", internal.ToStringAddr());
|
||||
|
||||
// Build request packet. Make sure the packet is zeroed so that reserved fields are zero
|
||||
// as required by the spec (and not potentially leak data).
|
||||
@@ -469,23 +469,23 @@ std::variant<MappingResult, MappingError> PCPRequestPortMap(const PCPMappingNonc
|
||||
return true; // Let it through to caller.
|
||||
}
|
||||
if (response.size() < (PCP_HDR_SIZE + PCP_MAP_SIZE)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "pcp: Response too small\n");
|
||||
LogWarning("pcp: Response too small\n");
|
||||
return false; // Wasn't response to what we expected, try receiving next packet.
|
||||
}
|
||||
if (response[PCP_HDR_VERSION_OFS] != PCP_VERSION || response[PCP_HDR_OP_OFS] != (PCP_RESPONSE | PCP_OP_MAP)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "pcp: Response to wrong command\n");
|
||||
LogWarning("pcp: Response to wrong command\n");
|
||||
return false; // Wasn't response to what we expected, try receiving next packet.
|
||||
}
|
||||
// Handle MAP opcode response. See RFC6887 Figure 10.
|
||||
// Check that returned mapping nonce matches our request.
|
||||
if (!std::ranges::equal(response.subspan(PCP_HDR_SIZE + PCP_MAP_NONCE_OFS, PCP_MAP_NONCE_SIZE), nonce)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "pcp: Mapping nonce mismatch\n");
|
||||
LogWarning("pcp: Mapping nonce mismatch\n");
|
||||
return false; // Wasn't response to what we expected, try receiving next packet.
|
||||
}
|
||||
uint8_t protocol = response[PCP_HDR_SIZE + 12];
|
||||
uint16_t internal_port = ReadBE16(response.data() + PCP_HDR_SIZE + 16);
|
||||
if (protocol != PCP_PROTOCOL_TCP || internal_port != port) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "pcp: Response protocol or port doesn't match request\n");
|
||||
LogWarning("pcp: Response protocol or port doesn't match request\n");
|
||||
return false; // Wasn't response to what we expected, try receiving next packet.
|
||||
}
|
||||
return true;
|
||||
@@ -508,7 +508,7 @@ std::variant<MappingResult, MappingError> PCPRequestPortMap(const PCPMappingNonc
|
||||
uint16_t external_port = ReadBE16(response.data() + PCP_HDR_SIZE + PCP_MAP_EXTERNAL_PORT_OFS);
|
||||
CNetAddr external_addr{PCPUnwrapAddress(response.subspan(PCP_HDR_SIZE + PCP_MAP_EXTERNAL_IP_OFS, ADDR_IPV6_SIZE))};
|
||||
if (result_code != PCP_RESULT_SUCCESS) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "pcp: Mapping failed with result %s\n", PCPResultString(result_code));
|
||||
LogWarning("pcp: Mapping failed with result %s\n", PCPResultString(result_code));
|
||||
if (result_code == PCP_RESULT_NO_RESOURCES) {
|
||||
return MappingError::NO_RESOURCES;
|
||||
}
|
||||
|
||||
14
src/i2p.cpp
14
src/i2p.cpp
@@ -149,7 +149,7 @@ bool Session::Listen(Connection& conn)
|
||||
conn.sock = StreamAccept();
|
||||
return true;
|
||||
} catch (const std::runtime_error& e) {
|
||||
LogPrintLevel(BCLog::I2P, BCLog::Level::Error, "Couldn't listen: %s\n", e.what());
|
||||
LogError("Couldn't listen: %s\n", e.what());
|
||||
CheckControlSock();
|
||||
}
|
||||
return false;
|
||||
@@ -206,9 +206,9 @@ bool Session::Accept(Connection& conn)
|
||||
}
|
||||
|
||||
if (m_interrupt->interrupted()) {
|
||||
LogPrintLevel(BCLog::I2P, BCLog::Level::Debug, "Accept was interrupted\n");
|
||||
LogDebug(BCLog::I2P, "Accept was interrupted\n");
|
||||
} else {
|
||||
LogPrintLevel(BCLog::I2P, BCLog::Level::Debug, "Error accepting%s: %s\n", disconnect ? " (will close the session)" : "", errmsg);
|
||||
LogDebug(BCLog::I2P, "Error accepting%s: %s\n", disconnect ? " (will close the session)" : "", errmsg);
|
||||
}
|
||||
if (disconnect) {
|
||||
LOCK(m_mutex);
|
||||
@@ -224,7 +224,7 @@ bool Session::Connect(const CService& to, Connection& conn, bool& proxy_error)
|
||||
// Refuse connecting to arbitrary ports. We don't specify any destination port to the SAM proxy
|
||||
// when connecting (SAM 3.1 does not use ports) and it forces/defaults it to I2P_SAM31_PORT.
|
||||
if (to.GetPort() != I2P_SAM31_PORT) {
|
||||
LogPrintLevel(BCLog::I2P, BCLog::Level::Debug, "Error connecting to %s, connection refused due to arbitrary port %s\n", to.ToStringAddrPort(), to.GetPort());
|
||||
LogDebug(BCLog::I2P, "Error connecting to %s, connection refused due to arbitrary port %s\n", to.ToStringAddrPort(), to.GetPort());
|
||||
proxy_error = false;
|
||||
return false;
|
||||
}
|
||||
@@ -272,7 +272,7 @@ bool Session::Connect(const CService& to, Connection& conn, bool& proxy_error)
|
||||
|
||||
throw std::runtime_error(strprintf("\"%s\"", connect_reply.full));
|
||||
} catch (const std::runtime_error& e) {
|
||||
LogPrintLevel(BCLog::I2P, BCLog::Level::Debug, "Error connecting to %s: %s\n", to.ToStringAddrPort(), e.what());
|
||||
LogDebug(BCLog::I2P, "Error connecting to %s: %s\n", to.ToStringAddrPort(), e.what());
|
||||
CheckControlSock();
|
||||
return false;
|
||||
}
|
||||
@@ -345,7 +345,7 @@ void Session::CheckControlSock()
|
||||
|
||||
std::string errmsg;
|
||||
if (m_control_sock && !m_control_sock->IsConnected(errmsg)) {
|
||||
LogPrintLevel(BCLog::I2P, BCLog::Level::Debug, "Control socket error: %s\n", errmsg);
|
||||
LogDebug(BCLog::I2P, "Control socket error: %s\n", errmsg);
|
||||
Disconnect();
|
||||
}
|
||||
}
|
||||
@@ -415,7 +415,7 @@ void Session::CreateIfNotCreatedAlready()
|
||||
const auto session_type = m_transient ? "transient" : "persistent";
|
||||
const auto session_id = GetRandHash().GetHex().substr(0, 10); // full is overkill, too verbose in the logs
|
||||
|
||||
LogPrintLevel(BCLog::I2P, BCLog::Level::Debug, "Creating %s SAM session %s with %s\n", session_type, session_id, m_control_host.ToString());
|
||||
LogDebug(BCLog::I2P, "Creating %s SAM session %s with %s\n", session_type, session_id, m_control_host.ToString());
|
||||
|
||||
auto sock = Hello();
|
||||
|
||||
|
||||
@@ -67,9 +67,9 @@ static void ProcessPCP()
|
||||
// IPv4
|
||||
std::optional<CNetAddr> gateway4 = QueryDefaultGateway(NET_IPV4);
|
||||
if (!gateway4) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "portmap: Could not determine IPv4 default gateway\n");
|
||||
LogDebug(BCLog::NET, "portmap: Could not determine IPv4 default gateway\n");
|
||||
} else {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "portmap: gateway [IPv4]: %s\n", gateway4->ToStringAddr());
|
||||
LogDebug(BCLog::NET, "portmap: gateway [IPv4]: %s\n", gateway4->ToStringAddr());
|
||||
|
||||
// Open a port mapping on whatever local address we have toward the gateway.
|
||||
struct in_addr inaddr_any;
|
||||
@@ -77,7 +77,7 @@ static void ProcessPCP()
|
||||
auto res = PCPRequestPortMap(pcp_nonce, *gateway4, CNetAddr(inaddr_any), private_port, requested_lifetime, g_mapport_interrupt);
|
||||
MappingError* pcp_err = std::get_if<MappingError>(&res);
|
||||
if (pcp_err && *pcp_err == MappingError::UNSUPP_VERSION) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "portmap: Got unsupported PCP version response, falling back to NAT-PMP\n");
|
||||
LogDebug(BCLog::NET, "portmap: Got unsupported PCP version response, falling back to NAT-PMP\n");
|
||||
res = NATPMPRequestPortMap(*gateway4, private_port, requested_lifetime, g_mapport_interrupt);
|
||||
}
|
||||
handle_mapping(res);
|
||||
@@ -86,9 +86,9 @@ static void ProcessPCP()
|
||||
// IPv6
|
||||
std::optional<CNetAddr> gateway6 = QueryDefaultGateway(NET_IPV6);
|
||||
if (!gateway6) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "portmap: Could not determine IPv6 default gateway\n");
|
||||
LogDebug(BCLog::NET, "portmap: Could not determine IPv6 default gateway\n");
|
||||
} else {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "portmap: gateway [IPv6]: %s\n", gateway6->ToStringAddr());
|
||||
LogDebug(BCLog::NET, "portmap: gateway [IPv6]: %s\n", gateway6->ToStringAddr());
|
||||
|
||||
// Try to open pinholes for all routable local IPv6 addresses.
|
||||
for (const auto &addr: GetLocalAddresses()) {
|
||||
@@ -100,12 +100,12 @@ static void ProcessPCP()
|
||||
|
||||
// Log message if we got NO_RESOURCES.
|
||||
if (no_resources) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "portmap: At least one mapping failed because of a NO_RESOURCES error. This usually indicates that the port is already used on the router. If this is the only instance of bitcoin running on the network, this will resolve itself automatically. Otherwise, you might want to choose a different P2P port to prevent this conflict.\n");
|
||||
LogWarning("portmap: At least one mapping failed because of a NO_RESOURCES error. This usually indicates that the port is already used on the router. If this is the only instance of bitcoin running on the network, this will resolve itself automatically. Otherwise, you might want to choose a different P2P port to prevent this conflict.\n");
|
||||
}
|
||||
|
||||
// Sanity-check returned lifetime.
|
||||
if (actual_lifetime < 30) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "portmap: Got impossibly short mapping lifetime of %d seconds\n", actual_lifetime);
|
||||
LogWarning("portmap: Got impossibly short mapping lifetime of %d seconds\n", actual_lifetime);
|
||||
return;
|
||||
}
|
||||
// RFC6887 11.2.1 recommends that clients send their first renewal packet at a time chosen with uniform random
|
||||
|
||||
18
src/net.cpp
18
src/net.cpp
@@ -369,7 +369,7 @@ static CService GetBindAddress(const Sock& sock)
|
||||
if (!sock.GetSockName((struct sockaddr*)&sockaddr_bind, &sockaddr_bind_len)) {
|
||||
addr_bind.SetSockAddr((const struct sockaddr*)&sockaddr_bind, sockaddr_bind_len);
|
||||
} else {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "getsockname failed\n");
|
||||
LogWarning("getsockname failed\n");
|
||||
}
|
||||
return addr_bind;
|
||||
}
|
||||
@@ -395,7 +395,7 @@ CNode* CConnman::ConnectNode(CAddress addrConnect,
|
||||
}
|
||||
}
|
||||
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "trying %s connection %s lastseen=%.1fhrs\n",
|
||||
LogDebug(BCLog::NET, "trying %s connection %s lastseen=%.1fhrs\n",
|
||||
use_v2transport ? "v2" : "v1",
|
||||
pszDest ? pszDest : addrConnect.ToStringAddrPort(),
|
||||
Ticks<HoursDouble>(pszDest ? 0h : Now<NodeSeconds>() - addrConnect.nTime));
|
||||
@@ -485,7 +485,7 @@ CNode* CConnman::ConnectNode(CAddress addrConnect,
|
||||
addr_bind = conn.me;
|
||||
}
|
||||
} else if (use_proxy) {
|
||||
LogPrintLevel(BCLog::PROXY, BCLog::Level::Debug, "Using proxy: %s to connect to %s\n", proxy.ToString(), target_addr.ToStringAddrPort());
|
||||
LogDebug(BCLog::PROXY, "Using proxy: %s to connect to %s\n", proxy.ToString(), target_addr.ToStringAddrPort());
|
||||
sock = ConnectThroughProxy(proxy, target_addr.ToStringAddr(), target_addr.GetPort(), proxyConnectionFailed);
|
||||
} else {
|
||||
// no proxy needed (none set for target network)
|
||||
@@ -1746,7 +1746,7 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
|
||||
|
||||
CService addr;
|
||||
if (!addr.SetSockAddr((const struct sockaddr*)&sockaddr, len)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Warning, "Unknown socket family\n");
|
||||
LogWarning("Unknown socket family\n");
|
||||
} else {
|
||||
addr = MaybeFlipIPv6toCJDNS(addr);
|
||||
}
|
||||
@@ -2857,7 +2857,7 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect, std
|
||||
// not use our limited outbound slots for them and to ensure
|
||||
// addnode connections benefit from their intended protections.
|
||||
if (AddedNodesContain(addr)) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "Not making automatic %s%s connection to %s peer selected for manual (addnode) connection%s\n",
|
||||
LogDebug(BCLog::NET, "Not making automatic %s%s connection to %s peer selected for manual (addnode) connection%s\n",
|
||||
preferred_net.has_value() ? "network-specific " : "",
|
||||
ConnectionTypeAsString(conn_type), GetNetworkName(addr.GetNetwork()),
|
||||
fLogIPs ? strprintf(": %s", addr.ToStringAddrPort()) : "");
|
||||
@@ -3143,14 +3143,14 @@ bool CConnman::BindListenPort(const CService& addrBind, bilingual_str& strError,
|
||||
if (!addrBind.GetSockAddr((struct sockaddr*)&sockaddr, &len))
|
||||
{
|
||||
strError = Untranslated(strprintf("Bind address family for %s not supported", addrBind.ToStringAddrPort()));
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "%s\n", strError.original);
|
||||
LogError("%s\n", strError.original);
|
||||
return false;
|
||||
}
|
||||
|
||||
std::unique_ptr<Sock> sock = CreateSock(addrBind.GetSAFamily(), SOCK_STREAM, IPPROTO_TCP);
|
||||
if (!sock) {
|
||||
strError = Untranslated(strprintf("Couldn't open socket for incoming connections (socket returned error %s)", NetworkErrorString(WSAGetLastError())));
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "%s\n", strError.original);
|
||||
LogError("%s\n", strError.original);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -3185,7 +3185,7 @@ bool CConnman::BindListenPort(const CService& addrBind, bilingual_str& strError,
|
||||
strError = strprintf(_("Unable to bind to %s on this computer. %s is probably already running."), addrBind.ToStringAddrPort(), CLIENT_NAME);
|
||||
else
|
||||
strError = strprintf(_("Unable to bind to %s on this computer (bind returned error %s)"), addrBind.ToStringAddrPort(), NetworkErrorString(nErr));
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "%s\n", strError.original);
|
||||
LogError("%s\n", strError.original);
|
||||
return false;
|
||||
}
|
||||
LogInfo("Bound to %s\n", addrBind.ToStringAddrPort());
|
||||
@@ -3194,7 +3194,7 @@ bool CConnman::BindListenPort(const CService& addrBind, bilingual_str& strError,
|
||||
if (sock->Listen(SOMAXCONN) == SOCKET_ERROR)
|
||||
{
|
||||
strError = strprintf(_("Listening for incoming connections failed (listen returned error %s)"), NetworkErrorString(WSAGetLastError()));
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "%s\n", strError.original);
|
||||
LogError("%s\n", strError.original);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -476,7 +476,7 @@ bool Socks5(const std::string& strDest, uint16_t port, const ProxyCredentials* a
|
||||
}
|
||||
if (pchRet2[1] != SOCKS5Reply::SUCCEEDED) {
|
||||
// Failures to connect to a peer that are not proxy errors
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug,
|
||||
LogDebug(BCLog::NET,
|
||||
"Socks5() connect to %s:%d failed: %s\n", strDest, port, Socks5ErrorString(pchRet2[1]));
|
||||
return false;
|
||||
}
|
||||
@@ -606,7 +606,7 @@ static bool ConnectToSocket(const Sock& sock, struct sockaddr* sockaddr, socklen
|
||||
NetworkErrorString(WSAGetLastError()));
|
||||
return false;
|
||||
} else if (occurred == 0) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "connection attempt to %s timed out\n", dest_str);
|
||||
LogDebug(BCLog::NET, "connection attempt to %s timed out\n", dest_str);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -646,7 +646,7 @@ std::unique_ptr<Sock> ConnectDirectly(const CService& dest, bool manual_connecti
|
||||
{
|
||||
auto sock = CreateSock(dest.GetSAFamily(), SOCK_STREAM, IPPROTO_TCP);
|
||||
if (!sock) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "Cannot create a socket for connecting to %s\n", dest.ToStringAddrPort());
|
||||
LogError("Cannot create a socket for connecting to %s\n", dest.ToStringAddrPort());
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ std::unique_ptr<Sock> Proxy::Connect() const
|
||||
#ifdef HAVE_SOCKADDR_UN
|
||||
auto sock = CreateSock(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (!sock) {
|
||||
LogPrintLevel(BCLog::NET, BCLog::Level::Error, "Cannot create a socket for connecting to %s\n", m_unix_socket_path);
|
||||
LogError("Cannot create a socket for connecting to %s\n", m_unix_socket_path);
|
||||
return {};
|
||||
}
|
||||
|
||||
|
||||
@@ -863,7 +863,7 @@ FlatFilePos BlockManager::FindNextBlockPos(unsigned int nAddSize, unsigned int n
|
||||
// a reindex. A flush error might also leave some of the data files
|
||||
// untrimmed.
|
||||
if (!FlushBlockFile(last_blockfile, /*fFinalize=*/true, finalize_undo)) {
|
||||
LogPrintLevel(BCLog::BLOCKSTORAGE, BCLog::Level::Warning,
|
||||
LogWarning(
|
||||
"Failed to flush previous block file %05i (finalize=1, finalize_undo=%i) before opening new block file %05i\n",
|
||||
last_blockfile, finalize_undo, nFile);
|
||||
}
|
||||
@@ -987,7 +987,7 @@ bool BlockManager::WriteBlockUndo(const CBlockUndo& blockundo, BlockValidationSt
|
||||
// fact it is. Note though, that a failed flush might leave the data
|
||||
// file untrimmed.
|
||||
if (!FlushUndoFile(pos.nFile, true)) {
|
||||
LogPrintLevel(BCLog::BLOCKSTORAGE, BCLog::Level::Warning, "Failed to flush undo file %05i\n", pos.nFile);
|
||||
LogWarning("Failed to flush undo file %05i\n", pos.nFile);
|
||||
}
|
||||
} else if (pos.nFile == cursor.file_num && block.nHeight > cursor.undo_height) {
|
||||
cursor.undo_height = block.nHeight;
|
||||
|
||||
@@ -84,7 +84,7 @@ public:
|
||||
AssertLockNotHeld(m_txreconciliation_mutex);
|
||||
LOCK(m_txreconciliation_mutex);
|
||||
|
||||
LogPrintLevel(BCLog::TXRECONCILIATION, BCLog::Level::Debug, "Pre-register peer=%d\n", peer_id);
|
||||
LogDebug(BCLog::TXRECONCILIATION, "Pre-register peer=%d\n", peer_id);
|
||||
const uint64_t local_salt{FastRandomContext().rand64()};
|
||||
|
||||
// We do this exactly once per peer (which are unique by NodeId, see GetNewNodeId) so it's
|
||||
@@ -117,7 +117,7 @@ public:
|
||||
// v1 is the lowest version, so suggesting something below must be a protocol violation.
|
||||
if (recon_version < 1) return ReconciliationRegisterResult::PROTOCOL_VIOLATION;
|
||||
|
||||
LogPrintLevel(BCLog::TXRECONCILIATION, BCLog::Level::Debug, "Register peer=%d (inbound=%i)\n",
|
||||
LogDebug(BCLog::TXRECONCILIATION, "Register peer=%d (inbound=%i)\n",
|
||||
peer_id, is_peer_inbound);
|
||||
|
||||
const uint256 full_salt{ComputeSalt(local_salt, remote_salt)};
|
||||
@@ -130,7 +130,7 @@ public:
|
||||
AssertLockNotHeld(m_txreconciliation_mutex);
|
||||
LOCK(m_txreconciliation_mutex);
|
||||
if (m_states.erase(peer_id)) {
|
||||
LogPrintLevel(BCLog::TXRECONCILIATION, BCLog::Level::Debug, "Forget txreconciliation state of peer=%d\n", peer_id);
|
||||
LogDebug(BCLog::TXRECONCILIATION, "Forget txreconciliation state of peer=%d\n", peer_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ bool CCoinsViewDB::BatchWrite(CoinsViewCacheCursor& cursor, const uint256 &hashB
|
||||
std::vector<uint256> old_heads = GetHeadBlocks();
|
||||
if (old_heads.size() == 2) {
|
||||
if (old_heads[0] != hashBlock) {
|
||||
LogPrintLevel(BCLog::COINDB, BCLog::Level::Error, "The coins database detected an inconsistent state, likely due to a previous crash or shutdown. You will need to restart bitcoind with the -reindex-chainstate or -reindex configuration option.\n");
|
||||
LogError("The coins database detected an inconsistent state, likely due to a previous crash or shutdown. You will need to restart bitcoind with the -reindex-chainstate or -reindex configuration option.\n");
|
||||
}
|
||||
assert(old_heads[0] == hashBlock);
|
||||
old_tip = old_heads[1];
|
||||
|
||||
@@ -2795,7 +2795,7 @@ bool Chainstate::FlushStateToDisk(
|
||||
// TODO: Handle return error, or add detailed comment why it is
|
||||
// safe to not return an error upon failure.
|
||||
if (!m_blockman.FlushChainstateBlockFile(m_chain.Height())) {
|
||||
LogPrintLevel(BCLog::VALIDATION, BCLog::Level::Warning, "%s: Failed to flush block file.\n", __func__);
|
||||
LogWarning("%s: Failed to flush block file.\n", __func__);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user