mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-10 14:48:46 +02:00
Merge bitcoin/bitcoin#33378: Remove unnecessary casts when calling socket operations
67f632b6denet: remove unnecessary casts in socket operations (Matthew Zipkin) Pull request description: During review of https://github.com/bitcoin/bitcoin/pull/32747 several casting operations were questioned in existing code that had been copied or moved. That lead me to find a few other similar casts in the codebase. It turns out that since the `Sock` class wraps syscalls with its own internal casting (see https://github.com/bitcoin/bitcoin/pull/24357 and https://github.com/bitcoin/bitcoin/pull/20788 written in 2020-2022) we no longer need to cast the arguments when calling these functions. The original argument-casts are old and were cleaned up a bit in https://github.com/bitcoin/bitcoin/pull/12855 written in 2018. The casting is only needed for windows compatibility, where those syscalls require a data argument to be of type `char*` specifically: https://learn.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-getsockopt ``` int getsockopt( [in] SOCKET s, [in] int level, [in] int optname, [out] char *optval, [in, out] int *optlen ); ``` but on POSIX the argument is `void*`: https://www.man7.org/linux/man-pages/man2/getsockopt.2.html ``` int getsockopt(socklen *restrict optlen; int sockfd, int level, int optname, void optval[_Nullable restrict *optlen], socklen_t *restrict optlen); ``` ACKs for top commit: Raimo33: ACK67f632b6deachow101: ACK67f632b6dehodlinator: ACK67f632b6devasild: ACK67f632b6dedavidgumberg: ACK67f632b6deTree-SHA512: c326d7242698b8d4d019f630fb6281398da2773c4e5aad1e3bba093a012c2119ad8815f42bd009e61a9a90db9b8e6ed5c75174aac059c9df83dd3aa5618a9ba6
This commit is contained in:
@@ -24,7 +24,7 @@ static bool SocketIsClosed(const SOCKET& s)
|
||||
// wrongly pretend that the socket is not closed.
|
||||
int 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()
|
||||
|
||||
Reference in New Issue
Block a user