Merge of trunk into branch-1.6.x.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/branches/branch-1.6.x@324 119443c7-1b9e-41f8-b6fc-b9c35fce742c
This commit is contained in:
parent
a785465222
commit
f812b124d7
@ -2,6 +2,10 @@
|
|||||||
Version 1.6.6
|
Version 1.6.6
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
|
|
||||||
|
2008-02-10 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
|
||||||
|
* Changed "sys_errlist[errno]", which is deprecated, by
|
||||||
|
"strerror_r()", which is thread safe.
|
||||||
|
|
||||||
2008-02-06 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
|
2008-02-06 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
|
||||||
* Slightly improved error report by showing the sys_errlist string
|
* Slightly improved error report by showing the sys_errlist string
|
||||||
corresponding to errno.
|
corresponding to errno.
|
||||||
|
@ -376,8 +376,12 @@ schedule_request_job( IN int connfd,
|
|||||||
* Return: void
|
* Return: void
|
||||||
************************************************************************/
|
************************************************************************/
|
||||||
static void
|
static void
|
||||||
RunMiniServer( MiniServerSockArray * miniSock )
|
RunMiniServer( MiniServerSockArray *miniSock )
|
||||||
{
|
{
|
||||||
|
// strerror_r() buffer
|
||||||
|
const int ERROR_BUFFER_LEN = 256;
|
||||||
|
char errorBuffer[ERROR_BUFFER_LEN];
|
||||||
|
|
||||||
struct sockaddr_in clientAddr;
|
struct sockaddr_in clientAddr;
|
||||||
socklen_t clientLen;
|
socklen_t clientLen;
|
||||||
SOCKET connectHnd;
|
SOCKET connectHnd;
|
||||||
@ -417,9 +421,9 @@ RunMiniServer( MiniServerSockArray * miniSock )
|
|||||||
|
|
||||||
ret = select( maxMiniSock, &rdSet, NULL, &expSet, NULL );
|
ret = select( maxMiniSock, &rdSet, NULL, &expSet, NULL );
|
||||||
if ( ret == -1 ) {
|
if ( ret == -1 ) {
|
||||||
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
||||||
"Error in select(): %s\n",
|
"Error in select(): %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
/* Avoid 100% CPU in case of repeated error in select() */
|
/* Avoid 100% CPU in case of repeated error in select() */
|
||||||
isleep( 1 );
|
isleep( 1 );
|
||||||
continue;
|
continue;
|
||||||
@ -429,9 +433,9 @@ RunMiniServer( MiniServerSockArray * miniSock )
|
|||||||
connectHnd = accept( miniServSock,
|
connectHnd = accept( miniServSock,
|
||||||
( struct sockaddr * )&clientAddr, &clientLen );
|
( struct sockaddr * )&clientAddr, &clientLen );
|
||||||
if( connectHnd == -1 ) {
|
if( connectHnd == -1 ) {
|
||||||
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
|
||||||
"miniserver: Error in accept(): %s\n",
|
"miniserver: Error in accept(): %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
schedule_request_job( connectHnd, &clientAddr );
|
schedule_request_job( connectHnd, &clientAddr );
|
||||||
@ -546,6 +550,10 @@ int
|
|||||||
get_miniserver_sockets( MiniServerSockArray * out,
|
get_miniserver_sockets( MiniServerSockArray * out,
|
||||||
unsigned short listen_port )
|
unsigned short listen_port )
|
||||||
{
|
{
|
||||||
|
// strerror_r() buffer
|
||||||
|
const int ERROR_BUFFER_LEN = 256;
|
||||||
|
char errorBuffer[ERROR_BUFFER_LEN];
|
||||||
|
|
||||||
struct sockaddr_in serverAddr;
|
struct sockaddr_in serverAddr;
|
||||||
int listenfd;
|
int listenfd;
|
||||||
int success;
|
int success;
|
||||||
@ -613,9 +621,9 @@ get_miniserver_sockets( MiniServerSockArray * out,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( sockError == -1 ) {
|
if ( sockError == -1 ) {
|
||||||
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
|
||||||
"mserv start: Error in bind(): %s\n",
|
"mserv start: Error in bind(): %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
shutdown( listenfd, SD_BOTH );
|
shutdown( listenfd, SD_BOTH );
|
||||||
UpnpCloseSocket( listenfd );
|
UpnpCloseSocket( listenfd );
|
||||||
|
|
||||||
@ -627,9 +635,9 @@ get_miniserver_sockets( MiniServerSockArray * out,
|
|||||||
|
|
||||||
success = listen( listenfd, SOMAXCONN );
|
success = listen( listenfd, SOMAXCONN );
|
||||||
if ( success == -1 ) {
|
if ( success == -1 ) {
|
||||||
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
|
||||||
"mserv start: Error in listen(): %s\n",
|
"mserv start: Error in listen(): %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
shutdown( listenfd, SD_BOTH );
|
shutdown( listenfd, SD_BOTH );
|
||||||
UpnpCloseSocket( listenfd );
|
UpnpCloseSocket( listenfd );
|
||||||
|
|
||||||
@ -648,10 +656,9 @@ get_miniserver_sockets( MiniServerSockArray * out,
|
|||||||
|
|
||||||
miniServerStopSock = socket( AF_INET, SOCK_DGRAM, 0 );
|
miniServerStopSock = socket( AF_INET, SOCK_DGRAM, 0 );
|
||||||
if ( miniServerStopSock == -1 ) {
|
if ( miniServerStopSock == -1 ) {
|
||||||
UpnpPrintf( UPNP_CRITICAL,
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
MSERV, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_CRITICAL, MSERV, __FILE__, __LINE__,
|
||||||
"Error in socket(): %s\n",
|
"Error in socket(): %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
shutdown( listenfd, SD_BOTH );
|
shutdown( listenfd, SD_BOTH );
|
||||||
UpnpCloseSocket( listenfd );
|
UpnpCloseSocket( listenfd );
|
||||||
|
|
||||||
@ -691,7 +698,6 @@ get_miniserver_sockets( MiniServerSockArray * out,
|
|||||||
out->miniServerStopSock = miniServerStopSock;
|
out->miniServerStopSock = miniServerStopSock;
|
||||||
|
|
||||||
return UPNP_E_SUCCESS;
|
return UPNP_E_SUCCESS;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
@ -811,6 +817,9 @@ StartMiniServer( unsigned short listen_port )
|
|||||||
int
|
int
|
||||||
StopMiniServer()
|
StopMiniServer()
|
||||||
{
|
{
|
||||||
|
// strerror_r() buffer
|
||||||
|
const int ERROR_BUFFER_LEN = 256;
|
||||||
|
char errorBuffer[ERROR_BUFFER_LEN];
|
||||||
|
|
||||||
int socklen = sizeof( struct sockaddr_in );
|
int socklen = sizeof( struct sockaddr_in );
|
||||||
int sock;
|
int sock;
|
||||||
@ -826,9 +835,9 @@ StopMiniServer()
|
|||||||
|
|
||||||
sock = socket( AF_INET, SOCK_DGRAM, 0 );
|
sock = socket( AF_INET, SOCK_DGRAM, 0 );
|
||||||
if ( sock == -1 ) {
|
if ( sock == -1 ) {
|
||||||
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
|
||||||
"SSDP_SERVER: StopSSDPServer: Error in socket() %s\n",
|
"SSDP_SERVER: StopSSDPServer: Error in socket() %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -514,6 +514,10 @@ SearchByTarget( IN int Mx,
|
|||||||
IN char *St,
|
IN char *St,
|
||||||
IN void *Cookie )
|
IN void *Cookie )
|
||||||
{
|
{
|
||||||
|
// strerror_r() buffer
|
||||||
|
const int ERROR_BUFFER_LEN = 256;
|
||||||
|
char errorBuffer[ERROR_BUFFER_LEN];
|
||||||
|
|
||||||
int socklen = sizeof( struct sockaddr_in );
|
int socklen = sizeof( struct sockaddr_in );
|
||||||
int *id = NULL;
|
int *id = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@ -591,9 +595,10 @@ SearchByTarget( IN int Mx,
|
|||||||
|
|
||||||
ret = select( gSsdpReqSocket + 1, NULL, &wrSet, NULL, NULL );
|
ret = select( gSsdpReqSocket + 1, NULL, &wrSet, NULL, NULL );
|
||||||
if( ret == -1 ) {
|
if( ret == -1 ) {
|
||||||
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
|
||||||
"SSDP_LIB: Error in select(): %s\n",
|
"SSDP_LIB: Error in select(): %s\n",
|
||||||
sys_errlist[errno] );
|
errorBuffer );
|
||||||
shutdown( gSsdpReqSocket, SD_BOTH );
|
shutdown( gSsdpReqSocket, SD_BOTH );
|
||||||
UpnpCloseSocket( gSsdpReqSocket );
|
UpnpCloseSocket( gSsdpReqSocket );
|
||||||
free( ReqBuf );
|
free( ReqBuf );
|
||||||
|
@ -213,6 +213,10 @@ NewRequestHandler( IN struct sockaddr_in *DestAddr,
|
|||||||
IN int NumPacket,
|
IN int NumPacket,
|
||||||
IN char **RqPacket )
|
IN char **RqPacket )
|
||||||
{
|
{
|
||||||
|
// strerror_r() buffer
|
||||||
|
const int ERROR_BUFFER_LEN = 256;
|
||||||
|
char errorBuffer[ERROR_BUFFER_LEN];
|
||||||
|
|
||||||
int ReplySock;
|
int ReplySock;
|
||||||
int socklen = sizeof( struct sockaddr_in );
|
int socklen = sizeof( struct sockaddr_in );
|
||||||
int NumCopy;
|
int NumCopy;
|
||||||
@ -222,10 +226,10 @@ NewRequestHandler( IN struct sockaddr_in *DestAddr,
|
|||||||
|
|
||||||
ReplySock = socket( AF_INET, SOCK_DGRAM, 0 );
|
ReplySock = socket( AF_INET, SOCK_DGRAM, 0 );
|
||||||
if ( ReplySock == -1 ) {
|
if ( ReplySock == -1 ) {
|
||||||
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
|
||||||
"SSDP_LIB: New Request Handler:"
|
"SSDP_LIB: New Request Handler:"
|
||||||
"Error in socket(): %s\n",
|
"Error in socket(): %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
|
|
||||||
return UPNP_E_OUTOF_SOCKET;
|
return UPNP_E_OUTOF_SOCKET;
|
||||||
}
|
}
|
||||||
|
@ -856,6 +856,10 @@ readFromSSDPSocket( SOCKET socket )
|
|||||||
int
|
int
|
||||||
get_ssdp_sockets( MiniServerSockArray * out )
|
get_ssdp_sockets( MiniServerSockArray * out )
|
||||||
{
|
{
|
||||||
|
// strerror_r() buffer
|
||||||
|
const int ERROR_BUFFER_LEN = 256;
|
||||||
|
char errorBuffer[ERROR_BUFFER_LEN];
|
||||||
|
|
||||||
int onOff = 1;
|
int onOff = 1;
|
||||||
u_char ttl = 4;
|
u_char ttl = 4;
|
||||||
struct ip_mreq ssdpMcastAddr;
|
struct ip_mreq ssdpMcastAddr;
|
||||||
@ -869,10 +873,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
|
|||||||
|
|
||||||
ssdpReqSock = socket( AF_INET, SOCK_DGRAM, 0 );
|
ssdpReqSock = socket( AF_INET, SOCK_DGRAM, 0 );
|
||||||
if ( ssdpReqSock == -1 ) {
|
if ( ssdpReqSock == -1 ) {
|
||||||
UpnpPrintf( UPNP_CRITICAL,
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
||||||
"Error in socket(): %s\n",
|
"Error in socket(): %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
|
|
||||||
return UPNP_E_OUTOF_SOCKET;
|
return UPNP_E_OUTOF_SOCKET;
|
||||||
}
|
}
|
||||||
@ -885,10 +888,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
|
|||||||
|
|
||||||
ssdpSock = socket( AF_INET, SOCK_DGRAM, 0 );
|
ssdpSock = socket( AF_INET, SOCK_DGRAM, 0 );
|
||||||
if ( ssdpSock == -1 ) {
|
if ( ssdpSock == -1 ) {
|
||||||
UpnpPrintf( UPNP_CRITICAL,
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
||||||
"Error in socket(): %s\n",
|
"Error in socket(): %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
||||||
CLIENTONLY( UpnpCloseSocket( ssdpReqSock ); )
|
CLIENTONLY( UpnpCloseSocket( ssdpReqSock ); )
|
||||||
|
|
||||||
@ -899,10 +901,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
|
|||||||
ret = setsockopt( ssdpSock, SOL_SOCKET, SO_REUSEADDR,
|
ret = setsockopt( ssdpSock, SOL_SOCKET, SO_REUSEADDR,
|
||||||
(char *)&onOff, sizeof(onOff) );
|
(char *)&onOff, sizeof(onOff) );
|
||||||
if ( ret == -1) {
|
if ( ret == -1) {
|
||||||
UpnpPrintf( UPNP_CRITICAL,
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
||||||
"Error in setsockopt() SO_REUSEADDR: %s\n",
|
"Error in setsockopt() SO_REUSEADDR: %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
||||||
CLIENTONLY( UpnpCloseSocket( ssdpReqSock ); )
|
CLIENTONLY( UpnpCloseSocket( ssdpReqSock ); )
|
||||||
shutdown( ssdpSock, SD_BOTH );
|
shutdown( ssdpSock, SD_BOTH );
|
||||||
@ -915,10 +916,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
|
|||||||
ret = setsockopt( ssdpSock, SOL_SOCKET, SO_REUSEPORT,
|
ret = setsockopt( ssdpSock, SOL_SOCKET, SO_REUSEPORT,
|
||||||
(char *)&onOff, sizeof (onOff) );
|
(char *)&onOff, sizeof (onOff) );
|
||||||
if ( ret == -1 ) {
|
if ( ret == -1 ) {
|
||||||
UpnpPrintf( UPNP_CRITICAL,
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
||||||
"Error in setsockopt() SO_REUSEPORT: %s\n",
|
"Error in setsockopt() SO_REUSEPORT: %s\n", errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
||||||
CLIENTONLY( UpnpCloseSocket( ssdpReqSock ); )
|
CLIENTONLY( UpnpCloseSocket( ssdpReqSock ); )
|
||||||
shutdown( ssdpSock, SD_BOTH );
|
shutdown( ssdpSock, SD_BOTH );
|
||||||
@ -935,11 +935,10 @@ get_ssdp_sockets( MiniServerSockArray * out )
|
|||||||
ssdpAddr.sin_port = htons( SSDP_PORT );
|
ssdpAddr.sin_port = htons( SSDP_PORT );
|
||||||
ret = bind( ssdpSock, (struct sockaddr *)&ssdpAddr, sizeof (ssdpAddr) );
|
ret = bind( ssdpSock, (struct sockaddr *)&ssdpAddr, sizeof (ssdpAddr) );
|
||||||
if ( ret == -1 ) {
|
if ( ret == -1 ) {
|
||||||
UpnpPrintf( UPNP_CRITICAL,
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
||||||
"Error in bind(), addr=0x%08X, port=%d: %s\n",
|
"Error in bind(), addr=0x%08X, port=%d: %s\n",
|
||||||
INADDR_ANY, SSDP_PORT,
|
INADDR_ANY, SSDP_PORT, errorBuffer );
|
||||||
sys_errlist[errno] );
|
|
||||||
shutdown( ssdpSock, SD_BOTH );
|
shutdown( ssdpSock, SD_BOTH );
|
||||||
UpnpCloseSocket( ssdpSock );
|
UpnpCloseSocket( ssdpSock );
|
||||||
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
||||||
@ -954,10 +953,10 @@ get_ssdp_sockets( MiniServerSockArray * out )
|
|||||||
ret = setsockopt( ssdpSock, IPPROTO_IP, IP_ADD_MEMBERSHIP,
|
ret = setsockopt( ssdpSock, IPPROTO_IP, IP_ADD_MEMBERSHIP,
|
||||||
(char *)&ssdpMcastAddr, sizeof (struct ip_mreq) );
|
(char *)&ssdpMcastAddr, sizeof (struct ip_mreq) );
|
||||||
if ( ret == -1 ) {
|
if ( ret == -1 ) {
|
||||||
UpnpPrintf( UPNP_CRITICAL,
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
||||||
"Error in setsockopt() IP_ADD_MEMBERSHIP (join multicast group): %s\n",
|
"Error in setsockopt() IP_ADD_MEMBERSHIP (join multicast group): %s\n",
|
||||||
sys_errlist[errno] );
|
errorBuffer );
|
||||||
shutdown( ssdpSock, SD_BOTH );
|
shutdown( ssdpSock, SD_BOTH );
|
||||||
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
||||||
UpnpCloseSocket( ssdpSock );
|
UpnpCloseSocket( ssdpSock );
|
||||||
@ -972,9 +971,10 @@ get_ssdp_sockets( MiniServerSockArray * out )
|
|||||||
ret = setsockopt(ssdpSock, IPPROTO_IP, IP_MULTICAST_IF,
|
ret = setsockopt(ssdpSock, IPPROTO_IP, IP_MULTICAST_IF,
|
||||||
(char *)&addr, sizeof addr);
|
(char *)&addr, sizeof addr);
|
||||||
if ( ret == -1 ) {
|
if ( ret == -1 ) {
|
||||||
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
|
||||||
"Error in setsockopt() IP_MULTICAST_IF (set multicast interface): %s\n",
|
"Error in setsockopt() IP_MULTICAST_IF (set multicast interface): %s\n",
|
||||||
sys_errlist[errno] );
|
errorBuffer );
|
||||||
/* This is probably not a critical error, so let's continue. */
|
/* This is probably not a critical error, so let's continue. */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -985,10 +985,10 @@ get_ssdp_sockets( MiniServerSockArray * out )
|
|||||||
ret = setsockopt( ssdpSock, SOL_SOCKET, SO_BROADCAST,
|
ret = setsockopt( ssdpSock, SOL_SOCKET, SO_BROADCAST,
|
||||||
(char *)&option, sizeof (option) );
|
(char *)&option, sizeof (option) );
|
||||||
if( ret == -1) {
|
if( ret == -1) {
|
||||||
UpnpPrintf( UPNP_CRITICAL,
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
SSDP, __FILE__, __LINE__,
|
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
||||||
"Error in setsockopt() SO_BROADCAST (set broadcast): %s\n",
|
"Error in setsockopt() SO_BROADCAST (set broadcast): %s\n",
|
||||||
sys_errlist[errno] );
|
errorBuffer );
|
||||||
shutdown( ssdpSock, SD_BOTH );
|
shutdown( ssdpSock, SD_BOTH );
|
||||||
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ); )
|
||||||
UpnpCloseSocket( ssdpSock );
|
UpnpCloseSocket( ssdpSock );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user