New function, sock_close().
This commit is contained in:
parent
5b40cfa272
commit
8401a59ed5
@ -27,6 +27,7 @@
|
||||
#endif
|
||||
#include <netinet/in.h>
|
||||
|
||||
#include <unistd.h> /* for close(). Do not include in WIN32. */
|
||||
#define SOCKET int
|
||||
#define INVALID_SOCKET ((SOCKET)(-1))
|
||||
#define UpnpCloseSocket close
|
||||
|
@ -122,37 +122,19 @@ sock_init_with_ip( OUT SOCKINFO * info,
|
||||
return UPNP_E_SUCCESS;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : sock_destroy
|
||||
*
|
||||
* Parameters :
|
||||
* INOUT SOCKINFO* info ; Socket Information Object
|
||||
* int ShutdownMethod ; How to shutdown the socket. Used by
|
||||
* sockets's shutdown()
|
||||
*
|
||||
* Description : Shutsdown the socket using the ShutdownMethod to
|
||||
* indicate whether sends and receives on the socket will be
|
||||
* dis-allowed. After shutting down the socket, closesocket is called
|
||||
* to release system resources used by the socket calls.
|
||||
*
|
||||
* Return : int;
|
||||
* UPNP_E_SOCKET_ERROR on failure
|
||||
* UPNP_E_SUCCESS on success
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
int
|
||||
sock_destroy( INOUT SOCKINFO * info,
|
||||
int ShutdownMethod )
|
||||
int sock_destroy(INOUT SOCKINFO *info, int ShutdownMethod)
|
||||
{
|
||||
if( info->socket != INVALID_SOCKET ) {
|
||||
int ret = UPNP_E_SUCCESS;
|
||||
|
||||
if (info->socket != -1) {
|
||||
shutdown(info->socket, ShutdownMethod);
|
||||
if( UpnpCloseSocket( info->socket ) == -1 ) {
|
||||
return UPNP_E_SOCKET_ERROR;
|
||||
if(sock_close(info->socket) == -1) {
|
||||
ret = UPNP_E_SOCKET_ERROR;
|
||||
}
|
||||
info->socket = -1;
|
||||
}
|
||||
|
||||
return UPNP_E_SUCCESS;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
|
@ -173,6 +173,18 @@ int sock_write( IN SOCKINFO *info, IN char* buffer, IN size_t bufsize,
|
||||
int sock_destroy(INOUT SOCKINFO* info, int);
|
||||
|
||||
|
||||
static inline int sock_close(int sock)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
if (sock != -1) {
|
||||
ret = UpnpCloseSocket(sock);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* #extern "C" */
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user