From 83d4ee2313573005ca4df4cbd87cf60a1f1ea0f0 Mon Sep 17 00:00:00 2001 From: John Winans Date: Tue, 30 May 1995 14:45:44 +0000 Subject: [PATCH] Changed the way send() is called to account for structure padding. --- src/libCom/bdt.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/libCom/bdt.c b/src/libCom/bdt.c index 4286e09e9..5db3b9cb7 100644 --- a/src/libCom/bdt.c +++ b/src/libCom/bdt.c @@ -121,7 +121,7 @@ BDT* BdtPvOpen(char* name) /* --------------------------------------------------------------- */ /* open a bulk data socket to a server given the server IP address */ /* --------------------------------------------------------------- */ -BDT* BdtIpOpen(char* address) +BDT* BdtIpOpen(char* address, int Port) { struct sockaddr_in tsin; unsigned long addr; @@ -147,7 +147,7 @@ BDT* BdtIpOpen(char* address) return (BDT*)NULL; } - tsin.sin_port=htons(BDT_TCP_PORT); + tsin.sin_port=htons(Port); memcpy((char*)&tsin.sin_addr,(char*)&addr,sizeof(addr)); if(connect(osoc,(struct sockaddr*)&tsin,sizeof(tsin))<0) @@ -214,7 +214,12 @@ int BdtSendHeader(BDT* bdt,unsigned short verb,int size) buf.verb=htons(verb); buf.size=htonl((unsigned long)size); - if(BdtWrite(bdt->soc,&buf,sizeof(buf))<0) + if(BdtWrite(bdt->soc,&buf.verb, sizeof(buf.verb))<0) + { + fprintf(stderr,"BdtSendHeader: write to remote failed"); + return -1; + } + if(BdtWrite(bdt->soc,&buf.size, sizeof(buf.size))<0) { fprintf(stderr,"BdtSendHeader: write to remote failed"); return -1; @@ -335,7 +340,12 @@ int BdtReceiveHeader(BDT* bdt,int* verb,int* size) return -1; } - if(BdtRead(bdt->soc,&buf,sizeof(buf))<0) + if(BdtRead(bdt->soc,&buf.verb,sizeof(buf.verb))<0) + { + fprintf(stderr,"BdtReceiveHeader: Read failed\n"); + return -1; + } + if(BdtRead(bdt->soc,&buf.size,sizeof(buf.size))<0) { fprintf(stderr,"BdtReceiveHeader: Read failed\n"); return -1;