summaryrefslogtreecommitdiff
path: root/src/network/core/udp.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-04-02 19:21:26 +0000
committerrubidium <rubidium@openttd.org>2009-04-02 19:21:26 +0000
commitc0c6e07081fb55d1ec5c46cc3606185062cfe45c (patch)
treef53550975dd7d0507b3e94bded12ae75496aa6a7 /src/network/core/udp.cpp
parent804370d964486ab0ac51a7402e6b30fced5d31af (diff)
downloadopenttd-c0c6e07081fb55d1ec5c46cc3606185062cfe45c.tar.xz
(svn r15915) -Codechange: let the udp code use NetworkAddress.
Diffstat (limited to 'src/network/core/udp.cpp')
-rw-r--r--src/network/core/udp.cpp25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/network/core/udp.cpp b/src/network/core/udp.cpp
index 6c921ae0a..31ae8a446 100644
--- a/src/network/core/udp.cpp
+++ b/src/network/core/udp.cpp
@@ -82,14 +82,14 @@ NetworkRecvStatus NetworkUDPSocketHandler::CloseConnection()
* @param p the packet to send
* @param recv the receiver (target) of the packet
*/
-void NetworkUDPSocketHandler::SendPacket(Packet *p, const struct sockaddr_in *recv)
+void NetworkUDPSocketHandler::SendPacket(Packet *p, NetworkAddress *recv)
{
int res;
p->PrepareToSend();
/* Send the buffer */
- res = sendto(this->sock, (const char*)p->buffer, p->size, 0, (struct sockaddr *)recv, sizeof(*recv));
+ res = sendto(this->sock, (const char*)p->buffer, p->size, 0, (struct sockaddr *)recv->GetAddress(), sizeof(*recv->GetAddress()));
/* Check for any errors, but ignore it otherwise */
if (res == -1) DEBUG(net, 1, "[udp] sendto failed with: %i", GET_LAST_ERROR());
@@ -100,7 +100,7 @@ void NetworkUDPSocketHandler::SendPacket(Packet *p, const struct sockaddr_in *re
*/
void NetworkUDPSocketHandler::ReceivePackets()
{
- struct sockaddr_in client_addr;
+ struct sockaddr_storage client_addr;
socklen_t client_len;
int nbytes;
Packet p(this);
@@ -117,19 +117,18 @@ void NetworkUDPSocketHandler::ReceivePackets()
/* We got some bytes for the base header of the packet. */
if (nbytes > 2) {
+ NetworkAddress address(client_addr);
p.PrepareToRead();
/* If the size does not match the packet must be corrupted.
* Otherwise it will be marked as corrupted later on. */
if (nbytes != p.size) {
- DEBUG(net, 1, "received a packet with mismatching size from %s:%d",
- inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
-
+ DEBUG(net, 1, "received a packet with mismatching size from %s", address.GetAddressAsString());
return;
}
/* Handle the packet */
- this->HandleUDPPacket(&p, &client_addr);
+ this->HandleUDPPacket(&p, &address);
}
}
@@ -277,7 +276,7 @@ void NetworkUDPSocketHandler::Recv_NetworkGameInfo(Packet *p, NetworkGameInfo *i
* @param p the received packet
* @param client_addr the sender of the packet
*/
-void NetworkUDPSocketHandler::HandleUDPPacket(Packet *p, const struct sockaddr_in *client_addr)
+void NetworkUDPSocketHandler::HandleUDPPacket(Packet *p, NetworkAddress *client_addr)
{
PacketUDPType type;
@@ -301,9 +300,9 @@ void NetworkUDPSocketHandler::HandleUDPPacket(Packet *p, const struct sockaddr_i
default:
if (this->HasClientQuit()) {
- DEBUG(net, 0, "[udp] received invalid packet type %d from %s:%d", type, inet_ntoa(client_addr->sin_addr), ntohs(client_addr->sin_port));
+ DEBUG(net, 0, "[udp] received invalid packet type %d from %s", type, client_addr->GetAddressAsString());
} else {
- DEBUG(net, 0, "[udp] received illegal packet from %s:%d", inet_ntoa(client_addr->sin_addr), ntohs(client_addr->sin_port));
+ DEBUG(net, 0, "[udp] received illegal packet from %s", client_addr->GetAddressAsString());
}
break;
}
@@ -317,9 +316,9 @@ void NetworkUDPSocketHandler::HandleUDPPacket(Packet *p, const struct sockaddr_i
*/
#define DEFINE_UNAVAILABLE_UDP_RECEIVE_COMMAND(type) \
void NetworkUDPSocketHandler::NetworkPacketReceive_## type ##_command(\
- Packet *p, const struct sockaddr_in *client_addr) { \
- DEBUG(net, 0, "[udp] received packet type %d on wrong port from %s:%d", \
- type, inet_ntoa(client_addr->sin_addr), ntohs(client_addr->sin_port)); \
+ Packet *p, NetworkAddress *client_addr) { \
+ DEBUG(net, 0, "[udp] received packet type %d on wrong port from %s", \
+ type, client_addr->GetAddressAsString()); \
}
DEFINE_UNAVAILABLE_UDP_RECEIVE_COMMAND(PACKET_UDP_CLIENT_FIND_SERVER);