summaryrefslogtreecommitdiff
path: root/src/microhttpd/mhd_sockets.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/mhd_sockets.c')
-rw-r--r--src/microhttpd/mhd_sockets.c318
1 files changed, 5 insertions, 313 deletions
diff --git a/src/microhttpd/mhd_sockets.c b/src/microhttpd/mhd_sockets.c
index 4214108e..643ed849 100644
--- a/src/microhttpd/mhd_sockets.c
+++ b/src/microhttpd/mhd_sockets.c
@@ -29,166 +29,13 @@
#ifdef MHD_WINSOCK_SOCKETS
/**
- * Return errno equivalent of last winsock error
- * @return errno equivalent of last winsock error
+ * Return pointer to string description of specified WinSock error
+ * @param err the WinSock error code.
+ * @return pointer to string description of specified WinSock error.
*/
-int MHD_W32_errno_from_winsock_(void)
+const char* MHD_W32_strerror_winsock_(int err)
{
- switch(WSAGetLastError())
- {
- case 0: return 0;
- case WSA_INVALID_HANDLE: return EBADF;
- case WSA_NOT_ENOUGH_MEMORY: return ENOMEM;
- case WSA_INVALID_PARAMETER: return EINVAL;
- case WSAEINTR: return EINTR;
- case WSAEWOULDBLOCK: return EWOULDBLOCK;
- case WSAEINPROGRESS: return EINPROGRESS;
- case WSAEALREADY: return EALREADY;
- case WSAENOTSOCK: return ENOTSOCK;
- case WSAEDESTADDRREQ: return EDESTADDRREQ;
- case WSAEMSGSIZE: return EMSGSIZE;
- case WSAEPROTOTYPE: return EPROTOTYPE;
- case WSAENOPROTOOPT: return ENOPROTOOPT;
- case WSAEPROTONOSUPPORT: return EPROTONOSUPPORT;
- case WSAESOCKTNOSUPPORT: return ESOCKTNOSUPPORT;
- case WSAEOPNOTSUPP: return EOPNOTSUPP;
- case WSAEPFNOSUPPORT: return EPFNOSUPPORT;
- case WSAEAFNOSUPPORT: return EAFNOSUPPORT;
- case WSAEADDRINUSE: return EADDRINUSE;
- case WSAEADDRNOTAVAIL: return EADDRNOTAVAIL;
- case WSAENETDOWN: return ENETDOWN;
- case WSAENETUNREACH: return ENETUNREACH;
- case WSAENETRESET: return ENETRESET;
- case WSAECONNABORTED: return ECONNABORTED;
- case WSAECONNRESET: return ECONNRESET;
- case WSAENOBUFS: return ENOBUFS;
- case WSAEISCONN: return EISCONN;
- case WSAENOTCONN: return ENOTCONN;
- case WSAESHUTDOWN: return ESHUTDOWN;
- case WSAETOOMANYREFS: return ETOOMANYREFS;
- case WSAETIMEDOUT: return ETIMEDOUT;
- case WSAECONNREFUSED: return ECONNREFUSED;
- case WSAELOOP: return ELOOP;
- case WSAENAMETOOLONG: return ENAMETOOLONG;
- case WSAEHOSTDOWN: return EHOSTDOWN;
- case WSAEHOSTUNREACH: return EHOSTUNREACH;
- case WSAENOTEMPTY: return ENOTEMPTY;
- case WSAEPROCLIM: return EPROCLIM;
- case WSAEUSERS: return EUSERS;
- case WSAEDQUOT: return EDQUOT;
- case WSAESTALE: return ESTALE;
- case WSAEREMOTE: return EREMOTE;
- case WSAEINVAL: return EINVAL;
- case WSAEFAULT: return EFAULT;
- case WSANO_DATA: return ENODATA;
- /* Rough equivalents */
- case WSAEDISCON: return ECONNRESET;
- case WSAEINVALIDPROCTABLE: return EFAULT;
- case WSASYSNOTREADY:
- case WSANOTINITIALISED:
- case WSASYSCALLFAILURE: return ENOBUFS;
- case WSAVERNOTSUPPORTED: return EOPNOTSUPP;
- case WSAEREFUSED: return EIO;
- }
- return EINVAL;
-}
-
-/**
- * Return pointer to string description of errnum error
- * Works fine with both standard errno errnums
- * and errnums from MHD_W32_errno_from_winsock_
- * @param errnum the errno or value from MHD_W32_errno_from_winsock_()
- * @return pointer to string description of error
- */
-const char* MHD_W32_strerror_(int errnum)
-{
- switch(errnum)
- {
- case 0:
- return "No error";
- case EWOULDBLOCK:
- return "Operation would block";
- case EINPROGRESS:
- return "Connection already in progress";
- case EALREADY:
- return "Socket already connected";
- case ENOTSOCK:
- return "Socket operation on non-socket";
- case EDESTADDRREQ:
- return "Destination address required";
- case EMSGSIZE:
- return "Message too long";
- case EPROTOTYPE:
- return "Protocol wrong type for socket";
- case ENOPROTOOPT:
- return "Protocol not available";
- case EPROTONOSUPPORT:
- return "Unknown protocol";
- case ESOCKTNOSUPPORT:
- return "Socket type not supported";
- case EOPNOTSUPP:
- return "Operation not supported on socket";
- case EPFNOSUPPORT:
- return "Protocol family not supported";
- case EAFNOSUPPORT:
- return "Address family not supported by protocol family";
- case EADDRINUSE:
- return "Address already in use";
- case EADDRNOTAVAIL:
- return "Cannot assign requested address";
- case ENETDOWN:
- return "Network is down";
- case ENETUNREACH:
- return "Network is unreachable";
- case ENETRESET:
- return "Network dropped connection on reset";
- case ECONNABORTED:
- return "Software caused connection abort";
- case ECONNRESET:
- return "Connection reset by peer";
- case ENOBUFS:
- return "No system resources available";
- case EISCONN:
- return "Socket is already connected";
- case ENOTCONN:
- return "Socket is not connected";
- case ESHUTDOWN:
- return "Can't send after socket shutdown";
- case ETOOMANYREFS:
- return "Too many references: cannot splice";
- case ETIMEDOUT:
- return "Connection timed out";
- case ECONNREFUSED:
- return "Connection refused";
- case ELOOP:
- return "Cannot translate name";
- case EHOSTDOWN:
- return "Host is down";
- case EHOSTUNREACH:
- return "Host is unreachable";
- case EPROCLIM:
- return "Too many processes";
- case EUSERS:
- return "Too many users";
- case EDQUOT:
- return "Disk quota exceeded";
- case ESTALE:
- return "Stale file handle reference";
- case EREMOTE:
- return "Resource is remote";
- case ENODATA:
- return "No data available";
- }
- return strerror(errnum);
-}
-
-/**
- * Return pointer to string description of last winsock error
- * @return pointer to string description of last winsock error
- */
-const char* MHD_W32_strerror_last_winsock_(void)
-{
- switch (WSAGetLastError())
+ switch (err)
{
case 0:
return "No error";
@@ -386,160 +233,5 @@ const char* MHD_W32_strerror_last_winsock_(void)
return "Unknown winsock error";
}
-/**
- * Set last winsock error to equivalent of given errno value
- * @param errnum the errno value to set
- */
-void MHD_W32_set_last_winsock_error_(int errnum)
-{
- switch (errnum)
- {
- case 0:
- WSASetLastError(0);
- break;
- case EBADF:
- WSASetLastError(WSA_INVALID_HANDLE);
- break;
- case ENOMEM:
- WSASetLastError(WSA_NOT_ENOUGH_MEMORY);
- break;
- case EINVAL:
- WSASetLastError(WSA_INVALID_PARAMETER);
- break;
- case EINTR:
- WSASetLastError(WSAEINTR);
- break;
- case EWOULDBLOCK:
- WSASetLastError(WSAEWOULDBLOCK);
- break;
- case EINPROGRESS:
- WSASetLastError(WSAEINPROGRESS);
- break;
- case EALREADY:
- WSASetLastError(WSAEALREADY);
- break;
- case ENOTSOCK:
- WSASetLastError(WSAENOTSOCK);
- break;
- case EDESTADDRREQ:
- WSASetLastError(WSAEDESTADDRREQ);
- break;
- case EMSGSIZE:
- WSASetLastError(WSAEMSGSIZE);
- break;
- case EPROTOTYPE:
- WSASetLastError(WSAEPROTOTYPE);
- break;
- case ENOPROTOOPT:
- WSASetLastError(WSAENOPROTOOPT);
- break;
- case EPROTONOSUPPORT:
- WSASetLastError(WSAEPROTONOSUPPORT);
- break;
- case ESOCKTNOSUPPORT:
- WSASetLastError(WSAESOCKTNOSUPPORT);
- break;
- case EOPNOTSUPP:
- WSASetLastError(WSAEOPNOTSUPP);
- break;
- case EPFNOSUPPORT:
- WSASetLastError(WSAEPFNOSUPPORT);
- break;
- case EAFNOSUPPORT:
- WSASetLastError(WSAEAFNOSUPPORT);
- break;
- case EADDRINUSE:
- WSASetLastError(WSAEADDRINUSE);
- break;
- case EADDRNOTAVAIL:
- WSASetLastError(WSAEADDRNOTAVAIL);
- break;
- case ENETDOWN:
- WSASetLastError(WSAENETDOWN);
- break;
- case ENETUNREACH:
- WSASetLastError(WSAENETUNREACH);
- break;
- case ENETRESET:
- WSASetLastError(WSAENETRESET);
- break;
- case ECONNABORTED:
- WSASetLastError(WSAECONNABORTED);
- break;
- case ECONNRESET:
- WSASetLastError(WSAECONNRESET);
- break;
- case ENOBUFS:
- WSASetLastError(WSAENOBUFS);
- break;
- case EISCONN:
- WSASetLastError(WSAEISCONN);
- break;
- case ENOTCONN:
- WSASetLastError(WSAENOTCONN);
- break;
- case ESHUTDOWN:
- WSASetLastError(WSAESHUTDOWN);
- break;
- case ETOOMANYREFS:
- WSASetLastError(WSAETOOMANYREFS);
- break;
- case ETIMEDOUT:
- WSASetLastError(WSAETIMEDOUT);
- break;
- case ECONNREFUSED:
- WSASetLastError(WSAECONNREFUSED);
- break;
- case ELOOP:
- WSASetLastError(WSAELOOP);
- break;
- case ENAMETOOLONG:
- WSASetLastError(WSAENAMETOOLONG);
- break;
- case EHOSTDOWN:
- WSASetLastError(WSAEHOSTDOWN);
- break;
- case EHOSTUNREACH:
- WSASetLastError(WSAEHOSTUNREACH);
- break;
- case ENOTEMPTY:
- WSASetLastError(WSAENOTEMPTY);
- break;
- case EPROCLIM:
- WSASetLastError(WSAEPROCLIM);
- break;
- case EUSERS:
- WSASetLastError(WSAEUSERS);
- break;
- case EDQUOT:
- WSASetLastError(WSAEDQUOT);
- break;
- case ESTALE:
- WSASetLastError(WSAESTALE);
- break;
- case EREMOTE:
- WSASetLastError(WSAEREMOTE);
- break;
- case EFAULT:
- WSASetLastError(WSAEFAULT);
- break;
- case ENODATA:
- WSASetLastError(WSANO_DATA);
- break;
-#if EAGAIN != EWOULDBLOCK
- case EAGAIN:
- WSASetLastError(WSAEWOULDBLOCK);
- break;
-#endif
- /* Rough equivalent */
- case EIO:
- WSASetLastError(WSAEREFUSED);
- break;
-
- default: /* Unmapped errors */
- WSASetLastError(WSAENOBUFS);
- break;
- }
-}
#endif /* MHD_WINSOCK_SOCKETS */