You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by tr...@locus.apache.org on 2000/04/03 06:52:14 UTC
cvs commit: apache-2.0/src/lib/apr/network_io/win32 sockopt.c sockets.c networkio.h
trawick 00/04/02 21:52:14
Modified: src/lib/apr/network_io/win32 sockopt.c sockets.c networkio.h
Log:
Return the right APR error code after a resolver failure
on Win32.
Revision Changes Path
1.9 +22 -6 apache-2.0/src/lib/apr/network_io/win32/sockopt.c
Index: sockopt.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/win32/sockopt.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- sockopt.c 2000/03/31 08:36:16 1.8
+++ sockopt.c 2000/04/03 04:52:13 1.9
@@ -156,13 +156,29 @@
return APR_ENOMEM;
}
- /* XXX - I don't know what the correct way to deal with host resolution
- * errors on Windows is. WSAGetLastError() seems to use a different set of
- * error numbers than APR does. The previous code didn't deal with them at
- * all. - manoj
- */
+ return status_from_res_error(WSAGetLastError());
+}
- return h_errno;
+ap_status_t status_from_res_error(int reserr)
+{
+ ap_status_t status;
+ switch(reserr) {
+ case WSAHOST_NOT_FOUND:
+ status = APR_EHOSTNOTFOUND;
+ break;
+ case WSATRY_AGAIN:
+ status = APR_EAGAIN;
+ break;
+ case WSANO_RECOVERY:
+ status = APR_ENORECOVERY;
+ break;
+ case WSANO_DATA:
+ status = APR_ENODATA;
+ break;
+ default:
+ status = APR_ENORECOVERY;
+ }
+ return status;
}
1.21 +3 -6 apache-2.0/src/lib/apr/network_io/win32/sockets.c
Index: sockets.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/win32/sockets.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- sockets.c 2000/03/31 08:36:16 1.20
+++ sockets.c 2000/04/03 04:52:13 1.21
@@ -200,14 +200,11 @@
}
else {
hp = gethostbyname(hostname);
- memcpy((char *)&sock->remote_addr->sin_addr, hp->h_addr_list[0], hp->h_length);
- sock->addr_len = sizeof(*sock->remote_addr);
if (!hp) {
- if (h_errno == TRY_AGAIN) {
- return EAGAIN;
- }
- return h_errno;
+ return status_from_res_error(WSAGetLastError());
}
+ memcpy((char *)&sock->remote_addr->sin_addr, hp->h_addr_list[0], hp->h_length);
+ sock->addr_len = sizeof(*sock->remote_addr);
}
sock->remote_addr->sin_family = AF_INET;
1.7 +2 -0 apache-2.0/src/lib/apr/network_io/win32/networkio.h
Index: networkio.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/win32/networkio.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- networkio.h 2000/03/31 08:36:16 1.6
+++ networkio.h 2000/04/03 04:52:13 1.7
@@ -77,5 +77,7 @@
int numexcept;
};
+ap_status_t status_from_res_error(int);
+
#endif /* ! NETWORK_IO_H */