From 3820b358706bd41bc8889087b1af6a67204f3b73 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Wed, 4 Aug 1999 18:32:38 +0000 Subject: [PATCH] Use -llber set_nonblock implementation. Use ldap_int_tblsize instead of s+1 in select. Need to eliminate all to read(2). --- libraries/libldap/digest.c | 4 +++ libraries/libldap/init.c | 10 +++--- libraries/libldap/os-ip.c | 67 +++++++++++--------------------------- 3 files changed, 28 insertions(+), 53 deletions(-) diff --git a/libraries/libldap/digest.c b/libraries/libldap/digest.c index 96035612a2..5cb3d62421 100644 --- a/libraries/libldap/digest.c +++ b/libraries/libldap/digest.c @@ -8,6 +8,8 @@ #include "portable.h" +#ifdef DIGEST_MD5 + #include #include #include @@ -375,3 +377,5 @@ parse_value_list( *valuesp = values; return rc; } + +#endif \ No newline at end of file diff --git a/libraries/libldap/init.c b/libraries/libldap/init.c index c49b372ae9..8546a348e0 100644 --- a/libraries/libldap/init.c +++ b/libraries/libldap/init.c @@ -60,11 +60,11 @@ static const struct ol_attribute { {ATTR_INT, "PORT", NULL, offsetof(struct ldapoptions, ldo_defport)}, {ATTR_BOOL, "REFERRALS", NULL, LDAP_BOOL_REFERRALS}, - {ATTR_BOOL, "RESTART", NULL, LDAP_BOOL_RESTART}, - {ATTR_BOOL, "DNS", NULL, LDAP_BOOL_DNS}, - {ATTR_BOOL, "TLS", NULL, LDAP_OPT_X_TLS}, - {ATTR_TLS, "TLS_CERT", NULL, LDAP_OPT_X_TLS_CERTFILE}, - {ATTR_TLS, "TLS_KEY", NULL, LDAP_OPT_X_TLS_KEYFILE}, + {ATTR_BOOL, "RESTART", NULL, LDAP_BOOL_RESTART}, + {ATTR_BOOL, "DNS", NULL, LDAP_BOOL_DNS}, + {ATTR_BOOL, "TLS", NULL, LDAP_OPT_X_TLS}, + {ATTR_TLS, "TLS_CERT", NULL, LDAP_OPT_X_TLS_CERTFILE}, + {ATTR_TLS, "TLS_KEY", NULL, LDAP_OPT_X_TLS_KEYFILE}, {ATTR_TLS, "TLS_CACERT", NULL, LDAP_OPT_X_TLS_CACERTFILE}, {ATTR_TLS, "TLS_CACERTDIR",NULL, LDAP_OPT_X_TLS_CACERTDIR}, {ATTR_TLS, "TLS_REQCERT", NULL, LDAP_OPT_X_TLS_REQUIRE_CERT}, diff --git a/libraries/libldap/os-ip.c b/libraries/libldap/os-ip.c index 6bb3ac4821..cf56ae8a64 100644 --- a/libraries/libldap/os-ip.c +++ b/libraries/libldap/os-ip.c @@ -25,19 +25,6 @@ #include #endif /* HAVE_IO_H */ -#if defined( HAVE_FCNTL_H ) -#include -#ifndef O_NONBLOCK -#define O_NONBLOCK O_NDELAY -#endif -#endif /* HAVE_FCNTL_H */ - -#if defined( HAVE_SYS_FILIO_H ) -#include -#elif defined( HAVE_SYS_IOCTL_H ) -#include -#endif - #include "ldap-int.h" int ldap_int_tblsize = 0; @@ -96,31 +83,14 @@ static int ldap_pvt_ndelay_on(LDAP *ld, int fd) { osip_debug(ld, "ldap_ndelay_on: %d\n",fd,0,0); -#ifdef notyet -/* #if defined( HAVE_FCNTL_H ) */ - return fcntl(fd,F_SETFL,fcntl(fd,F_GETFL,0) | O_NONBLOCK); -#else -{ - ioctl_t status = 1; - return ioctl( fd, FIONBIO, &status ); -} -#endif - return 0; + return ber_pvt_socket_set_nonblock( fd, 1 ); } static int ldap_pvt_ndelay_off(LDAP *ld, int fd) { osip_debug(ld, "ldap_ndelay_off: %d\n",fd,0,0); -#ifdef notyet -/* #if defined( HAVE_FCNTL_H ) */ - return fcntl(fd,F_SETFL,fcntl(fd,F_GETFL,0) & ~O_NONBLOCK); -#else -{ - ioctl_t status = 0; - return ioctl( fd, FIONBIO, &status ); -} -#endif + return ber_pvt_socket_set_nonblock( fd, 0 ); } static ber_socket_t @@ -153,6 +123,15 @@ ldap_pvt_prepare_socket(LDAP *ld, int fd) return 0; } +#undef TRACE +#define TRACE do { \ + osip_debug(ld, \ + "ldap_is_socket_ready: errror on socket %d: errno: %d (%s)\n", \ + s, \ + errno, \ + strerror(errno) ); \ +} while( 0 ) + /* * check the socket for errors after select returned. */ @@ -161,22 +140,13 @@ ldap_pvt_is_socket_ready(LDAP *ld, int s) { osip_debug(ld, "ldap_is_sock_ready: %d\n",s,0,0); -#define TRACE \ -{ \ - osip_debug(ld, \ - "ldap_is_socket_ready: errror on socket %d: errno: %d (%s)\n", \ - s, \ - errno, \ - strerror(errno) ); \ -} - -#ifdef notyet -/* #ifdef SO_ERROR */ +#if defined( notyet ) /* && defined( SO_ERROR ) */ { int so_errno; int dummy = sizeof(so_errno); - if ( getsockopt(s,SOL_SOCKET,SO_ERROR,&so_errno,&dummy) == -1 ) + if ( getsockopt( s, SOL_SOCKET, SO_ERROR, &so_errno, &dummy ) == -1 ) { return -1; + } if ( so_errno ) { ldap_pvt_set_errno(so_errno); TRACE; @@ -190,20 +160,21 @@ ldap_pvt_is_socket_ready(LDAP *ld, int s) struct sockaddr_in sin; char ch; int dummy = sizeof(sin); - if ( getpeername(s, (struct sockaddr *) &sin, &dummy) == -1 ) { + if ( getpeername( s, (struct sockaddr *) &sin, &dummy ) == -1 ) { + /* XXX: needs to be replace with ber_stream_read() */ read(s, &ch, 1); #ifdef HAVE_WINSOCK ldap_pvt_set_errno( WSAGetLastError() ); #endif TRACE; return -1; - } + } return 0; } #endif return -1; -#undef TRACE } +#undef TRACE static int ldap_pvt_connect(LDAP *ld, ber_socket_t s, struct sockaddr_in *sin, int async) @@ -244,7 +215,7 @@ ldap_pvt_connect(LDAP *ld, ber_socket_t s, struct sockaddr_in *sin, int async) FD_ZERO(&wfds); FD_SET(s, &wfds ); - if ( select(s + 1, z, &wfds, z, opt_tv ? &tv : NULL) == -1) + if ( select(ldap_int_tblsize, z, &wfds, z, opt_tv ? &tv : NULL) == -1) return ( -1 ); if ( FD_ISSET(s, &wfds) ) { -- 2.39.5