net: remove unnecessary casts in socket operations
These methods in the Sock class wrap corresponding syscalls, accepting void* arguments and casting to char* internally, which is needed for Windows support and ignored on other platforms because the syscall itself accepts void*: Send() Recv() GetSockOpt() SetSockOpt()
This commit is contained in:
5 files changed
+8
-16
No files matched your search
@@ -75,14 +75,6 @@ typedef unsigned int SOCKET;
|
|||||||
typedef SSIZE_T ssize_t;
|
typedef SSIZE_T ssize_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// The type of the option value passed to getsockopt & setsockopt
|
|
||||||
// differs between Windows and non-Windows.
|
|
||||||
#ifndef WIN32
|
|
||||||
typedef void* sockopt_arg_type;
|
|
||||||
#else
|
|
||||||
typedef char* sockopt_arg_type;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
// Export main() and ensure working ASLR when using mingw-w64.
|
// Export main() and ensure working ASLR when using mingw-w64.
|
||||||
// Exporting a symbol will prevent the linker from stripping
|
// Exporting a symbol will prevent the linker from stripping
|
||||||
|
|||||||
+1
-1
@@ -401,7 +401,7 @@ static bool HTTPBindAddresses(struct evhttp* http)
|
|||||||
// Set the no-delay option (disable Nagle's algorithm) on the TCP socket.
|
// Set the no-delay option (disable Nagle's algorithm) on the TCP socket.
|
||||||
evutil_socket_t fd = evhttp_bound_socket_get_fd(bind_handle);
|
evutil_socket_t fd = evhttp_bound_socket_get_fd(bind_handle);
|
||||||
int one = 1;
|
int one = 1;
|
||||||
if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (sockopt_arg_type)&one, sizeof(one)) == SOCKET_ERROR) {
|
if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast<char*>(&one), sizeof(one)) == SOCKET_ERROR) {
|
||||||
LogInfo("WARNING: Unable to set TCP_NODELAY on RPC server socket, continuing anyway\n");
|
LogInfo("WARNING: Unable to set TCP_NODELAY on RPC server socket, continuing anyway\n");
|
||||||
}
|
}
|
||||||
boundSockets.push_back(bind_handle);
|
boundSockets.push_back(bind_handle);
|
||||||
|
|||||||
+4
-4
@@ -1638,7 +1638,7 @@ std::pair<size_t, bool> CConnman::SocketSendData(CNode& node) const
|
|||||||
flags |= MSG_MORE;
|
flags |= MSG_MORE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
nBytes = node.m_sock->Send(reinterpret_cast<const char*>(data.data()), data.size(), flags);
|
nBytes = node.m_sock->Send(data.data(), data.size(), flags);
|
||||||
}
|
}
|
||||||
if (nBytes > 0) {
|
if (nBytes > 0) {
|
||||||
node.m_last_send = GetTime<std::chrono::seconds>();
|
node.m_last_send = GetTime<std::chrono::seconds>();
|
||||||
@@ -3136,7 +3136,7 @@ bool CConnman::BindListenPort(const CService& addrBind, bilingual_str& strError,
|
|||||||
|
|
||||||
// Allow binding if the port is still in TIME_WAIT state after
|
// Allow binding if the port is still in TIME_WAIT state after
|
||||||
// the program was closed and restarted.
|
// the program was closed and restarted.
|
||||||
if (sock->SetSockOpt(SOL_SOCKET, SO_REUSEADDR, (sockopt_arg_type)&nOne, sizeof(int)) == SOCKET_ERROR) {
|
if (sock->SetSockOpt(SOL_SOCKET, SO_REUSEADDR, &nOne, sizeof(int)) == SOCKET_ERROR) {
|
||||||
strError = Untranslated(strprintf("Error setting SO_REUSEADDR on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError())));
|
strError = Untranslated(strprintf("Error setting SO_REUSEADDR on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError())));
|
||||||
LogPrintf("%s\n", strError.original);
|
LogPrintf("%s\n", strError.original);
|
||||||
}
|
}
|
||||||
@@ -3145,14 +3145,14 @@ bool CConnman::BindListenPort(const CService& addrBind, bilingual_str& strError,
|
|||||||
// and enable it by default or not. Try to enable it, if possible.
|
// and enable it by default or not. Try to enable it, if possible.
|
||||||
if (addrBind.IsIPv6()) {
|
if (addrBind.IsIPv6()) {
|
||||||
#ifdef IPV6_V6ONLY
|
#ifdef IPV6_V6ONLY
|
||||||
if (sock->SetSockOpt(IPPROTO_IPV6, IPV6_V6ONLY, (sockopt_arg_type)&nOne, sizeof(int)) == SOCKET_ERROR) {
|
if (sock->SetSockOpt(IPPROTO_IPV6, IPV6_V6ONLY, &nOne, sizeof(int)) == SOCKET_ERROR) {
|
||||||
strError = Untranslated(strprintf("Error setting IPV6_V6ONLY on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError())));
|
strError = Untranslated(strprintf("Error setting IPV6_V6ONLY on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError())));
|
||||||
LogPrintf("%s\n", strError.original);
|
LogPrintf("%s\n", strError.original);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
int nProtLevel = PROTECTION_LEVEL_UNRESTRICTED;
|
int nProtLevel = PROTECTION_LEVEL_UNRESTRICTED;
|
||||||
if (sock->SetSockOpt(IPPROTO_IPV6, IPV6_PROTECTION_LEVEL, (const char*)&nProtLevel, sizeof(int)) == SOCKET_ERROR) {
|
if (sock->SetSockOpt(IPPROTO_IPV6, IPV6_PROTECTION_LEVEL, &nProtLevel, sizeof(int)) == SOCKET_ERROR) {
|
||||||
strError = Untranslated(strprintf("Error setting IPV6_PROTECTION_LEVEL on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError())));
|
strError = Untranslated(strprintf("Error setting IPV6_PROTECTION_LEVEL on socket: %s, continuing anyway", NetworkErrorString(WSAGetLastError())));
|
||||||
LogPrintf("%s\n", strError.original);
|
LogPrintf("%s\n", strError.original);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -551,7 +551,7 @@ std::unique_ptr<Sock> CreateSockOS(int domain, int type, int protocol)
|
|||||||
int set = 1;
|
int set = 1;
|
||||||
// Set the no-sigpipe option on the socket for BSD systems, other UNIXes
|
// Set the no-sigpipe option on the socket for BSD systems, other UNIXes
|
||||||
// should use the MSG_NOSIGNAL flag for every send.
|
// should use the MSG_NOSIGNAL flag for every send.
|
||||||
if (sock->SetSockOpt(SOL_SOCKET, SO_NOSIGPIPE, (void*)&set, sizeof(int)) == SOCKET_ERROR) {
|
if (sock->SetSockOpt(SOL_SOCKET, SO_NOSIGPIPE, &set, sizeof(int)) == SOCKET_ERROR) {
|
||||||
LogPrintf("Error setting SO_NOSIGPIPE on socket: %s, continuing anyway\n",
|
LogPrintf("Error setting SO_NOSIGPIPE on socket: %s, continuing anyway\n",
|
||||||
NetworkErrorString(WSAGetLastError()));
|
NetworkErrorString(WSAGetLastError()));
|
||||||
}
|
}
|
||||||
@@ -620,7 +620,7 @@ static bool ConnectToSocket(const Sock& sock, struct sockaddr* sockaddr, socklen
|
|||||||
// sockerr here.
|
// sockerr here.
|
||||||
int sockerr;
|
int sockerr;
|
||||||
socklen_t sockerr_len = sizeof(sockerr);
|
socklen_t sockerr_len = sizeof(sockerr);
|
||||||
if (sock.GetSockOpt(SOL_SOCKET, SO_ERROR, (sockopt_arg_type)&sockerr, &sockerr_len) ==
|
if (sock.GetSockOpt(SOL_SOCKET, SO_ERROR, &sockerr, &sockerr_len) ==
|
||||||
SOCKET_ERROR) {
|
SOCKET_ERROR) {
|
||||||
LogPrintf("getsockopt() for %s failed: %s\n", dest_str, NetworkErrorString(WSAGetLastError()));
|
LogPrintf("getsockopt() for %s failed: %s\n", dest_str, NetworkErrorString(WSAGetLastError()));
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ static bool SocketIsClosed(const SOCKET& s)
|
|||||||
// wrongly pretend that the socket is not closed.
|
// wrongly pretend that the socket is not closed.
|
||||||
int type;
|
int type;
|
||||||
socklen_t len = sizeof(type);
|
socklen_t len = sizeof(type);
|
||||||
return getsockopt(s, SOL_SOCKET, SO_TYPE, (sockopt_arg_type)&type, &len) == SOCKET_ERROR;
|
return getsockopt(s, SOL_SOCKET, SO_TYPE, reinterpret_cast<char*>(&type), &len) == SOCKET_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static SOCKET CreateSocket()
|
static SOCKET CreateSocket()
|
||||||
|
|||||||
Reference in new issue
Block a user