diff --git a/assignment-client/src/main.cpp b/assignment-client/src/main.cpp index d33bf10e2e..1da0a0215a 100644 --- a/assignment-client/src/main.cpp +++ b/assignment-client/src/main.cpp @@ -36,6 +36,9 @@ int main(int argc, const char* argv[]) { // grab the assignment pool from argv, if it was passed const char* assignmentPool = getCmdOption(argc, argv, "-p"); + // set the overriden assignment-server hostname from argv, if it exists + nodeList->setAssignmentServerHostname(getCmdOption(argc, argv, "-a")); + // create a request assignment, accept all assignments, pass the desired pool (if it exists) Assignment requestAssignment(Assignment::Request, Assignment::All, assignmentPool); diff --git a/domain-server/src/main.cpp b/domain-server/src/main.cpp index 4bb554ab53..5fcef77a8c 100644 --- a/domain-server/src/main.cpp +++ b/domain-server/src/main.cpp @@ -89,7 +89,7 @@ int main(int argc, const char* argv[]) { const char* assignmentPool = getCmdOption(argc, argv, "-p"); // grab the overriden assignment-server hostname from argv, if it exists - const char* assignmentServer = getCmdOption(argc, argv, "-a"); + nodeList->setAssignmentServerHostname(getCmdOption(argc, argv, "-a")); // use a map to keep track of iterations of silence for assignment creation requests const int ASSIGNMENT_SILENCE_MAX_ITERATIONS = 5; diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index cd52ff8ded..ad5876f622 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -375,9 +375,7 @@ int NodeList::processDomainServerList(unsigned char* packetData, size_t dataByte return readNodes; } -const char ASSIGNMENT_SERVER_HOSTNAME[] = "localhost"; -const sockaddr_in assignmentServerSocket = socketForHostnameAndHostOrderPort(ASSIGNMENT_SERVER_HOSTNAME, - ASSIGNMENT_SERVER_PORT); +const char GLOBAL_ASSIGNMENT_SERVER_HOSTNAME[] = "assignment.highfidelity.io"; void NodeList::sendAssignment(Assignment& assignment) { unsigned char assignmentPacket[MAX_PACKET_SIZE]; @@ -388,6 +386,12 @@ void NodeList::sendAssignment(Assignment& assignment) { int numHeaderBytes = populateTypeAndVersion(assignmentPacket, assignmentPacketType); int numAssignmentBytes = assignment.packToBuffer(assignmentPacket + numHeaderBytes); + + // setup the assignmentServerSocket once, use a custom assignmentServerHostname if it is present + static sockaddr_in assignmentServerSocket = socketForHostnameAndHostOrderPort((_assignmentServerHostname != NULL + ? (const char*) _assignmentServerHostname + : GLOBAL_ASSIGNMENT_SERVER_HOSTNAME), + ASSIGNMENT_SERVER_PORT); _nodeSocket.send((sockaddr*) &assignmentServerSocket, assignmentPacket, numHeaderBytes + numAssignmentBytes); } diff --git a/libraries/shared/src/NodeList.h b/libraries/shared/src/NodeList.h index 8afe8e38d3..dad422a29b 100644 --- a/libraries/shared/src/NodeList.h +++ b/libraries/shared/src/NodeList.h @@ -99,6 +99,7 @@ public: void sendDomainServerCheckIn(); int processDomainServerList(unsigned char *packetData, size_t dataBytes); + void setAssignmentServerHostname(const char* serverHostname) { _assignmentServerHostname = serverHostname; } void sendAssignment(Assignment& assignment); Node* nodeWithAddress(sockaddr *senderAddress); @@ -151,6 +152,7 @@ private: pthread_t removeSilentNodesThread; pthread_t checkInWithDomainServerThread; int _numNoReplyDomainCheckIns; + const char* _assignmentServerHostname; void handlePingReply(sockaddr *nodeAddress); void timePingReply(sockaddr *nodeAddress, unsigned char *packetData);