From e5785fc83d1e1d841a4b218de9c53201e5f93fd4 Mon Sep 17 00:00:00 2001 From: Mario Kleiner Date: Thu, 5 Sep 2024 03:41:24 +0200 Subject: [PATCH] pnet: Fix compiler warnings on macOS. --- .../iViewXToolbox/tcp_udp_ip/pnet.c | 106 +++++++++--------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/Psychtoolbox/PsychHardware/iViewXToolbox/tcp_udp_ip/pnet.c b/Psychtoolbox/PsychHardware/iViewXToolbox/tcp_udp_ip/pnet.c index 1d609bcec1..7141a678cb 100644 --- a/Psychtoolbox/PsychHardware/iViewXToolbox/tcp_udp_ip/pnet.c +++ b/Psychtoolbox/PsychHardware/iViewXToolbox/tcp_udp_ip/pnet.c @@ -878,69 +878,71 @@ int read2buff(const int len,int newline,int noblock) if(len0){ - if(IS_STATUS_CONNECTED(con[con_index].status)) - retval=recv(con[con_index].fid,&con[con_index].read.ptr[con[con_index].read.pos],readlen ,MSG_NOSIGNAL); - else{ - struct sockaddr_in my_addr; - int fromlen=sizeof(my_addr); - - // Copy 0.0.0.0 adress and 0 port to remote_addr as init-value. - memset(&my_addr,0,sizeof(my_addr)); + /* Resize readbuffer to needed size */ + if(con[con_index].read.len0){ + if(IS_STATUS_CONNECTED(con[con_index].status)) + retval=recv(con[con_index].fid,&con[con_index].read.ptr[con[con_index].read.pos],readlen ,MSG_NOSIGNAL); + else{ + struct sockaddr_in my_addr; + unsigned int fromlen=sizeof(my_addr); + + // Copy 0.0.0.0 adress and 0 port to remote_addr as init-value. + memset(&my_addr,0,sizeof(my_addr)); + con[con_index].remote_addr.sin_addr = my_addr.sin_addr; + con[con_index].remote_addr.sin_port = my_addr.sin_port; + retval=recvfrom(con[con_index].fid,&con[con_index].read.ptr[con[con_index].read.pos], + readlen,MSG_NOSIGNAL,(struct sockaddr *)&my_addr, &fromlen); + if (retval>0){ con[con_index].remote_addr.sin_addr = my_addr.sin_addr; - con[con_index].remote_addr.sin_port = my_addr.sin_port; - retval=recvfrom(con[con_index].fid,&con[con_index].read.ptr[con[con_index].read.pos], - readlen,MSG_NOSIGNAL,(struct sockaddr *)&my_addr, &fromlen); - if (retval>0){ - con[con_index].remote_addr.sin_addr = my_addr.sin_addr; - con[con_index].remote_addr.sin_port = htons((unsigned short int)ntohs(my_addr.sin_port)); - } - } - if( retval==0){ - mexPrintf("\nREMOTE HOST DISCONNECTED\n"); - con[con_index].status=STATUS_NOCONNECT; - break; - } - if(retval<0 && s_errno!=EWOULDBLOCK - // IFWINDOWS( && s_errno!=WSAECONNRESET )// DEBUG: REMOVE THIS LINE? - ) { - con[con_index].status=STATUS_NOCONNECT; - perror( "recvfrom() or recv()" ); - break; + con[con_index].remote_addr.sin_port = htons((unsigned short int)ntohs(my_addr.sin_port)); } } - // fprintf(stderr,"RET:%d/%d ",retval,s_errno); - readlen=retval>0?retval:0; - con[con_index].read.pos+=readlen; - if( !IS_STATUS_TCP_CONNECTED(con[con_index].status) && con[con_index].read.pos>0 ) + if( retval==0){ + mexPrintf("\nREMOTE HOST DISCONNECTED\n"); + con[con_index].status=STATUS_NOCONNECT; break; - if( con[con_index].read.pos>=len ) - break; - if(noblock || timeoutat<=my_now()) + } + if(retval<0 && s_errno!=EWOULDBLOCK + // IFWINDOWS( && s_errno!=WSAECONNRESET )// DEBUG: REMOVE THIS LINE? + ) { + con[con_index].status=STATUS_NOCONNECT; + perror( "recvfrom() or recv()" ); break; - if(newline){ - int n; - for(n=0;n0?retval:0; + con[con_index].read.pos+=readlen; + if( !IS_STATUS_TCP_CONNECTED(con[con_index].status) && con[con_index].read.pos>0 ) + break; + if( con[con_index].read.pos>=len ) + break; + if(noblock || timeoutat<=my_now()) + break; + if(newline){ + int n; + for(n=0;n -1)