New function, sock_close().

This commit is contained in:
Marcelo Roberto Jimenez 2010-10-15 12:25:35 -03:00
parent 5b40cfa272
commit 8401a59ed5
3 changed files with 42 additions and 47 deletions

View File

@ -27,6 +27,7 @@
#endif #endif
#include <netinet/in.h> #include <netinet/in.h>
#include <unistd.h> /* for close(). Do not include in WIN32. */
#define SOCKET int #define SOCKET int
#define INVALID_SOCKET ((SOCKET)(-1)) #define INVALID_SOCKET ((SOCKET)(-1))
#define UpnpCloseSocket close #define UpnpCloseSocket close

View File

@ -122,37 +122,19 @@ sock_init_with_ip( OUT SOCKINFO * info,
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
} }
/************************************************************************ int sock_destroy(INOUT SOCKINFO *info, int ShutdownMethod)
* 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 )
{ {
if( info->socket != INVALID_SOCKET ) { int ret = UPNP_E_SUCCESS;
shutdown( info->socket, ShutdownMethod );
if( UpnpCloseSocket( info->socket ) == -1 ) {
return UPNP_E_SOCKET_ERROR;
}
}
return UPNP_E_SUCCESS; if (info->socket != -1) {
shutdown(info->socket, ShutdownMethod);
if(sock_close(info->socket) == -1) {
ret = UPNP_E_SOCKET_ERROR;
}
info->socket = -1;
}
return ret;
} }
/************************************************************************ /************************************************************************

View File

@ -152,27 +152,39 @@ int sock_write( IN SOCKINFO *info, IN char* buffer, IN size_t bufsize,
INOUT int *timeoutSecs ); INOUT int *timeoutSecs );
/************************************************************************ /************************************************************************
* Function : sock_destroy * Function: sock_destroy
* *
* Parameters : * Parameters:
* INOUT SOCKINFO* info ; Socket Information Object * INOUT SOCKINFO* info ; Socket Information Object
* int ShutdownMethod ; How to shutdown the socket. Used by * int ShutdownMethod ; How to shutdown the socket. Used by
* sockets's shutdown() * sockets's shutdown()
* *
* Description : Shutsdown the socket using the ShutdownMethod to * Description: Shutsdown the socket using the ShutdownMethod to
* indicate whether sends and receives on the socket will be * indicate whether sends and receives on the socket will be
* dis-allowed. After shutting down the socket, closesocket is called * dis-allowed. After shutting down the socket, closesocket is called
* to release system resources used by the socket calls. * to release system resources used by the socket calls.
* *
* Return : int; * Return: int;
* UPNP_E_SOCKET_ERROR on failure * UPNP_E_SOCKET_ERROR on failure
* UPNP_E_SUCCESS on success * UPNP_E_SUCCESS on success
* *
* Note : * Note:
************************************************************************/ ************************************************************************/
int sock_destroy(INOUT SOCKINFO* info, int); 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 #ifdef __cplusplus
} /* #extern "C" */ } /* #extern "C" */
#endif #endif