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 05:35:01 UTC
cvs commit: apache-2.0/src/lib/apr/include apr_errno.h
trawick 00/04/02 20:35:00
Modified: src/lib/apr/network_io/unix sockopt.c sockets.c networkio.h
src/lib/apr/include apr_errno.h
Log:
Don't use the values of resolver error codes for the
corresponding APR error codes. On Unix, return the proper
APR error code after a resolver error.
Revision Changes Path
1.18 +28 -2 apache-2.0/src/lib/apr/network_io/unix/sockopt.c
Index: sockopt.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/unix/sockopt.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- sockopt.c 2000/03/31 08:36:14 1.17
+++ sockopt.c 2000/04/03 03:34:59 1.18
@@ -207,8 +207,34 @@
return APR_ENOMEM;
}
- /* XXX - Is this threadsafe? */
- return h_errno;
+ /* XXX - Is referencing h_errno threadsafe? */
+ return status_from_res_error(h_errno);
}
+ap_status_t status_from_res_error(int herr)
+{
+ ap_status_t status;
+ switch(herr) {
+ case HOST_NOT_FOUND:
+ status = APR_EHOSTNOTFOUND;
+ break;
+ case TRY_AGAIN:
+ status = APR_EAGAIN;
+ break;
+ case NO_RECOVERY:
+ status = APR_ENORECOVERY;
+ break;
+ case NO_ADDRESS:
+ status = APR_ENOADDRESS;
+ break;
+#if defined(NO_DATA) && (NO_ADDRESS != NO_DATA)
+ case NO_DATA:
+#endif
+ status = APR_ENODATA;
+ break;
+ default:
+ status = APR_ENORECOVERY;
+ }
+ return status;
+}
1.32 +1 -4 apache-2.0/src/lib/apr/network_io/unix/sockets.c
Index: sockets.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/unix/sockets.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- sockets.c 2000/03/31 08:36:14 1.31
+++ sockets.c 2000/04/03 03:34:59 1.32
@@ -231,10 +231,7 @@
return APR_ENOTSOCK;
}
if (!hp) {
- if (h_errno == TRY_AGAIN) {
- return EAGAIN;
- }
- return h_errno;
+ return status_from_res_error(h_errno);
}
memcpy((char *)&sock->remote_addr->sin_addr, hp->h_addr_list[0], hp->h_length);
1.18 +2 -0 apache-2.0/src/lib/apr/network_io/unix/networkio.h
Index: networkio.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/unix/networkio.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- networkio.h 2000/03/31 08:36:14 1.17
+++ networkio.h 2000/04/03 03:34:59 1.18
@@ -136,5 +136,7 @@
ap_int16_t get_event(ap_int16_t);
ap_int16_t get_revent(ap_int16_t);
+ap_status_t status_from_res_error(int);
+
#endif /* ! NETWORK_IO_H */
1.17 +7 -16 apache-2.0/src/lib/apr/include/apr_errno.h
Index: apr_errno.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/include/apr_errno.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- apr_errno.h 2000/03/31 08:35:55 1.16
+++ apr_errno.h 2000/04/03 03:35:00 1.17
@@ -366,29 +366,20 @@
#define APR_EOPNOTSUPP (APR_OS_START_SYSERR + 35)
#endif
-#ifdef HOST_NOT_FOUND
-#define APR_EHOSTNOTFOUND HOST_NOT_FOUND
-#else
+/* never use h_errno values as-is because doing so makes them
+ * indistinguishable from errno values
+ * APR_EHOSTNOTFOUND corresponds to HOST_NOT_FOUND
+ * APR_ENODATA corresponds to NO_DATA
+ * APR_ENOADDRESS corresponds to NO_ADDRESS
+ * APR_ENORECOVERY corresponds to NO_RECOVERY
+ */
#define APR_EHOSTNOTFOUND (APR_OS_START_SYSERR + 36)
-#endif
-#ifdef NO_DATA
-#define APR_ENODATA NO_DATA
-#else
#define APR_ENODATA (APR_OS_START_SYSERR + 37)
-#endif
-#ifdef NO_ADDRESS
-#define APR_ENOADDRESS NO_ADDRESS
-#else
#define APR_ENOADDRESS (APR_OS_START_SYSERR + 38)
-#endif
-#ifdef NO_RECOVERY
-#define APR_ENORECOVERY NO_RECOVERY
-#else
#define APR_ENORECOVERY (APR_OS_START_SYSERR + 39)
-#endif
#ifdef EISCONN
#define APR_EISCONN EISCONN