diff --git a/Jupiter/Socket.cpp b/Jupiter/Socket.cpp index eee7a90..ad63250 100644 --- a/Jupiter/Socket.cpp +++ b/Jupiter/Socket.cpp @@ -366,13 +366,17 @@ Jupiter::Socket *Jupiter::Socket::accept() r->data_->sockType = Jupiter::Socket::data_->sockType; r->data_->sockProto = Jupiter::Socket::data_->sockProto; r->data_->host.set(resolved); - char *end = resolved + r->data_->host.size(); - while (end != resolved) + switch (addr.sa_family) { - if (*--end == ':') - break; - r->data_->port *= 10; - r->data_->port += static_cast(Jupiter_getBase(*end, 10)); + case AF_INET: + r->data_->port = ntohs(reinterpret_cast(&addr)->sin_port); + break; + case AF_INET6: + r->data_->port = ntohs(reinterpret_cast(&addr)->sin6_port); + break; + default: + r->data_->port = 0x00000000; + break; } return r; } diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 83b6234..4e8b4fe 100644 Binary files a/Release/Jupiter.lib and b/Release/Jupiter.lib differ