diff --git a/include/ac/socket.h b/include/ac/socket.h
index 3fb1363ccbc946e7ed392803282ec8483466a128..20e5008fb9219791e70dfe1c84b5dd00c7e841e8 100644
--- a/include/ac/socket.h
+++ b/include/ac/socket.h
@@ -221,6 +221,12 @@ LDAP_LUTIL_F( int ) getpeereid( int s, uid_t *, gid_t * );
 # ifndef INFTIM
 #  define INFTIM (-1)
 # endif
+#undef POLL_OTHER
+#define POLL_OTHER   (POLLERR|POLLHUP)
+#undef POLL_READ
+#define POLL_READ    (POLLIN|POLLPRI|POLL_OTHER)
+#undef POLL_WRITE              
+#define POLL_WRITE   (POLLOUT|POLL_OTHER)
 #endif
 
 #endif /* _AC_SOCKET_H_ */
diff --git a/libraries/libldap/os-ip.c b/libraries/libldap/os-ip.c
index 441ded639f4261c29e9adb9429399397e445db5e..40fbca327b54a7825856caf855eb816b0ab012e9 100644
--- a/libraries/libldap/os-ip.c
+++ b/libraries/libldap/os-ip.c
@@ -260,7 +260,7 @@ ldap_pvt_connect(LDAP *ld, ber_socket_t s,
 		if( opt_tv != NULL ) timeout = TV2MILLISEC( &tv );
 
 		fd.fd = s;
-		fd.events = POLLWRITE;
+		fd.events = POLL_WRITE;
 
 		do {
 			fd.revents = 0;
@@ -270,7 +270,7 @@ ldap_pvt_connect(LDAP *ld, ber_socket_t s,
 
 		if( rc == AC_SOCKET_ERROR ) return rc;
 
-		if( fd.revents & POLLWRITE ) {
+		if( fd.revents & POLL_WRITE ) {
 			if ( ldap_pvt_is_socket_ready(ld, s) == -1 ) return -1;
 			if ( ldap_pvt_ndelay_off(ld, s) == -1 ) return -1;
 			return ( 0 );
@@ -638,12 +638,6 @@ struct selectinfo {
 	/* for UNIX poll(2) */
 	int si_maxfd;
 	struct pollfd si_fds[FD_SETSIZE];
-#undef POLLOTHER
-#define POLLOTHER	(POLLERR|POLLHUP)
-#undef POLLREAD
-#define POLLREAD	(POLLIN|POLLPRI|POLLOTHER)
-#undef POLLWRITE
-#define POLLWRITE	(POLLOUT|POLLOTHER)
 #else
 	/* for UNIX select(2) */
 	fd_set	si_readfds;
@@ -670,7 +664,7 @@ ldap_mark_select_write( LDAP *ld, Sockbuf *sb )
 		int i;
 		for(i=0; i < sip->si_maxfd; i++) {
 			if( sip->si_fds[i].fd == sd ) {
-				sip->si_fds[i].events |= POLLWRITE;
+				sip->si_fds[i].events |= POLL_WRITE;
 				return;
 			}
 			if( empty==-1 && sip->si_fds[i].fd == -1 ) {
@@ -687,7 +681,7 @@ ldap_mark_select_write( LDAP *ld, Sockbuf *sb )
 		}
 
 		sip->si_fds[empty].fd = sd;
-		sip->si_fds[empty].events = POLLWRITE;
+		sip->si_fds[empty].events = POLL_WRITE;
 	}
 #else
 	/* for UNIX select(2) */
@@ -715,7 +709,7 @@ ldap_mark_select_read( LDAP *ld, Sockbuf *sb )
 		int i;
 		for(i=0; i < sip->si_maxfd; i++) {
 			if( sip->si_fds[i].fd == sd ) {
-				sip->si_fds[i].events |= POLLREAD;
+				sip->si_fds[i].events |= POLL_READ;
 				return;
 			}
 			if( empty==-1 && sip->si_fds[i].fd == -1 ) {
@@ -732,7 +726,7 @@ ldap_mark_select_read( LDAP *ld, Sockbuf *sb )
 		}
 
 		sip->si_fds[empty].fd = sd;
-		sip->si_fds[empty].events = POLLREAD;
+		sip->si_fds[empty].events = POLL_READ;
 	}
 #else
 	/* for UNIX select(2) */
@@ -787,7 +781,7 @@ ldap_is_write_ready( LDAP *ld, Sockbuf *sb )
 		int i;
 		for(i=0; i < sip->si_maxfd; i++) {
 			if( sip->si_fds[i].fd == sd ) {
-				return sip->si_fds[i].revents & POLLWRITE;
+				return sip->si_fds[i].revents & POLL_WRITE;
 			}
 		}
 
@@ -816,7 +810,7 @@ ldap_is_read_ready( LDAP *ld, Sockbuf *sb )
 		int i;
 		for(i=0; i < sip->si_maxfd; i++) {
 			if( sip->si_fds[i].fd == sd ) {
-				return sip->si_fds[i].revents & POLLREAD;
+				return sip->si_fds[i].revents & POLL_READ;
 			}
 		}
 
diff --git a/libraries/libldap/os-local.c b/libraries/libldap/os-local.c
index ee047dc4c29578c824b7342fdf9c40546c26d52d..0c3245412facc2ea3ca1c6317ab7abf1c23fd962 100644
--- a/libraries/libldap/os-local.c
+++ b/libraries/libldap/os-local.c
@@ -223,7 +223,7 @@ sendcred:
 		if( opt_tv != NULL ) timeout = TV2MILLISEC( &tv );
 
 		fd.fd = s;
-		fd.events = POLLOUT;
+		fd.events = POLL_WRITE;
 
 		do {
 			fd.revents = 0;
@@ -233,7 +233,7 @@ sendcred:
 
 		if( rc == AC_SOCKET_ERROR ) return rc;
 
-		if( fd.revents & POLLOUT ) {
+		if( fd.revents & POLL_WRITE ) {
 			if ( ldap_pvt_is_socket_ready(ld, s) == -1 ) return -1;
 			if ( ldap_pvt_ndelay_off(ld, s) == -1 ) return -1;
 #ifdef DO_SENDMSG