char *sasl_host = NULL;
int sasl_ssf = 0;
#endif
+ char *host;
int port;
long addr;
port = htons( (short) srv->lud_port );
addr = 0;
- if ( srv->lud_host == NULL || *srv->lud_host == 0 )
+ if ( srv->lud_host == NULL || *srv->lud_host == 0 ) {
+ host = NULL;
addr = htonl( INADDR_LOOPBACK );
+ } else {
+ host = srv->lud_host;
+ }
rc = ldap_connect_to_host( ld, conn->lconn_sb, 0,
- srv->lud_host, addr, port, async );
+ host, addr, port, async );
if ( rc == -1 ) return rc;
if (ld->ld_options.ldo_tls_mode == LDAP_OPT_X_TLS_HARD ||
strcmp( srv->lud_scheme, "ldaps" ) == 0 )
{
+ LDAPConn *savedefconn = ld->ld_defconn;
+ ++conn->lconn_refcnt; /* avoid premature free */
+ ld->ld_defconn = conn;
+
rc = ldap_pvt_tls_start( ld, conn->lconn_sb,
ld->ld_options.ldo_tls_ctx );
+ ld->ld_defconn = savedefconn;
+ --conn->lconn_refcnt;
+
if (rc != LDAP_SUCCESS) {
return -1;
}