diff options
Diffstat (limited to 'src/microhttpd/mhd_sockets.c')
-rw-r--r-- | src/microhttpd/mhd_sockets.c | 318 |
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 */ |