From 6f9d22345487e47bc4ce740db899c7a63a9d2fe9 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Tue, 12 Feb 2013 10:58:30 -0800 Subject: [PATCH] Fixed network-to-host byte order problems when storing ports. --- domain/src/main.cpp | 4 ++-- interface/src/Agent.cpp | 14 +++++++------- interface/src/main.cpp | 5 ++--- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/domain/src/main.cpp b/domain/src/main.cpp index 67fa347bbd..2e0a41a278 100644 --- a/domain/src/main.cpp +++ b/domain/src/main.cpp @@ -186,9 +186,9 @@ int main(int argc, const char * argv[]) //<< " " << packet_data << "\n"; float x,y,z; sscanf(packet_data, "%f,%f,%f", &x, &y, &z); - if (addAgent(dest_address.sin_addr.s_addr, dest_address.sin_port, x, y, z)) { + if (addAgent(dest_address.sin_addr.s_addr, ntohs(dest_address.sin_port), x, y, z)) { std::cout << "Added Agent from " << - inet_ntoa(dest_address.sin_addr) << ":" << dest_address.sin_port << "\n"; + inet_ntoa(dest_address.sin_addr) << ":" << ntohs(dest_address.sin_port) << "\n"; } // Reply with packet listing nearby active agents send_agent_list(handle, &dest_address); diff --git a/interface/src/Agent.cpp b/interface/src/Agent.cpp index 0086792c66..114a44adc3 100644 --- a/interface/src/Agent.cpp +++ b/interface/src/Agent.cpp @@ -84,15 +84,15 @@ int add_agent(char * address, unsigned short port) { //std::cout << "Checking for " << IP->c_str() << " "; for (int i = 0; i < num_agents; i++) { if ((strcmp(address, agents[i].address) == 0) && (agents[i].port == port)) { - //std::cout << "Found agent!\n"; + std::cout << "Found agent!\n"; return 0; } } if (num_agents < MAX_AGENTS) { strcpy(agents[num_agents].address, address); agents[num_agents].port = port; - //std::cout << "Added Agent # " << num_agents << " with Address " << - //agents[num_agents].address << ":" << agents[num_agents].port << "\n"; + std::cout << "Added Agent # " << num_agents << " with Address " << + agents[num_agents].address << ":" << agents[num_agents].port << "\n"; num_agents++; return 1; } else { @@ -113,10 +113,10 @@ int broadcast_to_agents(UDPSocket *handle, char * data, int length) { // STUPID HACK: For some reason on OSX with NAT translation packets sent to localhost are // received as from the NAT translated port but have to be sent to the local port number. // - if (strcmp("127.0.0.1",agents[i].address) == 0) - sent_bytes = handle->send(agents[i].address, 40103, data, length); - else - sent_bytes = handle->send(agents[i].address, agents[i].port, data, length); + //if (1) //(strcmp("192.168.1.53",agents[i].address) == 0) + // sent_bytes = handle->send(agents[i].address, 40103, data, length); + //else + sent_bytes = handle->send(agents[i].address, agents[i].port, data, length); if (sent_bytes != length) { std::cout << "Broadcast packet fail!\n"; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index bec36f4af4..287d699d95 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -56,7 +56,7 @@ int simulate_on = 1; const int MAX_PACKET_SIZE = 1500; const int AGENT_UDP_PORT = 40103; -char DOMAINSERVER_IP[] = "127.0.0.1"; +char DOMAINSERVER_IP[] = "192.168.1.53"; const int DOMAINSERVER_PORT = 40102; UDPSocket agentSocket(AGENT_UDP_PORT); @@ -797,8 +797,7 @@ void read_network() // // Broadcast packet from another agent // - //printf("Got broadcast!\n"); - update_agent(inet_ntoa(senderAddress.sin_addr), senderAddress.sin_port, &incoming_packet[1], bytes_recvd - 1); + update_agent(inet_ntoa(senderAddress.sin_addr), ntohs(senderAddress.sin_port), &incoming_packet[1], bytes_recvd - 1); } else if (incoming_packet[0] == 'T') { printf("Got test! From port %d\n", senderAddress.sin_port); }