Consistent usage of win32 INVALID_SOCKET and SOCKET_ERROR.
On win32 socket() returns INVALID_SOCKET, which is unsigned, on error, not -1. Also, most network functions return SOCKET_ERROR. This patch tries to make the usage consistent.
This commit is contained in:
parent
9e12768cdb
commit
f384e54fc6
@ -1,16 +1,13 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef UPNPINET_H
|
#ifndef UPNPINET_H
|
||||||
#define UPNPINET_H
|
#define UPNPINET_H
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \file
|
* \file
|
||||||
*
|
*
|
||||||
* \brief Provides a platform independent way to include TCP/IP types and functions.
|
* \brief Provides a platform independent way to include TCP/IP types and functions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include <iphlpapi.h>
|
#include <iphlpapi.h>
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
@ -27,12 +24,17 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|
||||||
#include <unistd.h> /* for close(). Do not include in WIN32. */
|
/* include <unistd.h> for close().
|
||||||
|
* Do not include this file in win32. */
|
||||||
|
#include <unistd.h>
|
||||||
|
/* SOCKET is unsigned and is not a file descriptor on win32. */
|
||||||
#define SOCKET int
|
#define SOCKET int
|
||||||
#define INVALID_SOCKET ((SOCKET)(-1))
|
/* INVALID_SOCKET is unsigned on win32. */
|
||||||
|
#define INVALID_SOCKET (-1)
|
||||||
|
/* select() returns SOCKET_ERROR on win32. */
|
||||||
|
#define SOCKET_ERROR (-1)
|
||||||
#define UpnpCloseSocket close
|
#define UpnpCloseSocket close
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /* UPNPINET_H */
|
#endif /* UPNPINET_H */
|
||||||
|
|
||||||
|
@ -303,7 +303,7 @@ static UPNP_INLINE void schedule_request_job(
|
|||||||
|
|
||||||
static UPNP_INLINE void fdset_if_valid(SOCKET sock, fd_set *set)
|
static UPNP_INLINE void fdset_if_valid(SOCKET sock, fd_set *set)
|
||||||
{
|
{
|
||||||
if (sock != -1) {
|
if (sock != INVALID_SOCKET) {
|
||||||
FD_SET(sock, set);
|
FD_SET(sock, set);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -316,11 +316,11 @@ static void web_server_accept(SOCKET lsock, fd_set *set)
|
|||||||
struct sockaddr_storage clientAddr;
|
struct sockaddr_storage clientAddr;
|
||||||
char errorBuffer[ERROR_BUFFER_LEN];
|
char errorBuffer[ERROR_BUFFER_LEN];
|
||||||
|
|
||||||
if (lsock != -1 && FD_ISSET(lsock, set)) {
|
if (lsock != INVALID_SOCKET && FD_ISSET(lsock, set)) {
|
||||||
clientLen = sizeof(clientAddr);
|
clientLen = sizeof(clientAddr);
|
||||||
asock = accept(lsock, (struct sockaddr *)&clientAddr,
|
asock = accept(lsock, (struct sockaddr *)&clientAddr,
|
||||||
&clientLen);
|
&clientLen);
|
||||||
if (asock == -1) {
|
if (asock == INVALID_SOCKET) {
|
||||||
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
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",
|
||||||
@ -335,7 +335,7 @@ static void web_server_accept(SOCKET lsock, fd_set *set)
|
|||||||
|
|
||||||
static void ssdp_read(SOCKET rsock, fd_set *set)
|
static void ssdp_read(SOCKET rsock, fd_set *set)
|
||||||
{
|
{
|
||||||
if (rsock != -1 && FD_ISSET(rsock, set)) {
|
if (rsock != INVALID_SOCKET && FD_ISSET(rsock, set)) {
|
||||||
readFromSSDPSocket(rsock);
|
readFromSSDPSocket(rsock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -417,11 +417,11 @@ static void RunMiniServer(
|
|||||||
fdset_if_valid(miniSock->ssdpReqSock4, &rdSet);
|
fdset_if_valid(miniSock->ssdpReqSock4, &rdSet);
|
||||||
fdset_if_valid(miniSock->ssdpReqSock6, &rdSet);
|
fdset_if_valid(miniSock->ssdpReqSock6, &rdSet);
|
||||||
/* select() */
|
/* select() */
|
||||||
ret = select(maxMiniSock, &rdSet, NULL, &expSet, NULL);
|
ret = select((int) maxMiniSock, &rdSet, NULL, &expSet, NULL);
|
||||||
if (ret == -1 && errno == EINTR) {
|
if (ret == SOCKET_ERROR && errno == EINTR) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (ret == -1) {
|
if (ret == SOCKET_ERROR) {
|
||||||
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf(UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
UpnpPrintf(UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
|
||||||
"Error in select(): %s\n", errorBuffer);
|
"Error in select(): %s\n", errorBuffer);
|
||||||
@ -533,12 +533,12 @@ static int get_miniserver_sockets(
|
|||||||
/* Create listen socket for IPv4/IPv6. An error here may indicate
|
/* Create listen socket for IPv4/IPv6. An error here may indicate
|
||||||
* that we don't have an IPv4/IPv6 stack. */
|
* that we don't have an IPv4/IPv6 stack. */
|
||||||
listenfd4 = socket(AF_INET, SOCK_STREAM, 0);
|
listenfd4 = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
if (listenfd4 == -1) {
|
if (listenfd4 == INVALID_SOCKET) {
|
||||||
return UPNP_E_OUTOF_SOCKET;
|
return UPNP_E_OUTOF_SOCKET;
|
||||||
}
|
}
|
||||||
#ifdef UPNP_ENABLE_IPV6
|
#ifdef UPNP_ENABLE_IPV6
|
||||||
listenfd6 = socket(AF_INET6, SOCK_STREAM, 0);
|
listenfd6 = socket(AF_INET6, SOCK_STREAM, 0);
|
||||||
if (listenfd6 == -1) {
|
if (listenfd6 == INVALID_SOCKET) {
|
||||||
return UPNP_E_OUTOF_SOCKET;
|
return UPNP_E_OUTOF_SOCKET;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -572,11 +572,11 @@ static int get_miniserver_sockets(
|
|||||||
* HOWEVER IT HAS BEEN SUGESTED FOR TCP SERVERS. */
|
* HOWEVER IT HAS BEEN SUGESTED FOR TCP SERVERS. */
|
||||||
UpnpPrintf(UPNP_INFO, MSERV, __FILE__, __LINE__,
|
UpnpPrintf(UPNP_INFO, MSERV, __FILE__, __LINE__,
|
||||||
"get_miniserver_sockets: resuseaddr is set.\n");
|
"get_miniserver_sockets: resuseaddr is set.\n");
|
||||||
if (listenfd4 != -1) {
|
if (listenfd4 != INVALID_SOCKET) {
|
||||||
sockError = setsockopt(listenfd4, SOL_SOCKET,
|
sockError = setsockopt(listenfd4, SOL_SOCKET,
|
||||||
SO_REUSEADDR,
|
SO_REUSEADDR,
|
||||||
(const char *)&reuseaddr_on, sizeof (int));
|
(const char *)&reuseaddr_on, sizeof (int));
|
||||||
if (sockError == -1) {
|
if (sockError == SOCKET_ERROR) {
|
||||||
sock_close(listenfd4);
|
sock_close(listenfd4);
|
||||||
#ifdef UPNP_ENABLE_IPV6
|
#ifdef UPNP_ENABLE_IPV6
|
||||||
sock_close(listenfd6);
|
sock_close(listenfd6);
|
||||||
@ -587,7 +587,7 @@ static int get_miniserver_sockets(
|
|||||||
sockError = bind(listenfd4,
|
sockError = bind(listenfd4,
|
||||||
(struct sockaddr *)&__ss_v4,
|
(struct sockaddr *)&__ss_v4,
|
||||||
sizeof (__ss_v4));
|
sizeof (__ss_v4));
|
||||||
if (sockError == -1) {
|
if (sockError == SOCKET_ERROR) {
|
||||||
strerror_r(errno, errorBuffer,
|
strerror_r(errno, errorBuffer,
|
||||||
ERROR_BUFFER_LEN);
|
ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf(UPNP_INFO, MSERV,
|
UpnpPrintf(UPNP_INFO, MSERV,
|
||||||
@ -604,11 +604,11 @@ static int get_miniserver_sockets(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef UPNP_ENABLE_IPV6
|
#ifdef UPNP_ENABLE_IPV6
|
||||||
if (listenfd6 != -1) {
|
if (listenfd6 != INVALID_SOCKET) {
|
||||||
sockError = setsockopt(listenfd6, SOL_SOCKET,
|
sockError = setsockopt(listenfd6, SOL_SOCKET,
|
||||||
SO_REUSEADDR,
|
SO_REUSEADDR,
|
||||||
(const char *)&reuseaddr_on, sizeof (int));
|
(const char *)&reuseaddr_on, sizeof (int));
|
||||||
if (sockError == -1) {
|
if (sockError == SOCKET_ERROR) {
|
||||||
sock_close(listenfd4);
|
sock_close(listenfd4);
|
||||||
sock_close(listenfd6);
|
sock_close(listenfd6);
|
||||||
return UPNP_E_SOCKET_BIND;
|
return UPNP_E_SOCKET_BIND;
|
||||||
@ -617,7 +617,7 @@ static int get_miniserver_sockets(
|
|||||||
sockError = bind(listenfd6,
|
sockError = bind(listenfd6,
|
||||||
(struct sockaddr *)&__ss_v6,
|
(struct sockaddr *)&__ss_v6,
|
||||||
sizeof (__ss_v6));
|
sizeof (__ss_v6));
|
||||||
if (sockError == -1) {
|
if (sockError == SOCKET_ERROR) {
|
||||||
strerror_r(errno, errorBuffer,
|
strerror_r(errno, errorBuffer,
|
||||||
ERROR_BUFFER_LEN);
|
ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf(UPNP_INFO, MSERV,
|
UpnpPrintf(UPNP_INFO, MSERV,
|
||||||
@ -633,14 +633,14 @@ static int get_miniserver_sockets(
|
|||||||
}
|
}
|
||||||
#endif /* IPv6 */
|
#endif /* IPv6 */
|
||||||
} else {
|
} else {
|
||||||
if (listenfd4 != -1) {
|
if (listenfd4 != INVALID_SOCKET) {
|
||||||
unsigned short orig_listen_port4 = listen_port4;
|
unsigned short orig_listen_port4 = listen_port4;
|
||||||
do {
|
do {
|
||||||
serverAddr4->sin_port = htons(listen_port4++);
|
serverAddr4->sin_port = htons(listen_port4++);
|
||||||
sockError = bind(listenfd4,
|
sockError = bind(listenfd4,
|
||||||
(struct sockaddr *)serverAddr4,
|
(struct sockaddr *)serverAddr4,
|
||||||
sizeof(*serverAddr4));
|
sizeof(*serverAddr4));
|
||||||
if (sockError == -1) {
|
if (sockError == SOCKET_ERROR) {
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
errCode = WSAGetLastError();
|
errCode = WSAGetLastError();
|
||||||
#else
|
#else
|
||||||
@ -654,7 +654,7 @@ static int get_miniserver_sockets(
|
|||||||
}
|
}
|
||||||
} while (errCode != 0 &&
|
} while (errCode != 0 &&
|
||||||
listen_port4 >= orig_listen_port4);
|
listen_port4 >= orig_listen_port4);
|
||||||
if (sockError == -1) {
|
if (sockError == SOCKET_ERROR) {
|
||||||
strerror_r(errno, errorBuffer,
|
strerror_r(errno, errorBuffer,
|
||||||
ERROR_BUFFER_LEN);
|
ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf(UPNP_INFO, MSERV,
|
UpnpPrintf(UPNP_INFO, MSERV,
|
||||||
@ -671,14 +671,14 @@ static int get_miniserver_sockets(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef UPNP_ENABLE_IPV6
|
#ifdef UPNP_ENABLE_IPV6
|
||||||
if (listenfd6 != -1) {
|
if (listenfd6 != INVALID_SOCKET) {
|
||||||
unsigned short orig_listen_port6 = listen_port6;
|
unsigned short orig_listen_port6 = listen_port6;
|
||||||
do {
|
do {
|
||||||
serverAddr6->sin6_port = htons(listen_port6++);
|
serverAddr6->sin6_port = htons(listen_port6++);
|
||||||
sockError = bind(listenfd6,
|
sockError = bind(listenfd6,
|
||||||
(struct sockaddr *)serverAddr6,
|
(struct sockaddr *)serverAddr6,
|
||||||
sizeof(*serverAddr6));
|
sizeof(*serverAddr6));
|
||||||
if (sockError == -1) {
|
if (sockError == SOCKET_ERROR) {
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
errCode = WSAGetLastError();
|
errCode = WSAGetLastError();
|
||||||
#else
|
#else
|
||||||
@ -692,7 +692,7 @@ static int get_miniserver_sockets(
|
|||||||
}
|
}
|
||||||
} while (errCode != 0 &&
|
} while (errCode != 0 &&
|
||||||
listen_port6 >= orig_listen_port6);
|
listen_port6 >= orig_listen_port6);
|
||||||
if (sockError == -1) {
|
if (sockError == SOCKET_ERROR) {
|
||||||
strerror_r(errno, errorBuffer,
|
strerror_r(errno, errorBuffer,
|
||||||
ERROR_BUFFER_LEN);
|
ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf(UPNP_INFO, MSERV,
|
UpnpPrintf(UPNP_INFO, MSERV,
|
||||||
@ -710,9 +710,9 @@ static int get_miniserver_sockets(
|
|||||||
}
|
}
|
||||||
UpnpPrintf(UPNP_INFO, MSERV, __FILE__, __LINE__,
|
UpnpPrintf(UPNP_INFO, MSERV, __FILE__, __LINE__,
|
||||||
"get_miniserver_sockets: bind successful\n");
|
"get_miniserver_sockets: bind successful\n");
|
||||||
if (listenfd4 != -1) {
|
if (listenfd4 != INVALID_SOCKET) {
|
||||||
ret_code = listen(listenfd4, SOMAXCONN);
|
ret_code = listen(listenfd4, SOMAXCONN);
|
||||||
if (ret_code == -1) {
|
if (ret_code == SOCKET_ERROR) {
|
||||||
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf(UPNP_INFO, MSERV, __FILE__, __LINE__,
|
UpnpPrintf(UPNP_INFO, MSERV, __FILE__, __LINE__,
|
||||||
"mserv start: Error in IPv4 listen(): %s\n",
|
"mserv start: Error in IPv4 listen(): %s\n",
|
||||||
@ -734,9 +734,9 @@ static int get_miniserver_sockets(
|
|||||||
out->miniServerPort4 = actual_port4;
|
out->miniServerPort4 = actual_port4;
|
||||||
}
|
}
|
||||||
#ifdef UPNP_ENABLE_IPV6
|
#ifdef UPNP_ENABLE_IPV6
|
||||||
if (listenfd6 != -1) {
|
if (listenfd6 != INVALID_SOCKET) {
|
||||||
ret_code = listen(listenfd6, SOMAXCONN);
|
ret_code = listen(listenfd6, SOMAXCONN);
|
||||||
if (ret_code == -1) {
|
if (ret_code == SOCKET_ERROR) {
|
||||||
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf(UPNP_INFO, MSERV, __FILE__, __LINE__,
|
UpnpPrintf(UPNP_INFO, MSERV, __FILE__, __LINE__,
|
||||||
"mserv start: Error in IPv6 listen(): %s\n",
|
"mserv start: Error in IPv6 listen(): %s\n",
|
||||||
@ -783,7 +783,7 @@ static int get_miniserver_stopsock(
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
miniServerStopSock = socket(AF_INET, SOCK_DGRAM, 0);
|
miniServerStopSock = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
if (miniServerStopSock == -1) {
|
if (miniServerStopSock == INVALID_SOCKET) {
|
||||||
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
||||||
UpnpPrintf(UPNP_CRITICAL, MSERV, __FILE__, __LINE__,
|
UpnpPrintf(UPNP_CRITICAL, MSERV, __FILE__, __LINE__,
|
||||||
"Error in socket(): %s\n", errorBuffer);
|
"Error in socket(): %s\n", errorBuffer);
|
||||||
@ -795,7 +795,7 @@ static int get_miniserver_stopsock(
|
|||||||
stop_sockaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
|
stop_sockaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
|
||||||
ret = bind(miniServerStopSock, (struct sockaddr *)&stop_sockaddr,
|
ret = bind(miniServerStopSock, (struct sockaddr *)&stop_sockaddr,
|
||||||
sizeof(stop_sockaddr));
|
sizeof(stop_sockaddr));
|
||||||
if (ret == -1) {
|
if (ret == SOCKET_ERROR) {
|
||||||
UpnpPrintf(UPNP_CRITICAL,
|
UpnpPrintf(UPNP_CRITICAL,
|
||||||
MSERV, __FILE__, __LINE__,
|
MSERV, __FILE__, __LINE__,
|
||||||
"Error in binding localhost!!!\n");
|
"Error in binding localhost!!!\n");
|
||||||
@ -813,19 +813,19 @@ static int get_miniserver_stopsock(
|
|||||||
return UPNP_E_SUCCESS;
|
return UPNP_E_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void InitMiniServerSockArray(MiniServerSockArray *miniSocket)
|
static UPNP_INLINE void InitMiniServerSockArray(MiniServerSockArray *miniSocket)
|
||||||
{
|
{
|
||||||
miniSocket->miniServerSock4 = -1;
|
miniSocket->miniServerSock4 = INVALID_SOCKET;
|
||||||
miniSocket->miniServerSock6 = -1;
|
miniSocket->miniServerSock6 = INVALID_SOCKET;
|
||||||
miniSocket->miniServerStopSock = -1;
|
miniSocket->miniServerStopSock = INVALID_SOCKET;
|
||||||
miniSocket->ssdpSock4 = -1;
|
miniSocket->ssdpSock4 = INVALID_SOCKET;
|
||||||
miniSocket->ssdpSock6 = -1;
|
miniSocket->ssdpSock6 = INVALID_SOCKET;
|
||||||
miniSocket->ssdpSock6UlaGua = -1;
|
miniSocket->ssdpSock6UlaGua = INVALID_SOCKET;
|
||||||
miniSocket->stopPort = -1;
|
miniSocket->stopPort = -1;
|
||||||
miniSocket->miniServerPort4 = -1;
|
miniSocket->miniServerPort4 = -1;
|
||||||
miniSocket->miniServerPort6 = -1;
|
miniSocket->miniServerPort6 = -1;
|
||||||
miniSocket->ssdpReqSock4 = -1;
|
miniSocket->ssdpReqSock4 = INVALID_SOCKET;
|
||||||
miniSocket->ssdpReqSock6 = -1;
|
miniSocket->ssdpReqSock6 = INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
int StartMiniServer(
|
int StartMiniServer(
|
||||||
@ -936,7 +936,7 @@ int StopMiniServer()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
sock = socket(AF_INET, SOCK_DGRAM, 0);
|
sock = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
if (sock == -1) {
|
if (sock == INVALID_SOCKET) {
|
||||||
strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);
|
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",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user