Minor bug fixes, mostly todo with uninitialised variables.

This commit is contained in:
Jeremy Lakeman 2011-03-31 00:09:42 +10:30
parent 59a0a4a2a0
commit a2bcb56e1f
5 changed files with 800 additions and 789 deletions

View File

@ -25,6 +25,7 @@ int packetSendFollowup(struct in_addr destination,
struct sockaddr_in peer_addr;
int r;
bzero(&peer_addr, sizeof(peer_addr));
peer_addr.sin_family=AF_INET;
peer_addr.sin_port = htons(4110);
peer_addr.sin_addr.s_addr=destination.s_addr;
@ -203,13 +204,13 @@ int requestNewHLR(char *did,char *pin,char *sid)
unsigned char packet[8000];
int packet_len=0;
struct response_set responses;
unsigned char transaction_id[8];
unsigned char transaction_id[TRANSID_SIZE];
bzero(&responses,sizeof(responses));
/* Prepare the request packet */
if (packetMakeHeader(packet,8000,&packet_len,NULL)) return -1;
bcopy(&packet[8],transaction_id,8);
bcopy(&packet[OFS_TRANSIDFIELD],transaction_id,TRANSID_SIZE);
if (packetSetDid(packet,8000,&packet_len,did)) return -1;
if (packetAddHLRCreateRequest(packet,8000,&packet_len)) return -1;
if (packetFinalise(packet,8000,&packet_len)) return -1;
@ -315,21 +316,26 @@ int getReplyPackets(int method,int peer,int batchP,
unsigned char buffer[16384];
socklen_t recvaddrlen=sizeof(recvaddr);
pollfd fds;
client_port=((struct sockaddr_in*)&recvaddr)->sin_port;
bzero((void *)&recvaddr,sizeof(recvaddr));
fds.fd=sock; fds.events=POLLIN;
while (poll(&fds,1,10 /* wait for 10ms at a time */)<1)
fds.fd=sock; fds.events=POLLIN; fds.revents=0;
while (poll(&fds,1,10 /* wait for 10ms at a time */)==0)
{
gettimeofday(&t,NULL);
if (t.tv_sec>timeout_secs) return 1;
if (t.tv_sec==timeout_secs&&t.tv_usec>=timeout_usecs) return 1;
}
client_port=((struct sockaddr_in*)&recvaddr)->sin_port;
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 *)&recvaddr,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");
continue;
@ -371,7 +377,7 @@ int writeItem(char *sid,int var_id,int instance,unsigned char *value,
int packet_len=0;
struct response_set responses;
struct response *r;
unsigned char transaction_id[8];
unsigned char transaction_id[TRANSID_SIZE];
bzero(&responses,sizeof(responses));
@ -407,7 +413,7 @@ int writeItem(char *sid,int var_id,int instance,unsigned char *value,
/* Prepare the request packet */
if (packetMakeHeader(packet,8000,&packet_len,NULL)) return -1;
bcopy(&packet[8],transaction_id,8);
bcopy(&packet[OFS_TRANSIDFIELD],transaction_id,TRANSID_SIZE);
if (packetSetSid(packet,8000,&packet_len,sid)) return -1;
if (packetAddVariableWrite(packet,8000,&packet_len,var_id,instance,
value,value_start,value_length,flags)) return -1;
@ -460,7 +466,7 @@ int peerAddress(char *did,char *sid,int flags)
struct response_set responses;
int i;
int pc;
int pc=0;
in_addr_t mypeers[256];
int method;

View File

@ -334,3 +334,4 @@ int readBatmanPeerFile(char *file_path,in_addr_t peers[],int *peer_count,int pee
int getBatmanPeerList(char *socket_path,in_addr_t peers[],int *peer_count,int peer_max);
int hlrDump(unsigned char *hlr,int hofs);
int peerAddress(char *did,char *sid,int flags);
int fixResponses(struct response_set *responses);

View File

@ -136,7 +136,7 @@ int packetMakeHeader(unsigned char *packet,int packet_maxlen,int *packet_len,
for(i=0;i<TRANSID_SIZE;i++) packet[OFS_TRANSIDFIELD+i]=random()&0xff;
/* payload rotation (not yet applied) */
packet[14]=0x00;
packet[OFS_ROTATIONFIELD]=0x00;
*packet_len=HEADERFIELDS_LEN;

View File

@ -93,6 +93,8 @@ int sendToPeers(unsigned char *packet,int packet_len,int method,int peerId,struc
int n=0;
int ret;
struct sockaddr_in peer_addr;
bzero(&peer_addr, sizeof(peer_addr));
peer_addr.sin_family=AF_INET;
peer_addr.sin_port = htons(4110);

View File

@ -102,7 +102,6 @@ int server(char *backing_file,int size,int foregroundMode)
pollfd fds;
int len;
client_port=((struct sockaddr_in*)&recvaddr)->sin_port;
bzero((void *)&recvaddr,sizeof(recvaddr));
fds.fd=sock; fds.events=POLLIN;
@ -110,7 +109,10 @@ int server(char *backing_file,int size,int foregroundMode)
while (poll(&fds,1,1000)<1) sleep(0);
len=recvfrom(sock,buffer,sizeof(buffer),0,&recvaddr,&recvaddrlen);
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>1) dump("recvaddr",(unsigned char *)&recvaddr,recvaddrlen);
if (debug>3) dump("packet",(unsigned char *)buffer,len);