Merge pull request #296 from lailton/master
functions: Harbour socket API - HB_SOCKETSETNOSIGPIPE
This commit is contained in:
@@ -7,6 +7,14 @@
|
||||
Entries may not always be in chronological/commit order.
|
||||
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)
|
||||
* contrib/hbcurl/hbcurl.hbm
|
||||
* contrib/hbssl/hbssl.hbm
|
||||
|
||||
@@ -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 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_socketSetNoSigPipe( HB_SOCKET sd, HB_BOOL fNoSigPipe );
|
||||
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_socketSetKeepAlive( HB_SOCKET sd, HB_BOOL fKeepAlive );
|
||||
|
||||
@@ -1041,6 +1041,7 @@ HB_FUN_HB_SOCKETSETFILTER
|
||||
HB_FUN_HB_SOCKETSETKEEPALIVE
|
||||
HB_FUN_HB_SOCKETSETMULTICAST
|
||||
HB_FUN_HB_SOCKETSETNODELAY
|
||||
HB_FUN_HB_SOCKETSETNOSIGPIPE
|
||||
HB_FUN_HB_SOCKETSETRCVBUFSIZE
|
||||
HB_FUN_HB_SOCKETSETREUSEADDR
|
||||
HB_FUN_HB_SOCKETSETSNDBUFSIZE
|
||||
@@ -3305,6 +3306,7 @@ hb_socketSetExclusiveAddr
|
||||
hb_socketSetKeepAlive
|
||||
hb_socketSetMulticast
|
||||
hb_socketSetNoDelay
|
||||
hb_socketSetNoSigPipe
|
||||
hb_socketSetRcvBufSize
|
||||
hb_socketSetReuseAddr
|
||||
hb_socketSetSndBufSize
|
||||
|
||||
@@ -650,6 +650,14 @@ int hb_socketSetNoDelay( HB_SOCKET sd, HB_BOOL fNoDelay )
|
||||
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 )
|
||||
{
|
||||
HB_SYMBOL_UNUSED( sd );
|
||||
@@ -2848,6 +2856,21 @@ int hb_socketSetNoDelay( HB_SOCKET sd, HB_BOOL fNoDelay )
|
||||
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:
|
||||
https://msdn.microsoft.com/library/ms740621
|
||||
[vszakats] */
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
* hb_socketRecvFrom( hSocket, @cBuffer, [ nLen = Len( cBuffer ) ], [ nFlags = 0 ], @aAddr, [ nTimeout = FOREVER ] ) --> nBytesRecv
|
||||
* hb_socketSetBlockingIO( hSocket, lValue ) --> nSuccess
|
||||
* hb_socketSetNoDelay( hSocket, lValue ) --> lSuccess
|
||||
* hb_socketSetNoSigPipe( hSocket, lValue ) --> lSuccess
|
||||
* hb_socketSetExclusiveAddr( hSocket, lValue ) --> lSuccess
|
||||
* hb_socketSetReuseAddr( 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_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_SOCKET socket = hb_socketParam( 1 );
|
||||
|
||||
Reference in New Issue
Block a user