summaryrefslogtreecommitdiff
path: root/src/network/network_udp.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-01-20 01:32:06 +0000
committerrubidium <rubidium@openttd.org>2009-01-20 01:32:06 +0000
commit5f3772a42c322a99d2ea57b6c97b76fceccbb781 (patch)
treef14ce239c04d4b6e3d7f4dbe6723e777a42cc03f /src/network/network_udp.cpp
parent6e1af6a051b5129c0703dd654794427094d672c8 (diff)
downloadopenttd-5f3772a42c322a99d2ea57b6c97b76fceccbb781.tar.xz
(svn r15157) -Codechange: wrap the hostname/ip and port into a single structure so we can pass either one of them and not convert an ip to a string and then back again.
Diffstat (limited to 'src/network/network_udp.cpp')
-rw-r--r--src/network/network_udp.cpp27
1 files changed, 11 insertions, 16 deletions
diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp
index 822347b41..9c42d8d31 100644
--- a/src/network/network_udp.cpp
+++ b/src/network/network_udp.cpp
@@ -276,27 +276,22 @@ DEF_UDP_RECEIVE_COMMAND(Client, PACKET_UDP_SERVER_RESPONSE)
DEF_UDP_RECEIVE_COMMAND(Client, PACKET_UDP_MASTER_RESPONSE_LIST)
{
- int i;
- struct in_addr ip;
- uint16 port;
- uint8 ver;
-
/* packet begins with the protocol version (uint8)
* then an uint16 which indicates how many
* ip:port pairs are in this packet, after that
* an uint32 (ip) and an uint16 (port) for each pair
*/
- ver = p->Recv_uint8();
+ uint8 ver = p->Recv_uint8();
if (ver == 1) {
- for (i = p->Recv_uint16(); i != 0 ; i--) {
- ip.s_addr = TO_LE32(p->Recv_uint32());
- port = p->Recv_uint16();
+ for (int i = p->Recv_uint16(); i != 0 ; i--) {
+ uint32 ip = TO_LE32(p->Recv_uint32());
+ uint16 port = p->Recv_uint16();
/* Somehow we reached the end of the packet */
if (this->HasClientQuit()) return;
- NetworkUDPQueryServer(inet_ntoa(ip), port);
+ NetworkUDPQueryServer(NetworkAddress(ip, port));
}
}
}
@@ -425,7 +420,7 @@ void NetworkUDPSearchGame()
_network_udp_broadcast = 300; // Stay searching for 300 ticks
}
-void NetworkUDPQueryServer(const char *host, unsigned short port, bool manually)
+void NetworkUDPQueryServer(NetworkAddress address, bool manually)
{
struct sockaddr_in out_addr;
NetworkGameList *item;
@@ -436,17 +431,17 @@ void NetworkUDPQueryServer(const char *host, unsigned short port, bool manually)
}
out_addr.sin_family = AF_INET;
- out_addr.sin_port = htons(port);
- out_addr.sin_addr.s_addr = NetworkResolveHost(host);
+ out_addr.sin_port = htons(address.GetPort());
+ out_addr.sin_addr.s_addr = address.GetIP();
// Clear item in gamelist
- item = NetworkGameListAddItem(inet_addr(inet_ntoa(out_addr.sin_addr)), ntohs(out_addr.sin_port));
+ item = NetworkGameListAddItem(address.GetIP(), address.GetPort());
if (item == NULL) return;
if (StrEmpty(item->info.server_name)) {
memset(&item->info, 0, sizeof(item->info));
- strecpy(item->info.server_name, host, lastof(item->info.server_name));
- strecpy(item->info.hostname, host, lastof(item->info.hostname));
+ strecpy(item->info.server_name, address.GetHostname(), lastof(item->info.server_name));
+ strecpy(item->info.hostname, address.GetHostname(), lastof(item->info.hostname));
item->online = false;
}
item->manually = manually;