- Debug( LDAP_DEBUG_TRACE, "ldap_connect_to_host: %s:%d\n",
- ( host == NULL ) ? "(by address)" : host, (int) ntohs( (short) port ), 0 );
-
- connected = use_hp = 0;
-
- if ( host != NULL ) {
- address = inet_addr( host );
- /* This was just a test for -1 until OSF1 let inet_addr return
- unsigned int, which is narrower than 'unsigned long address' */
- if ( address == 0xffffffff || address == (unsigned long) -1 ) {
- if ( ( ldap_pvt_gethostbyname_a( host, &he_buf, &ha_buf,
- &hp, &local_h_errno) < 0) || (hp==NULL))
- {
-#ifdef HAVE_WINSOCK
- errno = WSAGetLastError();
+static int
+ldap_pvt_ndelay_off(LDAP *ld, int fd)
+{
+ osip_debug(ld, "ldap_ndelay_off: %d\n",fd,0,0);
+ return ber_pvt_socket_set_nonblock( fd, 0 );
+}
+
+static ber_socket_t
+ldap_pvt_socket(LDAP *ld)
+{
+ ber_socket_t s = socket(AF_INET, SOCK_STREAM, 0);
+ osip_debug(ld, "ldap_new_socket: %d\n",s,0,0);
+ return ( s );
+}
+
+static int
+ldap_pvt_close_socket(LDAP *ld, int s)
+{
+ osip_debug(ld, "ldap_close_socket: %d\n",s,0,0);
+ return tcp_close(s);
+}
+
+static int
+ldap_pvt_prepare_socket(LDAP *ld, int fd)
+{
+ osip_debug(ld, "ldap_prepare_socket: %d\n",fd,0,0);
+
+#ifdef TCP_NODELAY
+{
+ int dummy = 1;
+ if ( setsockopt( fd, IPPROTO_TCP, TCP_NODELAY, (char*) &dummy, sizeof(dummy) ) == -1 )
+ return -1;
+}
+#endif
+ 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.
+ */
+static int
+ldap_pvt_is_socket_ready(LDAP *ld, int s)
+{
+ osip_debug(ld, "ldap_is_sock_ready: %d\n",s,0,0);
+
+#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 ) {
+ return -1;
+ }
+ if ( so_errno ) {
+ ldap_pvt_set_errno(so_errno);
+ TRACE;
+ return -1;
+ }
+ return 0;
+}