File tree 2 files changed +58
-13
lines changed
2 files changed +58
-13
lines changed Original file line number Diff line number Diff line change @@ -44,23 +44,38 @@ int pgwin32_noblock = 0;
44
44
45
45
/*
46
46
* Convert the last socket error code into errno
47
+ *
48
+ * Note: where there is a direct correspondence between a WSAxxx error code
49
+ * and a Berkeley error symbol, this mapping is actually a no-op, because
50
+ * in win32.h we redefine the network-related Berkeley error symbols to have
51
+ * the values of their WSAxxx counterparts. The point of the switch is
52
+ * mostly to translate near-miss error codes into something that's sensible
53
+ * in the Berkeley universe.
47
54
*/
48
55
static void
49
56
TranslateSocketError (void )
50
57
{
51
58
switch (WSAGetLastError ())
52
59
{
53
- case WSANOTINITIALISED :
54
- case WSAENETDOWN :
55
- case WSAEINPROGRESS :
56
60
case WSAEINVAL :
57
- case WSAESOCKTNOSUPPORT :
58
- case WSAEFAULT :
61
+ case WSANOTINITIALISED :
59
62
case WSAEINVALIDPROVIDER :
60
63
case WSAEINVALIDPROCTABLE :
61
- case WSAEMSGSIZE :
64
+ case WSAEDESTADDRREQ :
62
65
errno = EINVAL ;
63
66
break ;
67
+ case WSAEINPROGRESS :
68
+ errno = EINPROGRESS ;
69
+ break ;
70
+ case WSAEFAULT :
71
+ errno = EFAULT ;
72
+ break ;
73
+ case WSAEISCONN :
74
+ errno = EISCONN ;
75
+ break ;
76
+ case WSAEMSGSIZE :
77
+ errno = EMSGSIZE ;
78
+ break ;
64
79
case WSAEAFNOSUPPORT :
65
80
errno = EAFNOSUPPORT ;
66
81
break ;
@@ -72,16 +87,23 @@ TranslateSocketError(void)
72
87
break ;
73
88
case WSAEPROTONOSUPPORT :
74
89
case WSAEPROTOTYPE :
90
+ case WSAESOCKTNOSUPPORT :
75
91
errno = EPROTONOSUPPORT ;
76
92
break ;
93
+ case WSAECONNABORTED :
94
+ errno = ECONNABORTED ;
95
+ break ;
77
96
case WSAECONNREFUSED :
78
97
errno = ECONNREFUSED ;
79
98
break ;
99
+ case WSAECONNRESET :
100
+ errno = ECONNRESET ;
101
+ break ;
80
102
case WSAEINTR :
81
103
errno = EINTR ;
82
104
break ;
83
105
case WSAENOTSOCK :
84
- errno = EBADFD ;
106
+ errno = ENOTSOCK ;
85
107
break ;
86
108
case WSAEOPNOTSUPP :
87
109
errno = EOPNOTSUPP ;
@@ -92,13 +114,24 @@ TranslateSocketError(void)
92
114
case WSAEACCES :
93
115
errno = EACCES ;
94
116
break ;
95
- case WSAENOTCONN :
117
+ case WSAEADDRINUSE :
118
+ errno = EADDRINUSE ;
119
+ break ;
120
+ case WSAEADDRNOTAVAIL :
121
+ errno = EADDRNOTAVAIL ;
122
+ break ;
123
+ case WSAEHOSTUNREACH :
124
+ case WSAEHOSTDOWN :
125
+ case WSAHOST_NOT_FOUND :
126
+ case WSAENETDOWN :
127
+ case WSAENETUNREACH :
96
128
case WSAENETRESET :
97
- case WSAECONNRESET :
129
+ errno = EHOSTUNREACH ;
130
+ break ;
131
+ case WSAENOTCONN :
98
132
case WSAESHUTDOWN :
99
- case WSAECONNABORTED :
100
133
case WSAEDISCON :
101
- errno = ECONNREFUSED ; /* ENOTCONN? */
134
+ errno = ENOTCONN ;
102
135
break ;
103
136
default :
104
137
ereport (NOTICE ,
Original file line number Diff line number Diff line change @@ -285,20 +285,32 @@ typedef int pid_t;
285
285
#define EAFNOSUPPORT WSAEAFNOSUPPORT
286
286
#undef EWOULDBLOCK
287
287
#define EWOULDBLOCK WSAEWOULDBLOCK
288
+ #undef ECONNABORTED
289
+ #define ECONNABORTED WSAECONNABORTED
288
290
#undef ECONNRESET
289
291
#define ECONNRESET WSAECONNRESET
290
292
#undef EINPROGRESS
291
293
#define EINPROGRESS WSAEINPROGRESS
294
+ #undef EISCONN
295
+ #define EISCONN WSAEISCONN
292
296
#undef ENOBUFS
293
297
#define ENOBUFS WSAENOBUFS
294
298
#undef EPROTONOSUPPORT
295
299
#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
296
300
#undef ECONNREFUSED
297
301
#define ECONNREFUSED WSAECONNREFUSED
298
- #undef EBADFD
299
- #define EBADFD WSAENOTSOCK
302
+ #undef ENOTSOCK
303
+ #define ENOTSOCK WSAENOTSOCK
300
304
#undef EOPNOTSUPP
301
305
#define EOPNOTSUPP WSAEOPNOTSUPP
306
+ #undef EADDRINUSE
307
+ #define EADDRINUSE WSAEADDRINUSE
308
+ #undef EADDRNOTAVAIL
309
+ #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
310
+ #undef EHOSTUNREACH
311
+ #define EHOSTUNREACH WSAEHOSTUNREACH
312
+ #undef ENOTCONN
313
+ #define ENOTCONN WSAENOTCONN
302
314
303
315
/*
304
316
* Extended locale functions with gratuitous underscore prefixes.
You can’t perform that action at this time.
0 commit comments