From 34a9ca20a75db36d63549a8a9dfe2cc5e21f338d Mon Sep 17 00:00:00 2001 From: oy Date: Mon, 28 Mar 2011 20:11:28 +0200 Subject: added ipv6 support from the old lua branch --- src/engine/client/client.cpp | 28 ++++++++++------------------ src/engine/client/serverbrowser.cpp | 6 ++---- 2 files changed, 12 insertions(+), 22 deletions(-) (limited to 'src/engine/client') diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index 198f5f1a..a39bfb5b 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -692,20 +692,8 @@ void CClient::Connect(const char *pAddress) m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "client", aBuf); ServerInfoRequest(); - str_copy(aBuf, m_aServerAddressStr, sizeof(aBuf)); - for(int k = 0; aBuf[k]; k++) - { - if(aBuf[k] == ':') - { - Port = str_toint(aBuf+k+1); - aBuf[k] = 0; - break; - } - } - - // TODO: IPv6 support - if(net_host_lookup(aBuf, &m_ServerAddress, NETTYPE_IPV4) != 0) + if(net_host_lookup(m_aServerAddressStr, &m_ServerAddress, NETTYPE_ALL) != 0) { char aBufMsg[256]; str_format(aBufMsg, sizeof(aBufMsg), "could not find the address of %s, connecting to localhost", aBuf); @@ -714,7 +702,8 @@ void CClient::Connect(const char *pAddress) } m_RconAuthed = 0; - m_ServerAddress.port = Port; + if(m_ServerAddress.port == 0) + m_ServerAddress.port = Port; m_NetClient.Connect(&m_ServerAddress); SetState(IClient::STATE_CONNECTING); @@ -1119,9 +1108,7 @@ void CClient::ProcessConnlessPacket(CNetChunk *pPacket) Info.m_NumPlayers < 0 || Info.m_NumPlayers > Info.m_NumClients || Info.m_MaxPlayers < 0 || Info.m_MaxPlayers > Info.m_MaxClients) return; - str_format(Info.m_aAddress, sizeof(Info.m_aAddress), "%d.%d.%d.%d:%d", - pPacket->m_Address.ip[0], pPacket->m_Address.ip[1], pPacket->m_Address.ip[2], - pPacket->m_Address.ip[3], pPacket->m_Address.port); + net_addr_str(&pPacket->m_Address, Info.m_aAddress, sizeof(Info.m_aAddress)); for(int i = 0; i < Info.m_NumClients; i++) { @@ -1868,7 +1855,12 @@ void CClient::Run() { NETADDR BindAddr; mem_zero(&BindAddr, sizeof(BindAddr)); - m_NetClient.Open(BindAddr, 0); + BindAddr.type = NETTYPE_ALL; + if(!m_NetClient.Open(BindAddr, 0)) + { + dbg_msg("client", "couldn't start network"); + return; + } } // connect to the server if wanted diff --git a/src/engine/client/serverbrowser.cpp b/src/engine/client/serverbrowser.cpp index d4efe975..55d25f8a 100644 --- a/src/engine/client/serverbrowser.cpp +++ b/src/engine/client/serverbrowser.cpp @@ -492,12 +492,10 @@ void CServerBrowser::Refresh(int Type) mem_copy(Buffer, SERVERBROWSE_GETINFO, sizeof(SERVERBROWSE_GETINFO)); Buffer[sizeof(SERVERBROWSE_GETINFO)] = m_CurrentToken; + /* do the broadcast version */ Packet.m_ClientID = -1; mem_zero(&Packet, sizeof(Packet)); - Packet.m_Address.ip[0] = 255; - Packet.m_Address.ip[1] = 255; - Packet.m_Address.ip[2] = 255; - Packet.m_Address.ip[3] = 255; + Packet.m_Address.type = NETTYPE_ALL|NETTYPE_LINK_BROADCAST; Packet.m_Flags = NETSENDFLAG_CONNLESS; Packet.m_DataSize = sizeof(Buffer); Packet.m_pData = Buffer; -- cgit 1.4.1