From 3ed8f5415129d9a560517bdf613f8b917e4e3c4b Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 8 Feb 2003 00:29:56 +0000 Subject: [PATCH] Fixed problem with recvfrom() when running on T2.2 - found by Ron Sluiter. This is a slightly different solution to his though. --- src/vxWorks/src/drvTS.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/vxWorks/src/drvTS.c b/src/vxWorks/src/drvTS.c index ebd6a9aa5..4e18389fb 100644 --- a/src/vxWorks/src/drvTS.c +++ b/src/vxWorks/src/drvTS.c @@ -1709,6 +1709,12 @@ static long TSgetData(char* buf, int buf_size, int soc, volatile unsigned long s,us; struct timeval timeOut; struct timespec send_time,recv_time; + struct sockaddr_in local_sin; + + if (!from_sin) { + /* Tornado 2.2 doesn't like NULLs in recvfrom() */ + from_sin = &local_sin; + } /* * joh 08-26-99 @@ -1755,16 +1761,13 @@ static long TSgetData(char* buf, int buf_size, int soc, else { /* data available */ - flen=from_sin?sizeof(struct sockaddr):0; + flen=sizeof(struct sockaddr); if((mlen=recvfrom(soc,buf,buf_size,0,from_sin,&flen))<0) { perror("recvfrom failed"); return -1; } - if(from_sin) - { - Debug(8,"recvfrom port %d\n", - ntohs(((struct sockaddr_in*)from_sin)->sin_port)); - Debug(8,"flen = %d\n",flen); - Debug(8,"mlen = %d\n",mlen); - } + Debug(8,"recvfrom port %d\n", + ntohs(((struct sockaddr_in*)from_sin)->sin_port)); + Debug(8,"flen = %d\n",flen); + Debug(8,"mlen = %d\n",mlen); if(round_trip) TScalcDiff(&send_time,&recv_time,round_trip); } return mlen;