Changed "sys_errlist[errno]", which is deprecated, by "strerror_r()",
which is thread safe. git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@323 119443c7-1b9e-41f8-b6fc-b9c35fce742c
This commit is contained in:
		| @@ -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 ); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Marcelo Roberto Jimenez
					Marcelo Roberto Jimenez