@ -141,7 +141,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
static int tcp_read ( URLContext * h , uint8_t * buf , int size )
{
TCPContext * s = h - > priv_data ;
int len , fd_max ;
int len , fd_max , ret ;
fd_set rfds ;
struct timeval tv ;
@ -153,7 +153,8 @@ static int tcp_read(URLContext *h, uint8_t *buf, int size)
FD_SET ( s - > fd , & rfds ) ;
tv . tv_sec = 0 ;
tv . tv_usec = 100 * 1000 ;
select ( fd_max + 1 , & rfds , NULL , NULL , & tv ) ;
ret = select ( fd_max + 1 , & rfds , NULL , NULL , & tv ) ;
if ( ret > 0 & & FD_ISSET ( s - > fd , & rfds ) ) {
# ifdef __BEOS__
len = recv ( s - > fd , buf , size , 0 ) ;
# else
@ -166,15 +167,17 @@ static int tcp_read(URLContext *h, uint8_t *buf, int size)
# else
return - errno ;
# endif
} else break ;
} else return len ;
} else if ( ret < 0 ) {
return - 1 ;
}
}
return len ;
}
static int tcp_write ( URLContext * h , uint8_t * buf , int size )
{
TCPContext * s = h - > priv_data ;
int ret , size1 , fd_max ;
int ret , size1 , fd_max , len ;
fd_set wfds ;
struct timeval tv ;
@ -187,13 +190,14 @@ static int tcp_write(URLContext *h, uint8_t *buf, int size)
FD_SET ( s - > fd , & wfds ) ;
tv . tv_sec = 0 ;
tv . tv_usec = 100 * 1000 ;
select ( fd_max + 1 , NULL , & wfds , NULL , & tv ) ;
ret = select ( fd_max + 1 , NULL , & wfds , NULL , & tv ) ;
if ( ret > 0 & & FD_ISSET ( s - > fd , & wfds ) ) {
# ifdef __BEOS__
ret = send ( s - > fd , buf , size , 0 ) ;
len = send ( s - > fd , buf , size , 0 ) ;
# else
ret = write ( s - > fd , buf , size ) ;
len = write ( s - > fd , buf , size ) ;
# endif
if ( ret < 0 ) {
if ( len < 0 ) {
if ( errno ! = EINTR & & errno ! = EAGAIN ) {
# ifdef __BEOS__
return errno ;
@ -203,8 +207,11 @@ static int tcp_write(URLContext *h, uint8_t *buf, int size)
}
continue ;
}
size - = ret ;
buf + = ret ;
size - = len ;
buf + = len ;
} else if ( ret < 0 ) {
return - 1 ;
}
}
return size1 - size ;
}