JustPaste.it

BOOL Server1 = FALSE, Server2 = FALSE, Server3 = FALSE, Server4 = FALSE;


BYTE VPS1[4] = { 0, 0, 0, 0 }; //1
BYTE VPS2[4] = { 0, 0, 0, 0}; //
BYTE VPS3[4] = { 0, 0, 0, 0 };
BYTE VPS4[4] = { 0, 0, 0, 0 };
WORD PORT1 = { 2500 }; //1st VPS
WORD PORT2 = { 2000 }; //2nd VPS
WORD PORT3 = { 2001 }; //3rd VPS
WORD PORT4 = { 2003 }; //4th VPS

BOOL Connect() 
{
start:
    WSADATA WsaData = { 0 };
    if (NetDll_WSAStartupEx(XNCALLER_SYSAPP, WINSOCK_VERSION, &WsaData, WINSOCK_VERSION) != 0) 
    {
        xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
        goto start;
    }

    if ((Socket = NetDll_socket(XNCALLER_SYSAPP, AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) 
    {
        xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
        goto start;
    }

    BOOL SockOpt = TRUE;
    if (NetDll_setsockopt(XNCALLER_SYSAPP, Socket, SOL_SOCKET, SO_MARKINSECURE, (CONST PCHAR) & SockOpt, sizeof(BOOL)) != 0) 
    {
        xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
        lastSocketError = WSAGetLastError();
        xbox::utilities::DbgOut("[SIlent] setsockopt error %d", lastSocketError);
        goto start;
    }

    DWORD MaxPacketSize = 0x800;
    if (NetDll_setsockopt(XNCALLER_SYSAPP, Socket, SOL_SOCKET, SO_SNDBUF, (CONST PCHAR)&MaxPacketSize, sizeof(DWORD)) != 0) 
    {
        xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
        lastSocketError = WSAGetLastError();
        xbox::utilities::DbgOut("[SIlent] setsockopt error %d", lastSocketError);
        goto start;
    }

    if (NetDll_setsockopt(XNCALLER_SYSAPP, Socket, SOL_SOCKET, SO_RCVBUF, (CONST PCHAR)&MaxPacketSize, sizeof(DWORD)) != 0)
    {
        xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
        lastSocketError = WSAGetLastError();
        xbox::utilities::DbgOut("[SIlent] setsockopt error %d\n", lastSocketError);
        goto start;
    }

    if (!Server1) {
        sockaddr_in sockAddr = { 0 };
        sockAddr.sin_family = AF_INET;
        sockAddr.sin_addr.S_un.S_addr = *(PDWORD)VPS1;
        sockAddr.sin_port = htons(PORT1);
        if (NetDll_connect(XNCALLER_SYSAPP, Socket, (struct sockaddr*)&sockAddr, sizeof(sockAddr)) == SOCKET_ERROR)
        {
            //xbox::utilities::DbgOut("[SIlent] #Failed to Connect Server 1\n");
            Server1 = TRUE;
            goto start;
        }
    }
    else if (!Server2)
    {
        sockaddr_in sockAddr2 = { 0 };
        sockAddr2.sin_family = AF_INET;
        sockAddr2.sin_addr.S_un.S_addr = *(PDWORD)VPS2;
        sockAddr2.sin_port = htons(PORT2);
        if (NetDll_connect(XNCALLER_SYSAPP, Socket, (struct sockaddr*)&sockAddr2, sizeof(sockAddr2)) == SOCKET_ERROR)
        {
            Sleep(5000);
            //xbox::utilities::DbgOut("[SIlent] #Failed to Connect Server 2\n");
            Server2 = TRUE;
            goto start;
        }
    }
    else if (!Server3)
    {
        sockaddr_in sockAddr3 = { 0 };
        sockAddr3.sin_family = AF_INET;
        sockAddr3.sin_addr.S_un.S_addr = *(PDWORD)VPS3;
        sockAddr3.sin_port = htons(PORT3);
        if (NetDll_connect(XNCALLER_SYSAPP, Socket, (struct sockaddr*)&sockAddr3, sizeof(sockAddr3)) == SOCKET_ERROR)
        {
            //xbox::utilities::DbgOut("[SIlent] #Failed to Connect Server 3\n");
            Server3 = TRUE;
            goto start;
        }
    }
    else if (!Server4)
    {
        sockaddr_in sockAddr4 = { 0 };
        sockAddr4.sin_family = AF_INET;
        sockAddr4.sin_addr.S_un.S_addr = *(PDWORD)VPS4;
        sockAddr4.sin_port = htons(PORT4);
        if (NetDll_connect(XNCALLER_SYSAPP, Socket, (struct sockaddr*)&sockAddr4, sizeof(sockAddr4)) == SOCKET_ERROR)
        {
            Sleep(5000);
            xbox::utilities::DbgOut("[SIlent] #9989 cannot connect to the server please check ethernet cable or wireless card\n");
            lastSocketError = WSAGetLastError();
            xbox::utilities::DbgOut("[SIlent] setsockopt error %d\n", lastSocketError);
            //xbox::utilities::DbgOut("[SIlent] #Failed to Connect Server 4\n");
            Server4 = TRUE;
            goto start;
        }
    }
    else {
        xbox::utilities::DbgOut("[SIlent] #No Active Connections\n");
        xbox::utilities::XNotify("SIlent - Not Connected to Network!");
        Connected = FALSE;
        goto start;
    }

    return Connected = TRUE;
}