summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/network/core/address.cpp9
-rw-r--r--src/network/core/address.h5
-rw-r--r--src/network/network_content.cpp2
3 files changed, 13 insertions, 3 deletions
diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp
index 0498c793f..aa18418f9 100644
--- a/src/network/core/address.cpp
+++ b/src/network/core/address.cpp
@@ -27,9 +27,13 @@ const char *NetworkAddress::GetHostname()
uint16 NetworkAddress::GetPort() const
{
switch (this->address.ss_family) {
+ case AF_UNSPEC:
case AF_INET:
return ntohs(((struct sockaddr_in *)&this->address)->sin_port);
+ case AF_INET6:
+ return ntohs(((struct sockaddr_in6 *)&this->address)->sin6_port);
+
default:
NOT_REACHED();
}
@@ -38,10 +42,15 @@ uint16 NetworkAddress::GetPort() const
void NetworkAddress::SetPort(uint16 port)
{
switch (this->address.ss_family) {
+ case AF_UNSPEC:
case AF_INET:
((struct sockaddr_in*)&this->address)->sin_port = htons(port);
break;
+ case AF_INET6:
+ ((struct sockaddr_in6*)&this->address)->sin6_port = htons(port);
+ break;
+
default:
NOT_REACHED();
}
diff --git a/src/network/core/address.h b/src/network/core/address.h
index 9515de976..2b5f7444f 100644
--- a/src/network/core/address.h
+++ b/src/network/core/address.h
@@ -79,13 +79,14 @@ public:
* Create a network address based on a unresolved host and port
* @param ip the unresolved hostname
* @param port the port
+ * @param family the address family
*/
- NetworkAddress(const char *hostname = "0.0.0.0", uint16 port = 0) :
+ NetworkAddress(const char *hostname = "0.0.0.0", uint16 port = 0, int family = AF_INET) :
hostname(strdup(hostname)),
address_length(0)
{
memset(&this->address, 0, sizeof(this->address));
- this->address.ss_family = AF_INET;
+ this->address.ss_family = family;
this->SetPort(port);
}
diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp
index 9a82154b4..ea33691b2 100644
--- a/src/network/network_content.cpp
+++ b/src/network/network_content.cpp
@@ -471,7 +471,7 @@ void ClientNetworkContentSocketHandler::Connect()
if (this->sock != INVALID_SOCKET || this->isConnecting) return;
this->isConnecting = true;
- new NetworkContentConnecter(NetworkAddress(NETWORK_CONTENT_SERVER_HOST, NETWORK_CONTENT_SERVER_PORT));
+ new NetworkContentConnecter(NetworkAddress(NETWORK_CONTENT_SERVER_HOST, NETWORK_CONTENT_SERVER_PORT, AF_UNSPEC));
}
/**