2009-07-28 18:54 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/source/rtl/hbsocket.c
    * return -1 instead of 0 on timeout in hb_socketSend*() and
      hb_socketRecv*() functions
This commit is contained in:
Przemyslaw Czerpak
2009-07-28 16:54:33 +00:00
parent 64d32725b8
commit 50ebdd772e
2 changed files with 21 additions and 20 deletions

View File

@@ -17,6 +17,11 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-07-28 18:54 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbsocket.c
* return -1 instead of 0 on timeout in hb_socketSend*() and
hb_socketRecv*() functions
2009-07-28 18:22 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* bin/hb-func.sh
* make_gnu.sh

View File

@@ -2070,20 +2070,19 @@ int hb_socketConnect( HB_SOCKET sd, const void * pSockAddr, unsigned uiLen, HB_L
long hb_socketSend( HB_SOCKET sd, const void * data, long len, int flags, HB_LONG timeout )
{
long lSent = 0;
int ret = 0;
hb_vmUnlock();
if( timeout >= 0 )
{
ret = hb_socketSelectWR( sd, timeout );
if( ret == 0 )
lSent = hb_socketSelectWR( sd, timeout );
if( lSent == 0 )
{
hb_socketSetRawError( HB_SOCKET_ERR_TIMEOUT );
ret = -1;
lSent = -1;
}
}
if( ret >= 0 )
if( lSent >= 0 )
{
/* in POSIX systems writing data to broken connection stream causes
* that system generates SIGPIPE which has to be caught by application
@@ -2109,20 +2108,19 @@ long hb_socketSendTo( HB_SOCKET sd, const void * data, long len, int flags,
const void * pSockAddr, unsigned uiSockLen, HB_LONG timeout )
{
long lSent = 0;
int ret = 0;
hb_vmUnlock();
if( timeout >= 0 )
{
ret = hb_socketSelectWR( sd, timeout );
if( ret == 0 )
lSent = hb_socketSelectWR( sd, timeout );
if( lSent == 0 )
{
hb_socketSetRawError( HB_SOCKET_ERR_TIMEOUT );
ret = -1;
lSent = -1;
}
}
if( ret >= 0 )
if( lSent >= 0 )
{
/* see note above about SIGPIPE */
#if defined( MSG_NOSIGNAL )
@@ -2144,20 +2142,19 @@ long hb_socketSendTo( HB_SOCKET sd, const void * data, long len, int flags,
long hb_socketRecv( HB_SOCKET sd, void * data, long len, int flags, HB_LONG timeout )
{
long lReceived = 0;
int ret = 0;
hb_vmUnlock();
if( timeout >= 0 )
{
ret = hb_socketSelectRD( sd, timeout );
if( ret == 0 )
lReceived = hb_socketSelectRD( sd, timeout );
if( lReceived == 0 )
{
hb_socketSetRawError( HB_SOCKET_ERR_TIMEOUT );
ret = -1;
lReceived = -1;
}
}
if( ret >= 0 )
if( lReceived >= 0 )
{
do
{
@@ -2174,20 +2171,19 @@ long hb_socketRecv( HB_SOCKET sd, void * data, long len, int flags, HB_LONG time
long hb_socketRecvFrom( HB_SOCKET sd, void * data, long len, int flags, void ** pSockAddr, unsigned * puiSockLen, HB_LONG timeout )
{
long lReceived = 0;
int ret = 0;
hb_vmUnlock();
if( timeout >= 0 )
{
ret = hb_socketSelectRD( sd, timeout );
if( ret == 0 )
lReceived = hb_socketSelectRD( sd, timeout );
if( lReceived == 0 )
{
hb_socketSetRawError( HB_SOCKET_ERR_TIMEOUT );
ret = -1;
lReceived = -1;
}
}
if( ret >= 0 )
if( lReceived >= 0 )
{
#if defined( HB_HAS_SOCKADDR_STORAGE )
struct sockaddr_storage st;