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 @@ | |||
29 | #ifdef MHD_WINSOCK_SOCKETS | 29 | #ifdef MHD_WINSOCK_SOCKETS |
30 | 30 | ||
31 | /** | 31 | /** |
32 | * Return errno equivalent of last winsock error | 32 | * Return pointer to string description of specified WinSock error |
33 | * @return errno equivalent of last winsock error | 33 | * @param err the WinSock error code. |
34 | * @return pointer to string description of specified WinSock error. | ||
34 | */ | 35 | */ |
35 | int MHD_W32_errno_from_winsock_(void) | 36 | const char* MHD_W32_strerror_winsock_(int err) |
36 | { | 37 | { |
37 | switch(WSAGetLastError()) | 38 | switch (err) |
38 | { | ||
39 | case 0: return 0; | ||
40 | case WSA_INVALID_HANDLE: return EBADF; | ||
41 | case WSA_NOT_ENOUGH_MEMORY: return ENOMEM; | ||
42 | case WSA_INVALID_PARAMETER: return EINVAL; | ||
43 | case WSAEINTR: return EINTR; | ||
44 | case WSAEWOULDBLOCK: return EWOULDBLOCK; | ||
45 | case WSAEINPROGRESS: return EINPROGRESS; | ||
46 | case WSAEALREADY: return EALREADY; | ||
47 | case WSAENOTSOCK: return ENOTSOCK; | ||
48 | case WSAEDESTADDRREQ: return EDESTADDRREQ; | ||
49 | case WSAEMSGSIZE: return EMSGSIZE; | ||
50 | case WSAEPROTOTYPE: return EPROTOTYPE; | ||
51 | case WSAENOPROTOOPT: return ENOPROTOOPT; | ||
52 | case WSAEPROTONOSUPPORT: return EPROTONOSUPPORT; | ||
53 | case WSAESOCKTNOSUPPORT: return ESOCKTNOSUPPORT; | ||
54 | case WSAEOPNOTSUPP: return EOPNOTSUPP; | ||
55 | case WSAEPFNOSUPPORT: return EPFNOSUPPORT; | ||
56 | case WSAEAFNOSUPPORT: return EAFNOSUPPORT; | ||
57 | case WSAEADDRINUSE: return EADDRINUSE; | ||
58 | case WSAEADDRNOTAVAIL: return EADDRNOTAVAIL; | ||
59 | case WSAENETDOWN: return ENETDOWN; | ||
60 | case WSAENETUNREACH: return ENETUNREACH; | ||
61 | case WSAENETRESET: return ENETRESET; | ||
62 | case WSAECONNABORTED: return ECONNABORTED; | ||
63 | case WSAECONNRESET: return ECONNRESET; | ||
64 | case WSAENOBUFS: return ENOBUFS; | ||
65 | case WSAEISCONN: return EISCONN; | ||
66 | case WSAENOTCONN: return ENOTCONN; | ||
67 | case WSAESHUTDOWN: return ESHUTDOWN; | ||
68 | case WSAETOOMANYREFS: return ETOOMANYREFS; | ||
69 | case WSAETIMEDOUT: return ETIMEDOUT; | ||
70 | case WSAECONNREFUSED: return ECONNREFUSED; | ||
71 | case WSAELOOP: return ELOOP; | ||
72 | case WSAENAMETOOLONG: return ENAMETOOLONG; | ||
73 | case WSAEHOSTDOWN: return EHOSTDOWN; | ||
74 | case WSAEHOSTUNREACH: return EHOSTUNREACH; | ||
75 | case WSAENOTEMPTY: return ENOTEMPTY; | ||
76 | case WSAEPROCLIM: return EPROCLIM; | ||
77 | case WSAEUSERS: return EUSERS; | ||
78 | case WSAEDQUOT: return EDQUOT; | ||
79 | case WSAESTALE: return ESTALE; | ||
80 | case WSAEREMOTE: return EREMOTE; | ||
81 | case WSAEINVAL: return EINVAL; | ||
82 | case WSAEFAULT: return EFAULT; | ||
83 | case WSANO_DATA: return ENODATA; | ||
84 | /* Rough equivalents */ | ||
85 | case WSAEDISCON: return ECONNRESET; | ||
86 | case WSAEINVALIDPROCTABLE: return EFAULT; | ||
87 | case WSASYSNOTREADY: | ||
88 | case WSANOTINITIALISED: | ||
89 | case WSASYSCALLFAILURE: return ENOBUFS; | ||
90 | case WSAVERNOTSUPPORTED: return EOPNOTSUPP; | ||
91 | case WSAEREFUSED: return EIO; | ||
92 | } | ||
93 | return EINVAL; | ||
94 | } | ||
95 | |||
96 | /** | ||
97 | * Return pointer to string description of errnum error | ||
98 | * Works fine with both standard errno errnums | ||
99 | * and errnums from MHD_W32_errno_from_winsock_ | ||
100 | * @param errnum the errno or value from MHD_W32_errno_from_winsock_() | ||
101 | * @return pointer to string description of error | ||
102 | */ | ||
103 | const char* MHD_W32_strerror_(int errnum) | ||
104 | { | ||
105 | switch(errnum) | ||
106 | { | ||
107 | case 0: | ||
108 | return "No error"; | ||
109 | case EWOULDBLOCK: | ||
110 | return "Operation would block"; | ||
111 | case EINPROGRESS: | ||
112 | return "Connection already in progress"; | ||
113 | case EALREADY: | ||
114 | return "Socket already connected"; | ||
115 | case ENOTSOCK: | ||
116 | return "Socket operation on non-socket"; | ||
117 | case EDESTADDRREQ: | ||
118 | return "Destination address required"; | ||
119 | case EMSGSIZE: | ||
120 | return "Message too long"; | ||
121 | case EPROTOTYPE: | ||
122 | return "Protocol wrong type for socket"; | ||
123 | case ENOPROTOOPT: | ||
124 | return "Protocol not available"; | ||
125 | case EPROTONOSUPPORT: | ||
126 | return "Unknown protocol"; | ||
127 | case ESOCKTNOSUPPORT: | ||
128 | return "Socket type not supported"; | ||
129 | case EOPNOTSUPP: | ||
130 | return "Operation not supported on socket"; | ||
131 | case EPFNOSUPPORT: | ||
132 | return "Protocol family not supported"; | ||
133 | case EAFNOSUPPORT: | ||
134 | return "Address family not supported by protocol family"; | ||
135 | case EADDRINUSE: | ||
136 | return "Address already in use"; | ||
137 | case EADDRNOTAVAIL: | ||
138 | return "Cannot assign requested address"; | ||
139 | case ENETDOWN: | ||
140 | return "Network is down"; | ||
141 | case ENETUNREACH: | ||
142 | return "Network is unreachable"; | ||
143 | case ENETRESET: | ||
144 | return "Network dropped connection on reset"; | ||
145 | case ECONNABORTED: | ||
146 | return "Software caused connection abort"; | ||
147 | case ECONNRESET: | ||
148 | return "Connection reset by peer"; | ||
149 | case ENOBUFS: | ||
150 | return "No system resources available"; | ||
151 | case EISCONN: | ||
152 | return "Socket is already connected"; | ||
153 | case ENOTCONN: | ||
154 | return "Socket is not connected"; | ||
155 | case ESHUTDOWN: | ||
156 | return "Can't send after socket shutdown"; | ||
157 | case ETOOMANYREFS: | ||
158 | return "Too many references: cannot splice"; | ||
159 | case ETIMEDOUT: | ||
160 | return "Connection timed out"; | ||
161 | case ECONNREFUSED: | ||
162 | return "Connection refused"; | ||
163 | case ELOOP: | ||
164 | return "Cannot translate name"; | ||
165 | case EHOSTDOWN: | ||
166 | return "Host is down"; | ||
167 | case EHOSTUNREACH: | ||
168 | return "Host is unreachable"; | ||
169 | case EPROCLIM: | ||
170 | return "Too many processes"; | ||
171 | case EUSERS: | ||
172 | return "Too many users"; | ||
173 | case EDQUOT: | ||
174 | return "Disk quota exceeded"; | ||
175 | case ESTALE: | ||
176 | return "Stale file handle reference"; | ||
177 | case EREMOTE: | ||
178 | return "Resource is remote"; | ||
179 | case ENODATA: | ||
180 | return "No data available"; | ||
181 | } | ||
182 | return strerror(errnum); | ||
183 | } | ||
184 | |||
185 | /** | ||
186 | * Return pointer to string description of last winsock error | ||
187 | * @return pointer to string description of last winsock error | ||
188 | */ | ||
189 | const char* MHD_W32_strerror_last_winsock_(void) | ||
190 | { | ||
191 | switch (WSAGetLastError()) | ||
192 | { | 39 | { |
193 | case 0: | 40 | case 0: |
194 | return "No error"; | 41 | return "No error"; |
@@ -386,160 +233,5 @@ const char* MHD_W32_strerror_last_winsock_(void) | |||
386 | return "Unknown winsock error"; | 233 | return "Unknown winsock error"; |
387 | } | 234 | } |
388 | 235 | ||
389 | /** | ||
390 | * Set last winsock error to equivalent of given errno value | ||
391 | * @param errnum the errno value to set | ||
392 | */ | ||
393 | void MHD_W32_set_last_winsock_error_(int errnum) | ||
394 | { | ||
395 | switch (errnum) | ||
396 | { | ||
397 | case 0: | ||
398 | WSASetLastError(0); | ||
399 | break; | ||
400 | case EBADF: | ||
401 | WSASetLastError(WSA_INVALID_HANDLE); | ||
402 | break; | ||
403 | case ENOMEM: | ||
404 | WSASetLastError(WSA_NOT_ENOUGH_MEMORY); | ||
405 | break; | ||
406 | case EINVAL: | ||
407 | WSASetLastError(WSA_INVALID_PARAMETER); | ||
408 | break; | ||
409 | case EINTR: | ||
410 | WSASetLastError(WSAEINTR); | ||
411 | break; | ||
412 | case EWOULDBLOCK: | ||
413 | WSASetLastError(WSAEWOULDBLOCK); | ||
414 | break; | ||
415 | case EINPROGRESS: | ||
416 | WSASetLastError(WSAEINPROGRESS); | ||
417 | break; | ||
418 | case EALREADY: | ||
419 | WSASetLastError(WSAEALREADY); | ||
420 | break; | ||
421 | case ENOTSOCK: | ||
422 | WSASetLastError(WSAENOTSOCK); | ||
423 | break; | ||
424 | case EDESTADDRREQ: | ||
425 | WSASetLastError(WSAEDESTADDRREQ); | ||
426 | break; | ||
427 | case EMSGSIZE: | ||
428 | WSASetLastError(WSAEMSGSIZE); | ||
429 | break; | ||
430 | case EPROTOTYPE: | ||
431 | WSASetLastError(WSAEPROTOTYPE); | ||
432 | break; | ||
433 | case ENOPROTOOPT: | ||
434 | WSASetLastError(WSAENOPROTOOPT); | ||
435 | break; | ||
436 | case EPROTONOSUPPORT: | ||
437 | WSASetLastError(WSAEPROTONOSUPPORT); | ||
438 | break; | ||
439 | case ESOCKTNOSUPPORT: | ||
440 | WSASetLastError(WSAESOCKTNOSUPPORT); | ||
441 | break; | ||
442 | case EOPNOTSUPP: | ||
443 | WSASetLastError(WSAEOPNOTSUPP); | ||
444 | break; | ||
445 | case EPFNOSUPPORT: | ||
446 | WSASetLastError(WSAEPFNOSUPPORT); | ||
447 | break; | ||
448 | case EAFNOSUPPORT: | ||
449 | WSASetLastError(WSAEAFNOSUPPORT); | ||
450 | break; | ||
451 | case EADDRINUSE: | ||
452 | WSASetLastError(WSAEADDRINUSE); | ||
453 | break; | ||
454 | case EADDRNOTAVAIL: | ||
455 | WSASetLastError(WSAEADDRNOTAVAIL); | ||
456 | break; | ||
457 | case ENETDOWN: | ||
458 | WSASetLastError(WSAENETDOWN); | ||
459 | break; | ||
460 | case ENETUNREACH: | ||
461 | WSASetLastError(WSAENETUNREACH); | ||
462 | break; | ||
463 | case ENETRESET: | ||
464 | WSASetLastError(WSAENETRESET); | ||
465 | break; | ||
466 | case ECONNABORTED: | ||
467 | WSASetLastError(WSAECONNABORTED); | ||
468 | break; | ||
469 | case ECONNRESET: | ||
470 | WSASetLastError(WSAECONNRESET); | ||
471 | break; | ||
472 | case ENOBUFS: | ||
473 | WSASetLastError(WSAENOBUFS); | ||
474 | break; | ||
475 | case EISCONN: | ||
476 | WSASetLastError(WSAEISCONN); | ||
477 | break; | ||
478 | case ENOTCONN: | ||
479 | WSASetLastError(WSAENOTCONN); | ||
480 | break; | ||
481 | case ESHUTDOWN: | ||
482 | WSASetLastError(WSAESHUTDOWN); | ||
483 | break; | ||
484 | case ETOOMANYREFS: | ||
485 | WSASetLastError(WSAETOOMANYREFS); | ||
486 | break; | ||
487 | case ETIMEDOUT: | ||
488 | WSASetLastError(WSAETIMEDOUT); | ||
489 | break; | ||
490 | case ECONNREFUSED: | ||
491 | WSASetLastError(WSAECONNREFUSED); | ||
492 | break; | ||
493 | case ELOOP: | ||
494 | WSASetLastError(WSAELOOP); | ||
495 | break; | ||
496 | case ENAMETOOLONG: | ||
497 | WSASetLastError(WSAENAMETOOLONG); | ||
498 | break; | ||
499 | case EHOSTDOWN: | ||
500 | WSASetLastError(WSAEHOSTDOWN); | ||
501 | break; | ||
502 | case EHOSTUNREACH: | ||
503 | WSASetLastError(WSAEHOSTUNREACH); | ||
504 | break; | ||
505 | case ENOTEMPTY: | ||
506 | WSASetLastError(WSAENOTEMPTY); | ||
507 | break; | ||
508 | case EPROCLIM: | ||
509 | WSASetLastError(WSAEPROCLIM); | ||
510 | break; | ||
511 | case EUSERS: | ||
512 | WSASetLastError(WSAEUSERS); | ||
513 | break; | ||
514 | case EDQUOT: | ||
515 | WSASetLastError(WSAEDQUOT); | ||
516 | break; | ||
517 | case ESTALE: | ||
518 | WSASetLastError(WSAESTALE); | ||
519 | break; | ||
520 | case EREMOTE: | ||
521 | WSASetLastError(WSAEREMOTE); | ||
522 | break; | ||
523 | case EFAULT: | ||
524 | WSASetLastError(WSAEFAULT); | ||
525 | break; | ||
526 | case ENODATA: | ||
527 | WSASetLastError(WSANO_DATA); | ||
528 | break; | ||
529 | #if EAGAIN != EWOULDBLOCK | ||
530 | case EAGAIN: | ||
531 | WSASetLastError(WSAEWOULDBLOCK); | ||
532 | break; | ||
533 | #endif | ||
534 | /* Rough equivalent */ | ||
535 | case EIO: | ||
536 | WSASetLastError(WSAEREFUSED); | ||
537 | break; | ||
538 | |||
539 | default: /* Unmapped errors */ | ||
540 | WSASetLastError(WSAENOBUFS); | ||
541 | break; | ||
542 | } | ||
543 | } | ||
544 | 236 | ||
545 | #endif /* MHD_WINSOCK_SOCKETS */ | 237 | #endif /* MHD_WINSOCK_SOCKETS */ |