diff --git a/libraries/shared/src/Agent.cpp b/libraries/shared/src/Agent.cpp index 26290e1c1a..bb49783210 100644 --- a/libraries/shared/src/Agent.cpp +++ b/libraries/shared/src/Agent.cpp @@ -264,23 +264,27 @@ 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); + + 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, - inet_ntoa(agentPublicSocket->sin_addr), - ntohs(agentPublicSocket->sin_port), - inet_ntoa(agentLocalSocket->sin_addr), - ntohs(agentLocalSocket->sin_port)); -} - -std::ostream& operator<<(std::ostream& os, const Agent* agent) { - sockaddr_in *agentPublicSocket = (sockaddr_in *)agent->publicSocket; - sockaddr_in *agentLocalSocket = (sockaddr_in *)agent->localSocket; - - os << "T: " << agent->getTypeName() << " (" << agent->type << ") PA: " << inet_ntoa(agentPublicSocket->sin_addr) << - ":" << ntohs(agentPublicSocket->sin_port) << " LA: " << inet_ntoa(agentLocalSocket->sin_addr) << - ":" << ntohs(agentLocalSocket->sin_port); - return os; + publicAddressString, + publicAddressPort, + localAddressString, + localAddressPort); } \ No newline at end of file diff --git a/libraries/shared/src/Agent.h b/libraries/shared/src/Agent.h index 14942defcb..b1d2347c21 100644 --- a/libraries/shared/src/Agent.h +++ b/libraries/shared/src/Agent.h @@ -63,7 +63,6 @@ public: float getAveragePacketsPerSecond(); static void printLog(Agent const&); - friend std::ostream& operator<<(std::ostream& os, const Agent* agent); private: void swap(Agent &first, Agent &second); diff --git a/libraries/shared/src/AgentList.cpp b/libraries/shared/src/AgentList.cpp index 77a726bc56..5744c0780a 100644 --- a/libraries/shared/src/AgentList.cpp +++ b/libraries/shared/src/AgentList.cpp @@ -157,14 +157,17 @@ int AgentList::updateAgentWithData(sockaddr *senderAddress, unsigned char *packe int AgentList::updateAgentWithData(Agent *agent, unsigned char *packetData, int dataBytes) { agent->setLastRecvTimeUsecs(usecTimestampNow()); - agent->recordBytesReceived(dataBytes); + + if (agent->getActiveSocket() != NULL) { + agent->recordBytesReceived(dataBytes); + } if (agent->getLinkedData() == NULL) { if (linkedDataCreateCallback != NULL) { linkedDataCreateCallback(agent); } } - + return agent->getLinkedData()->parseData(packetData, dataBytes); } @@ -180,7 +183,7 @@ int AgentList::indexOfMatchingAgent(sockaddr *senderAddress) { int AgentList::indexOfMatchingAgent(uint16_t agentID) { for(std::vector::iterator agent = agents.begin(); agent != agents.end(); agent++) { - if (agent->getActiveSocket() != NULL && agent->getAgentId() == agentID) { + if (agent->getAgentId() == agentID) { return agent - agents.begin(); } }