From 439657074584b9acf0eaccf46b561e23be95c44c Mon Sep 17 00:00:00 2001 From: gardners Date: Mon, 15 Aug 2011 15:54:11 +0200 Subject: [PATCH] Fixed DNA simple server and client modes to still work with overlay code in place. --- batman.c | 2 +- client.c | 20 ++++++++++++-------- packetformats.c | 2 +- server.c | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/batman.c b/batman.c index 6fea070f..1f2179c4 100644 --- a/batman.c +++ b/batman.c @@ -47,7 +47,7 @@ int readRoutingTable(struct in_addr peers[],int *peer_count,int peer_max){ unsigned long d, g, m; int flgs, ref, use, metric, mtu, win, ir; - fprintf(stderr,"Reading routing table\n"); + if (debug) fprintf(stderr,"Reading routing table\n"); FILE *fp = fopen("/proc/net/route","r"); if (!fp) return -1; diff --git a/client.c b/client.c index 18883af1..eb5f32cf 100644 --- a/client.c +++ b/client.c @@ -77,9 +77,11 @@ int packetSendRequest(int method,unsigned char *packet,int packet_len,int batchP /* Deal with special case */ if (method==REQ_REPLY) { - int r=sendto(sock,packet,packet_len,0,recvaddr,sizeof(recvaddr)); + int r=sendto(sock,packet,packet_len,0,recvaddr,sizeof(struct sockaddr_in)); if (r1) fprintf(stderr,"Sent request to client %s\n",inet_ntoa(client_addr)); } @@ -333,13 +335,15 @@ int getReplyPackets(int method,int peer,int batchP,struct response_set *response } len=recvfrom(sock,buffer,sizeof(buffer),0,recvaddr,&recvaddrlen); if (len<=0) return setReason("Unable to receive packet."); - - client_port=((struct sockaddr_in *)recvaddr)->sin_port; - client_addr=((struct sockaddr_in *)recvaddr)->sin_addr; - if (debug) fprintf(stderr,"Received reply from %s (len=%d).\n",inet_ntoa(client_addr),len); - if (debug>1) dump("recvaddr",(unsigned char *)&sender,recvaddrlen); - if (debug>2) dump("packet",(unsigned char *)buffer,len); + if (recvaddr) { + client_port=((struct sockaddr_in *)recvaddr)->sin_port; + client_addr=((struct sockaddr_in *)recvaddr)->sin_addr; + + if (debug) fprintf(stderr,"Received reply from %s (len=%d).\n",inet_ntoa(client_addr),len); + if (debug>1) dump("recvaddr",(unsigned char *)&sender,recvaddrlen); + if (debug>2) dump("packet",(unsigned char *)buffer,len); + } if (dropPacketP(len)) { if (debug) fprintf(stderr,"Simulation mode: Dropped packet due to simulated link parameters.\n"); diff --git a/packetformats.c b/packetformats.c index a3ba7700..cb652364 100644 --- a/packetformats.c +++ b/packetformats.c @@ -27,7 +27,7 @@ int process_packet(unsigned char *packet,int len,struct sockaddr *sender,int sen unsigned char *transaction_id=&packet[OFS_TRANSIDFIELD]; did[0]=0; sid[0]=0; - + /* Get DID or SID */ if (packetGetID(packet,len,did,sid)) return setReason("Could not parse DID or SID"); diff --git a/server.c b/server.c index ff605c28..04112008 100644 --- a/server.c +++ b/server.c @@ -523,7 +523,7 @@ int simpleServerMode() client_port=((struct sockaddr_in*)&recvaddr)->sin_port; client_addr=((struct sockaddr_in*)&recvaddr)->sin_addr; - if (debug) fprintf(stderr,"Received packet from %s (len=%d).\n",inet_ntoa(client_addr),len); + if (debug) fprintf(stderr,"Received packet from %s:%d (len=%d).\n",inet_ntoa(client_addr),client_port,len); if (debug>1) dump("recvaddr",(unsigned char *)&recvaddr,recvaddrlen); if (debug>3) dump("packet",(unsigned char *)buffer,len); if (dropPacketP(len)) {