From beb350d1e702368fc3fbbfa7b47f6b196f3ad2fe Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 4 Nov 2014 13:53:56 -0800 Subject: [PATCH] fix for HifiSockAddr lookup for ice server from DomainHandler --- libraries/networking/src/DomainHandler.cpp | 6 +++++- libraries/networking/src/HifiSockAddr.cpp | 21 +++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/libraries/networking/src/DomainHandler.cpp b/libraries/networking/src/DomainHandler.cpp index 81d6a6d662..d64752dce0 100644 --- a/libraries/networking/src/DomainHandler.cpp +++ b/libraries/networking/src/DomainHandler.cpp @@ -14,6 +14,7 @@ #include #include "Assignment.h" +#include "HifiSockAddr.h" #include "NodeList.h" #include "PacketHeaders.h" #include "UserActivityLogger.h" @@ -144,7 +145,10 @@ void DomainHandler::setIceServerHostnameAndID(const QString& iceServerHostname, hardReset(); _iceDomainID = id; - _iceServerSockAddr = HifiSockAddr(iceServerHostname, ICE_SERVER_DEFAULT_PORT); + + HifiSockAddr* replaceableSockAddr = &_iceServerSockAddr; + replaceableSockAddr->~HifiSockAddr(); + replaceableSockAddr = new (replaceableSockAddr) HifiSockAddr(iceServerHostname, ICE_SERVER_DEFAULT_PORT); // refresh our ICE client UUID to something new _iceClientID = QUuid::createUuid(); diff --git a/libraries/networking/src/HifiSockAddr.cpp b/libraries/networking/src/HifiSockAddr.cpp index 6eec22ab3e..f2419f5124 100644 --- a/libraries/networking/src/HifiSockAddr.cpp +++ b/libraries/networking/src/HifiSockAddr.cpp @@ -31,9 +31,17 @@ HifiSockAddr::HifiSockAddr(const QHostAddress& address, quint16 port) : } -HifiSockAddr::HifiSockAddr(const HifiSockAddr& otherSockAddr) { - _address = otherSockAddr._address; - _port = otherSockAddr._port; +HifiSockAddr::HifiSockAddr(const HifiSockAddr& otherSockAddr) : + _address(otherSockAddr._address), + _port(otherSockAddr._port) +{ + +} + +HifiSockAddr& HifiSockAddr::operator=(const HifiSockAddr& rhsSockAddr) { + HifiSockAddr temp(rhsSockAddr); + swap(temp); + return *this; } HifiSockAddr::HifiSockAddr(const QString& hostname, quint16 hostOrderPort, bool shouldBlockForLookup) : @@ -64,13 +72,6 @@ HifiSockAddr::HifiSockAddr(const sockaddr* sockaddr) { } } -HifiSockAddr& HifiSockAddr::operator=(const HifiSockAddr& rhsSockAddr) { - _address = rhsSockAddr._address; - _port = rhsSockAddr._port; - - return *this; -} - void HifiSockAddr::swap(HifiSockAddr& otherSockAddr) { using std::swap;