File tree Expand file tree Collapse file tree 2 files changed +58
-13
lines changed Expand file tree Collapse file tree 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 @@ -277,20 +277,32 @@ typedef int pid_t;
277
277
#define EAFNOSUPPORT WSAEAFNOSUPPORT
278
278
#undef EWOULDBLOCK
279
279
#define EWOULDBLOCK WSAEWOULDBLOCK
280
+ #undef ECONNABORTED
281
+ #define ECONNABORTED WSAECONNABORTED
280
282
#undef ECONNRESET
281
283
#define ECONNRESET WSAECONNRESET
282
284
#undef EINPROGRESS
283
285
#define EINPROGRESS WSAEINPROGRESS
286
+ #undef EISCONN
287
+ #define EISCONN WSAEISCONN
284
288
#undef ENOBUFS
285
289
#define ENOBUFS WSAENOBUFS
286
290
#undef EPROTONOSUPPORT
287
291
#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
288
292
#undef ECONNREFUSED
289
293
#define ECONNREFUSED WSAECONNREFUSED
290
- #undef EBADFD
291
- #define EBADFD WSAENOTSOCK
294
+ #undef ENOTSOCK
295
+ #define ENOTSOCK WSAENOTSOCK
292
296
#undef EOPNOTSUPP
293
297
#define EOPNOTSUPP WSAEOPNOTSUPP
298
+ #undef EADDRINUSE
299
+ #define EADDRINUSE WSAEADDRINUSE
300
+ #undef EADDRNOTAVAIL
301
+ #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
302
+ #undef EHOSTUNREACH
303
+ #define EHOSTUNREACH WSAEHOSTUNREACH
304
+ #undef ENOTCONN
305
+ #define ENOTCONN WSAENOTCONN
294
306
295
307
/*
296
308
* Extended locale functions with gratuitous underscore prefixes.
You can’t perform that action at this time.
0 commit comments