diff --git a/libraries/shared/src/Agent.cpp b/libraries/shared/src/Agent.cpp index bb49783210..3a92e6c05e 100644 --- a/libraries/shared/src/Agent.cpp +++ b/libraries/shared/src/Agent.cpp @@ -261,30 +261,19 @@ float Agent::getAverageKilobitsPerSecond() { } void Agent::printLog(Agent const& agent) { - - sockaddr_in *agentPublicSocket = (sockaddr_in *) agent.publicSocket; - sockaddr_in *agentLocalSocket = (sockaddr_in *) agent.localSocket; - const char* publicAddressString = (agentPublicSocket == NULL) - ? "Unknown" - : inet_ntoa(agentPublicSocket->sin_addr); - unsigned short publicAddressPort = (agentPublicSocket == NULL) - ? 0 - : ntohs(agentPublicSocket->sin_port); + char publicAddressBuffer[16] = {'\0'}; + unsigned short publicAddressPort = loadBufferWithSocketInfo(publicAddressBuffer, agent.publicSocket); + + char localAddressBuffer[16] = {'\0'}; + unsigned short localAddressPort = loadBufferWithSocketInfo(localAddressBuffer, agent.localSocket); - const char* localAddressString = (agentLocalSocket == NULL) - ? "Unknown" - : inet_ntoa(agentLocalSocket->sin_addr); - unsigned short localAddressPort = (agentLocalSocket == NULL) - ? 0 - : ntohs(agentPublicSocket->sin_port); - ::printLog("ID: %d T: %s (%c) PA: %s:%d LA: %s:%d\n", agent.agentId, agent.getTypeName(), agent.type, - publicAddressString, + publicAddressBuffer, publicAddressPort, - localAddressString, + localAddressBuffer, localAddressPort); } \ No newline at end of file diff --git a/libraries/shared/src/UDPSocket.cpp b/libraries/shared/src/UDPSocket.cpp index 000f0e3d7d..0fa5ce08a4 100644 --- a/libraries/shared/src/UDPSocket.cpp +++ b/libraries/shared/src/UDPSocket.cpp @@ -107,6 +107,18 @@ int getLocalAddress() { return localAddress; } +unsigned short loadBufferWithSocketInfo(char *addressBuffer, sockaddr *socket) { + if (socket != NULL) { + char *copyBuffer = inet_ntoa(((sockaddr_in*) socket)->sin_addr); + memcpy(addressBuffer, copyBuffer, strlen(copyBuffer)); + return htons(((sockaddr_in*) socket)->sin_port); + } else { + const char* unknownAddress = "Unknown"; + memcpy(addressBuffer, unknownAddress, strlen(unknownAddress)); + return 0; + } +} + UDPSocket::UDPSocket(int listeningPort) { init(); // create the socket diff --git a/libraries/shared/src/UDPSocket.h b/libraries/shared/src/UDPSocket.h index f20585bbd4..2bc5638b5e 100644 --- a/libraries/shared/src/UDPSocket.h +++ b/libraries/shared/src/UDPSocket.h @@ -36,5 +36,6 @@ int packSocket(unsigned char *packStore, in_addr_t inAddress, in_port_t networkO int packSocket(unsigned char *packStore, sockaddr *socketToPack); int unpackSocket(unsigned char *packedData, sockaddr *unpackDestSocket); int getLocalAddress(); +unsigned short loadBufferWithSocketInfo(char *addressBuffer, sockaddr *socket); #endif /* defined(__interface__UDPSocket__) */