2023-01-17 13:10 UTC-0300 Lailton Fernando Mariano (lailton/at/paysoft.com.br)

* include/hbsocket.h
  * src/harbour.def
  * src/rtl/hbsocket.c
  * src/rtl/hbsockhb.c
    + added functions: Harbour socket API
      HB_SOCKETSETNOSIGPIPE( hSocket, lValue ) --> lSuccess
This commit is contained in:
Lailton Fernando Mariano
2023-01-17 13:10:04 -03:00
parent 34639a9667
commit 28a0b4c3da
5 changed files with 43 additions and 0 deletions

View File

@@ -7,6 +7,14 @@
Entries may not always be in chronological/commit order. Entries may not always be in chronological/commit order.
See license at the end of file. */ See license at the end of file. */
2023-01-17 13:10 UTC-0300 Lailton Fernando Mariano (lailton/at/paysoft.com.br)
* include/hbsocket.h
* src/harbour.def
* src/rtl/hbsocket.c
* src/rtl/hbsockhb.c
+ added functions: Harbour socket API
HB_SOCKETSETNOSIGPIPE( hSocket, lValue ) --> lSuccess
2023-01-17 13:00 UTC-0300 Lailton Fernando Mariano (lailton/at/paysoft.com.br) 2023-01-17 13:00 UTC-0300 Lailton Fernando Mariano (lailton/at/paysoft.com.br)
* contrib/hbcurl/hbcurl.hbm * contrib/hbcurl/hbcurl.hbm
* contrib/hbssl/hbssl.hbm * contrib/hbssl/hbssl.hbm

View File

@@ -99,6 +99,7 @@ extern HB_EXPORT long hb_socketRecv( HB_SOCKET sd, void * data, long len
extern HB_EXPORT long hb_socketRecvFrom( HB_SOCKET sd, void * data, long len, int flags, void ** pSockAddr, unsigned * puiSockLen, HB_MAXINT timeout ); extern HB_EXPORT long hb_socketRecvFrom( HB_SOCKET sd, void * data, long len, int flags, void ** pSockAddr, unsigned * puiSockLen, HB_MAXINT timeout );
extern HB_EXPORT int hb_socketSetBlockingIO( HB_SOCKET sd, HB_BOOL fBlocking ); extern HB_EXPORT int hb_socketSetBlockingIO( HB_SOCKET sd, HB_BOOL fBlocking );
extern HB_EXPORT int hb_socketSetNoDelay( HB_SOCKET sd, HB_BOOL fNoDelay ); extern HB_EXPORT int hb_socketSetNoDelay( HB_SOCKET sd, HB_BOOL fNoDelay );
extern HB_EXPORT int hb_socketSetNoSigPipe( HB_SOCKET sd, HB_BOOL fNoSigPipe );
extern HB_EXPORT int hb_socketSetExclusiveAddr( HB_SOCKET sd, HB_BOOL fExclusive ); extern HB_EXPORT int hb_socketSetExclusiveAddr( HB_SOCKET sd, HB_BOOL fExclusive );
extern HB_EXPORT int hb_socketSetReuseAddr( HB_SOCKET sd, HB_BOOL fReuse ); extern HB_EXPORT int hb_socketSetReuseAddr( HB_SOCKET sd, HB_BOOL fReuse );
extern HB_EXPORT int hb_socketSetKeepAlive( HB_SOCKET sd, HB_BOOL fKeepAlive ); extern HB_EXPORT int hb_socketSetKeepAlive( HB_SOCKET sd, HB_BOOL fKeepAlive );

View File

@@ -1041,6 +1041,7 @@ HB_FUN_HB_SOCKETSETFILTER
HB_FUN_HB_SOCKETSETKEEPALIVE HB_FUN_HB_SOCKETSETKEEPALIVE
HB_FUN_HB_SOCKETSETMULTICAST HB_FUN_HB_SOCKETSETMULTICAST
HB_FUN_HB_SOCKETSETNODELAY HB_FUN_HB_SOCKETSETNODELAY
HB_FUN_HB_SOCKETSETNOSIGPIPE
HB_FUN_HB_SOCKETSETRCVBUFSIZE HB_FUN_HB_SOCKETSETRCVBUFSIZE
HB_FUN_HB_SOCKETSETREUSEADDR HB_FUN_HB_SOCKETSETREUSEADDR
HB_FUN_HB_SOCKETSETSNDBUFSIZE HB_FUN_HB_SOCKETSETSNDBUFSIZE
@@ -3305,6 +3306,7 @@ hb_socketSetExclusiveAddr
hb_socketSetKeepAlive hb_socketSetKeepAlive
hb_socketSetMulticast hb_socketSetMulticast
hb_socketSetNoDelay hb_socketSetNoDelay
hb_socketSetNoSigPipe
hb_socketSetRcvBufSize hb_socketSetRcvBufSize
hb_socketSetReuseAddr hb_socketSetReuseAddr
hb_socketSetSndBufSize hb_socketSetSndBufSize

View File

@@ -650,6 +650,14 @@ int hb_socketSetNoDelay( HB_SOCKET sd, HB_BOOL fNoDelay )
return -1; return -1;
} }
int hb_socketSetNoSigPipe( HB_SOCKET sd, HB_BOOL fNoSigPipe )
{
HB_SYMBOL_UNUSED( sd );
HB_SYMBOL_UNUSED( fNoSigPipe );
hb_socketSetError( HB_SOCKET_ERR_INVALIDHANDLE );
return -1;
}
int hb_socketSetExclusiveAddr( HB_SOCKET sd, HB_BOOL fExclusive ) int hb_socketSetExclusiveAddr( HB_SOCKET sd, HB_BOOL fExclusive )
{ {
HB_SYMBOL_UNUSED( sd ); HB_SYMBOL_UNUSED( sd );
@@ -2848,6 +2856,21 @@ int hb_socketSetNoDelay( HB_SOCKET sd, HB_BOOL fNoDelay )
return ret; return ret;
} }
int hb_socketSetNoSigPipe( HB_SOCKET sd, HB_BOOL fNoSigPipe )
{
#if defined( SO_NOSIGPIPE )
int val = fNoSigPipe ? 1 : 0, ret;
ret = setsockopt( sd, SOL_SOCKET, SO_NOSIGPIPE, ( const char * ) &val, sizeof( val ) );
hb_socketSetOsError( ret != -1 ? 0 : HB_SOCK_GETERROR() );
return ret;
#else
HB_SYMBOL_UNUSED( sd );
HB_SYMBOL_UNUSED( fNoSigPipe );
hb_socketSetError( HB_SOCKET_ERR_NOSUPPORT );
return -1;
#endif
}
/* NOTE: For notes on Windows, see: /* NOTE: For notes on Windows, see:
https://msdn.microsoft.com/library/ms740621 https://msdn.microsoft.com/library/ms740621
[vszakats] */ [vszakats] */

View File

@@ -63,6 +63,7 @@
* hb_socketRecvFrom( hSocket, @cBuffer, [ nLen = Len( cBuffer ) ], [ nFlags = 0 ], @aAddr, [ nTimeout = FOREVER ] ) --> nBytesRecv * hb_socketRecvFrom( hSocket, @cBuffer, [ nLen = Len( cBuffer ) ], [ nFlags = 0 ], @aAddr, [ nTimeout = FOREVER ] ) --> nBytesRecv
* hb_socketSetBlockingIO( hSocket, lValue ) --> nSuccess * hb_socketSetBlockingIO( hSocket, lValue ) --> nSuccess
* hb_socketSetNoDelay( hSocket, lValue ) --> lSuccess * hb_socketSetNoDelay( hSocket, lValue ) --> lSuccess
* hb_socketSetNoSigPipe( hSocket, lValue ) --> lSuccess
* hb_socketSetExclusiveAddr( hSocket, lValue ) --> lSuccess * hb_socketSetExclusiveAddr( hSocket, lValue ) --> lSuccess
* hb_socketSetReuseAddr( hSocket, lValue ) --> lSuccess * hb_socketSetReuseAddr( hSocket, lValue ) --> lSuccess
* hb_socketSetKeepAlive( hSocket, lValue ) --> lSuccess * hb_socketSetKeepAlive( hSocket, lValue ) --> lSuccess
@@ -1193,6 +1194,14 @@ HB_FUNC( HB_SOCKETSETNODELAY )
hb_retl( hb_socketSetNoDelay( socket, hb_parl( 2 ) ) == 0 ); hb_retl( hb_socketSetNoDelay( socket, hb_parl( 2 ) ) == 0 );
} }
HB_FUNC( HB_SOCKETSETNOSIGPIPE )
{
HB_SOCKET socket = hb_socketParam( 1 );
if( socket != HB_NO_SOCKET )
hb_retl( hb_socketSetNoSigPipe( socket, hb_parl( 2 ) ) == 0 );
}
HB_FUNC( HB_SOCKETSETEXCLUSIVEADDR ) HB_FUNC( HB_SOCKETSETEXCLUSIVEADDR )
{ {
HB_SOCKET socket = hb_socketParam( 1 ); HB_SOCKET socket = hb_socketParam( 1 );