Added multiple port support on bgft

This commit is contained in:
SiSTR0 committed 2022-01-18 19:53:28 +01:00
1 parent 7bac04ce78
commit b2012aa1d2
1 file changed
+12 -5
+12 -5
View File
@@ -77,6 +77,9 @@ int main(int argc, const char** argv)
}
in_addr_t ps4_ip = 0;
int interactive = 0;
int binloader_ports[3] = { 9021, 9020, 9090 };
int binloader_idx = 0;
if(argv[2])
ps4_ip = inet_addr(argv[2]);
else
@@ -118,19 +121,23 @@ int main(int argc, const char** argv)
struct sockaddr_in connect_addr = {
.sin_family = AF_INET,
.sin_addr = {.s_addr = ps4_ip},
.sin_port = htons(9021)
.sin_port = htons(binloader_ports[binloader_idx])
};
retry_connect:;
SOCKET connect_sock = socket(AF_INET, SOCK_STREAM, 0);
if(connect_sock == INVALID_SOCKET)
fail(closesocket(accept_sock), "Could not create socket");
printf("Trying to connect to port %d...\n", binloader_ports[binloader_idx]);
if(connect(connect_sock, (struct sockaddr*)&connect_addr, sizeof(connect_addr)))
{
if(ERRNO == ECONNREFUSED && connect_addr.sin_port == htons(9021))
if(ERRNO == ECONNREFUSED && connect_addr.sin_port == htons(binloader_ports[binloader_idx]))
{
connect_addr.sin_port = htons(9020);
closesocket(connect_sock);
goto retry_connect;
binloader_idx++;
if (binloader_idx < sizeof(binloader_ports) / sizeof(int)) {
connect_addr.sin_port = htons(binloader_ports[binloader_idx]);
closesocket(connect_sock);
goto retry_connect;
}
}
fail(fclose(pkg); closesocket(accept_sock); closesocket(connect_sock), "Could not connect to PS4");
}