From 804370d964486ab0ac51a7402e6b30fced5d31af Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 2 Apr 2009 18:35:59 +0000 Subject: (svn r15914) -Codechange: let the content handling make use of NetworkAddress. --- src/network/core/address.cpp | 11 +++++++++++ src/network/core/address.h | 10 ++++++++-- src/network/core/tcp_content.cpp | 8 ++++---- src/network/core/tcp_content.h | 10 +++++----- src/network/network_content.cpp | 2 +- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index 637f0fe7b..cbb9defb0 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -7,7 +7,9 @@ #ifdef ENABLE_NETWORK #include "address.h" +#include "config.h" #include "host.h" +#include "../../string_func.h" const char *NetworkAddress::GetHostname() const { @@ -27,4 +29,13 @@ uint32 NetworkAddress::GetIP() return this->ip; } +const char *NetworkAddress::GetAddressAsString() const +{ + /* 6 = for the : and 5 for the decimal port number */ + static char buf[NETWORK_HOSTNAME_LENGTH + 6]; + + seprintf(buf, lastof(buf), "%s:%d", this->GetHostname(), this->GetPort()); + return buf; +} + #endif /* ENABLE_NETWORK */ diff --git a/src/network/core/address.h b/src/network/core/address.h index 62e79f3de..30d86b5e8 100644 --- a/src/network/core/address.h +++ b/src/network/core/address.h @@ -40,9 +40,9 @@ public: * @param ip the unresolved hostname * @param port the port */ - NetworkAddress(const char *hostname, uint16 port) : + NetworkAddress(const char *hostname = NULL, uint16 port = 0) : resolved(false), - hostname(strdup(hostname)), + hostname(hostname == NULL ? NULL : strdup(hostname)), ip(0), port(port) { @@ -73,6 +73,12 @@ public: */ const char *GetHostname() const; + /** + * Get the address as a string, e.g. 127.0.0.1:12345. + * @return the address + */ + const char *GetAddressAsString() const; + /** * Get the IP address. If the IP has not been resolved yet this will resolve * it possibly blocking this function for a while diff --git a/src/network/core/tcp_content.cpp b/src/network/core/tcp_content.cpp index 7596cced8..889f627c7 100644 --- a/src/network/core/tcp_content.cpp +++ b/src/network/core/tcp_content.cpp @@ -84,9 +84,9 @@ bool NetworkContentSocketHandler::HandlePacket(Packet *p) default: if (this->HasClientQuit()) { - DEBUG(net, 0, "[tcp/content] received invalid packet type %d from %s:%d", type, inet_ntoa(this->client_addr.sin_addr), ntohs(this->client_addr.sin_port)); + DEBUG(net, 0, "[tcp/content] received invalid packet type %d from %s", type, this->client_addr.GetAddressAsString()); } else { - DEBUG(net, 0, "[tcp/content] received illegal packet from %s:%d", inet_ntoa(this->client_addr.sin_addr), ntohs(this->client_addr.sin_port)); + DEBUG(net, 0, "[tcp/content] received illegal packet from %s", this->client_addr.GetAddressAsString()); } return false; } @@ -114,8 +114,8 @@ void NetworkContentSocketHandler::Recv_Packets() */ #define DEFINE_UNAVAILABLE_CONTENT_RECEIVE_COMMAND(type) \ bool NetworkContentSocketHandler::NetworkPacketReceive_## type ##_command(Packet *p) { \ - DEBUG(net, 0, "[tcp/content] received illegal packet type %d from %s:%d", \ - type, inet_ntoa(this->client_addr.sin_addr), ntohs(this->client_addr.sin_port)); \ + DEBUG(net, 0, "[tcp/content] received illegal packet type %d from %s", \ + type, this->client_addr.GetAddressAsString()); \ return false; \ } diff --git a/src/network/core/tcp_content.h b/src/network/core/tcp_content.h index 26f5878ad..8313c733b 100644 --- a/src/network/core/tcp_content.h +++ b/src/network/core/tcp_content.h @@ -101,7 +101,7 @@ struct ContentInfo { /** Base socket handler for all Content TCP sockets */ class NetworkContentSocketHandler : public NetworkTCPSocketHandler { protected: - struct sockaddr_in client_addr; ///< The address we're connected to. + struct NetworkAddress client_addr; ///< The address we're connected to. virtual void Close(); /** @@ -187,12 +187,12 @@ public: /** * Create a new cs socket handler for a given cs * @param s the socket we are connected with - * @param sin IP etc. of the client + * @param address IP etc. of the client */ - NetworkContentSocketHandler(SOCKET s, const struct sockaddr_in *sin) : - NetworkTCPSocketHandler(s) + NetworkContentSocketHandler(SOCKET s = INVALID_SOCKET, const NetworkAddress &address = NetworkAddress()) : + NetworkTCPSocketHandler(s), + client_addr(address) { - if (sin != NULL) this->client_addr = *sin; } /** On destructing of this class, the socket needs to be closed */ diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp index a37e894c1..9a82154b4 100644 --- a/src/network/network_content.cpp +++ b/src/network/network_content.cpp @@ -426,7 +426,7 @@ DEF_CONTENT_RECEIVE_COMMAND(Client, PACKET_CONTENT_SERVER_CONTENT) * @param sin the IP/port of the server */ ClientNetworkContentSocketHandler::ClientNetworkContentSocketHandler() : - NetworkContentSocketHandler(INVALID_SOCKET, NULL), + NetworkContentSocketHandler(), curFile(NULL), curInfo(NULL), isConnecting(false) -- cgit v1.2.3-70-g09d2