From 60560125dc3da9c312463a00607f4632954b2e60 Mon Sep 17 00:00:00 2001 From: Lukas Werling Date: Sat, 7 Jan 2017 17:52:54 +0100 Subject: [PATCH] Fix local network discovery --- src/network/C4Network2Discover.cpp | 2 +- src/network/C4Network2Reference.cpp | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/network/C4Network2Discover.cpp b/src/network/C4Network2Discover.cpp index b9346dd07..1c398db1a 100644 --- a/src/network/C4Network2Discover.cpp +++ b/src/network/C4Network2Discover.cpp @@ -64,7 +64,7 @@ bool C4Network2IODiscover::Init(uint16_t iPort) bool C4Network2IODiscover::Announce() { // Announce our presence - C4Network2IODiscoverReply Reply = { 4, htons(iRefServerPort) }; + C4Network2IODiscoverReply Reply = { 4, iRefServerPort }; return Send(C4NetIOPacket(&Reply, sizeof(Reply), false, DiscoveryAddr)); } diff --git a/src/network/C4Network2Reference.cpp b/src/network/C4Network2Reference.cpp index 7190f3738..1a80bd3f6 100644 --- a/src/network/C4Network2Reference.cpp +++ b/src/network/C4Network2Reference.cpp @@ -571,9 +571,13 @@ bool C4Network2HTTPClient::SetServer(const char *szServerAddress) ServerAddr.SetPort(GetDefaultPort()); } // Remove port - const char *pColon = strchr(Server.getData(), ':'); - if (pColon) - Server.SetLength(pColon - Server.getData()); + const char *firstColon = strchr(Server.getData(), ':'); + const char *lastColon = strrchr(Server.getData(), ':'); + if (firstColon) + // hostname/IPv4 address or IPv6 address with port (e.g. [::1]:1234) + if (firstColon == lastColon || (Server[0] == '[' && *(lastColon - 1) == ']')) + Server.SetLength(lastColon - Server.getData()); + // Done ResetError(); return true;