1
0
Fork 0

(svn r15917) -Codechange: remove the latest traces of NetworkAddress::GetIP.

release/1.0
rubidium 2009-04-02 20:39:30 +00:00
parent 1e205e01b8
commit c5160c7c8e
6 changed files with 21 additions and 38 deletions

View File

@ -21,17 +21,6 @@ const char *NetworkAddress::GetHostname()
return this->hostname; return this->hostname;
} }
uint32 NetworkAddress::GetIP()
{
assert(this->address.ss_family == AF_INET);
if (!this->resolved) {
((struct sockaddr_in *)&this->address)->sin_addr.s_addr = NetworkResolveHost(this->hostname);
this->resolved = true;
}
return ((struct sockaddr_in *)&this->address)->sin_addr.s_addr;
}
uint16 NetworkAddress::GetPort() const uint16 NetworkAddress::GetPort() const
{ {
switch (this->address.ss_family) { switch (this->address.ss_family) {
@ -66,7 +55,10 @@ const char *NetworkAddress::GetAddressAsString()
const sockaddr_storage *NetworkAddress::GetAddress() const sockaddr_storage *NetworkAddress::GetAddress()
{ {
if (!this->resolved) this->GetIP(); if (!this->resolved) {
((struct sockaddr_in *)&this->address)->sin_addr.s_addr = NetworkResolveHost(this->hostname);
this->resolved = true;
}
return &this->address; return &this->address;
} }

View File

@ -97,13 +97,6 @@ public:
*/ */
const sockaddr_storage *GetAddress(); const sockaddr_storage *GetAddress();
/**
* Get the IP address. If the IP has not been resolved yet this will resolve
* it possibly blocking this function for a while
* @return the IP address
*/
uint32 GetIP();
/** /**
* Get the port * Get the port
* @return the port * @return the port
@ -131,12 +124,20 @@ public:
*/ */
bool operator == (NetworkAddress &address) bool operator == (NetworkAddress &address)
{ {
if (this->IsResolved() != address.IsResolved()) return false; if (this->IsResolved() && address.IsResolved()) return memcmp(&this->address, &address.address, sizeof(this->address)) == 0;
if (this->IsResolved()) return memcmp(&this->address, &address.address, sizeof(this->address)) == 0;
return this->GetPort() == address.GetPort() && strcmp(this->GetHostname(), address.GetHostname()) == 0; return this->GetPort() == address.GetPort() && strcmp(this->GetHostname(), address.GetHostname()) == 0;
} }
NetworkAddress& operator = (const NetworkAddress &other)
{
if (this != &other) { // protect against invalid self-assignment
free(this->hostname);
memcpy(this, &other, sizeof(*this));
if (other.hostname != NULL) this->hostname = strdup(other.hostname);
}
return *this;
}
}; };
#endif /* ENABLE_NETWORK */ #endif /* ENABLE_NETWORK */

View File

@ -41,13 +41,8 @@ void TCPConnecter::Connect()
if (!SetNoDelay(this->sock)) DEBUG(net, 1, "Setting TCP_NODELAY failed"); if (!SetNoDelay(this->sock)) DEBUG(net, 1, "Setting TCP_NODELAY failed");
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = address.GetIP();
sin.sin_port = htons(address.GetPort());
/* We failed to connect for which reason what so ever */ /* We failed to connect for which reason what so ever */
if (connect(this->sock, (struct sockaddr*) &sin, sizeof(sin)) != 0) { if (connect(this->sock, (struct sockaddr*)this->address.GetAddress(), sizeof(*this->address.GetAddress())) != 0) {
closesocket(this->sock); closesocket(this->sock);
this->sock = INVALID_SOCKET; this->sock = INVALID_SOCKET;
this->aborted = true; this->aborted = true;

View File

@ -1090,7 +1090,6 @@ void NetworkStartDebugLog(NetworkAddress address)
{ {
extern SOCKET _debug_socket; // Comes from debug.c extern SOCKET _debug_socket; // Comes from debug.c
SOCKET s; SOCKET s;
struct sockaddr_in sin;
DEBUG(net, 0, "Redirecting DEBUG() to %s:%d", address.GetHostname(), address.GetPort()); DEBUG(net, 0, "Redirecting DEBUG() to %s:%d", address.GetHostname(), address.GetPort());
@ -1102,12 +1101,8 @@ void NetworkStartDebugLog(NetworkAddress address)
if (!SetNoDelay(s)) DEBUG(net, 1, "Setting TCP_NODELAY failed"); if (!SetNoDelay(s)) DEBUG(net, 1, "Setting TCP_NODELAY failed");
sin.sin_family = AF_INET; if (connect(s, (struct sockaddr *)address.GetAddress(), sizeof(*address.GetAddress())) != 0) {
sin.sin_addr.s_addr = address.GetIP(); DEBUG(net, 0, "Failed to redirection DEBUG() to %s", address.GetAddressAsString());
sin.sin_port = htons(address.GetPort());
if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) != 0) {
DEBUG(net, 0, "Failed to redirection DEBUG() to %s:%d", address.GetHostname(), address.GetPort());
return; return;
} }

View File

@ -65,7 +65,7 @@ static void NetworkGameListHandleDelayedInsert()
* @return a point to the newly added or already existing item */ * @return a point to the newly added or already existing item */
NetworkGameList *NetworkGameListAddItem(NetworkAddress address) NetworkGameList *NetworkGameListAddItem(NetworkAddress address)
{ {
if (!address.IsResolved()) return NULL; if (StrEmpty(address.GetHostname())) return NULL;
NetworkGameList *item, *prev_item; NetworkGameList *item, *prev_item;

View File

@ -429,7 +429,7 @@ void NetworkUDPQueryServerThread(void *pntr)
/* Clear item in gamelist */ /* Clear item in gamelist */
NetworkGameList *item = CallocT<NetworkGameList>(1); NetworkGameList *item = CallocT<NetworkGameList>(1);
item->address = NetworkAddress(*info); item->address = *info;
strecpy(item->info.server_name, info->GetHostname(), lastof(item->info.server_name)); strecpy(item->info.server_name, info->GetHostname(), lastof(item->info.server_name));
strecpy(item->info.hostname, info->GetHostname(), lastof(item->info.hostname)); strecpy(item->info.hostname, info->GetHostname(), lastof(item->info.hostname));
item->manually = info->manually; item->manually = info->manually;