Initialize some socket-related structs to avoid unexpected behavior. (May fix Unknown Source Port issue)

This commit is contained in:
ANR2ME 2022-03-16 03:51:46 +07:00
parent 9209fb7c6e
commit 2b09f81ff8
2 changed files with 12 additions and 12 deletions

View file

@ -1795,7 +1795,7 @@ int getLocalIp(sockaddr_in* SocketAddress) {
#if !PPSSPP_PLATFORM(SWITCH)
if (metasocket != (int)INVALID_SOCKET) {
struct sockaddr_in localAddr;
struct sockaddr_in localAddr {};
localAddr.sin_addr.s_addr = INADDR_ANY;
socklen_t addrLen = sizeof(localAddr);
int ret = getsockname((int)metasocket, (struct sockaddr*)&localAddr, &addrLen);
@ -1876,7 +1876,7 @@ int getLocalIp(sockaddr_in* SocketAddress) {
}
uint32_t getLocalIp(int sock) {
struct sockaddr_in localAddr;
struct sockaddr_in localAddr {};
localAddr.sin_addr.s_addr = INADDR_ANY;
socklen_t addrLen = sizeof(localAddr);
getsockname(sock, (struct sockaddr*)&localAddr, &addrLen);
@ -1887,7 +1887,7 @@ uint32_t getLocalIp(int sock) {
}
static std::vector<std::pair<uint32_t, uint32_t>> InitPrivateIPRanges() {
struct sockaddr_in saNet, saMask;
struct sockaddr_in saNet {}, saMask{};
std::vector<std::pair<uint32_t, uint32_t>> ip_ranges;
if (1 == inet_pton(AF_INET, "192.168.0.0", &(saNet.sin_addr)) && 1 == inet_pton(AF_INET, "255.255.0.0", &(saMask.sin_addr)))
@ -1934,7 +1934,7 @@ void getLocalMac(SceNetEtherAddr * addr){
}
uint16_t getLocalPort(int sock) {
struct sockaddr_in localAddr;
struct sockaddr_in localAddr {};
localAddr.sin_port = 0;
socklen_t addrLen = sizeof(localAddr);
getsockname(sock, (struct sockaddr*)&localAddr, &addrLen);

View file

@ -600,7 +600,7 @@ int DoBlockingPdpSend(int uid, AdhocSocketRequest& req, s64& result, AdhocSendTa
bool retry = false;
for (auto peer = targetPeers.peers.begin(); peer != targetPeers.peers.end(); ) {
// Fill in Target Structure
struct sockaddr_in target;
struct sockaddr_in target {};
target.sin_family = AF_INET;
target.sin_addr.s_addr = peer->ip;
target.sin_port = htons(peer->port + ((isOriPort && !isPrivateIP(peer->ip)) ? 0 : portOffset));
@ -1379,7 +1379,7 @@ static int sceNetAdhocPdpCreate(const char *mac, int port, int bufferSize, u32 f
setUDPConnReset(usocket, false);
// Binding Information for local Port
struct sockaddr_in addr;
struct sockaddr_in addr {};
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
if (isLocalServer) {
@ -1577,7 +1577,7 @@ static int sceNetAdhocPdpSend(int id, const char *mac, u32 port, void *data, int
// Single Target
if (!isBroadcastMAC(daddr)) {
// Fill in Target Structure
struct sockaddr_in target;
struct sockaddr_in target {};
target.sin_family = AF_INET;
target.sin_port = htons(dport + portOffset);
@ -1687,7 +1687,7 @@ static int sceNetAdhocPdpSend(int id, const char *mac, u32 port, void *data, int
// Iterate Peers
for (auto peer : dest.peers) {
// Fill in Target Structure
struct sockaddr_in target;
struct sockaddr_in target {};
target.sin_family = AF_INET;
target.sin_addr.s_addr = peer.ip;
target.sin_port = htons(dport + ((isOriPort && !isPrivateIP(peer.ip)) ? 0 : portOffset));
@ -2164,7 +2164,7 @@ int NetAdhocPdp_Delete(int id, int unknown) {
// Valid Socket
if (sock != NULL && sock->type == SOCK_PDP) {
// Close Connection
struct linger sl;
struct linger sl {};
sl.l_onoff = 1; // non-zero value enables linger option in kernel
sl.l_linger = 0; // timeout interval in seconds
setsockopt(sock->data.pdp.id, SOL_SOCKET, SO_LINGER, (const char*)&sl, sizeof(sl));
@ -3307,7 +3307,7 @@ static int sceNetAdhocPtpOpen(const char *srcmac, int sport, const char *dstmac,
setSockNoDelay(tcpsocket, 1);
// Binding Information for local Port
struct sockaddr_in addr;
struct sockaddr_in addr {};
// addr.sin_len = sizeof(addr);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
@ -3776,7 +3776,7 @@ int NetAdhocPtp_Close(int id, int unknown) {
// Valid Socket
if (socket != NULL && socket->type == SOCK_PTP) {
// Close Connection
struct linger sl;
struct linger sl {};
sl.l_onoff = 1; // non-zero value enables linger option in kernel
sl.l_linger = 0; // timeout interval in seconds
setsockopt(socket->data.ptp.id, SOL_SOCKET, SO_LINGER, (const char*)&sl, sizeof(sl));
@ -3892,7 +3892,7 @@ static int sceNetAdhocPtpListen(const char *srcmac, int sport, int bufsize, int
setSockNoDelay(tcpsocket, 1);
// Binding Information for local Port
struct sockaddr_in addr;
struct sockaddr_in addr {};
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
if (isLocalServer) {