diff -ur OPENLDAP_HEAD/libraries/libldap/open.c libraries/libldap/open.c
--- OPENLDAP_HEAD/libraries/libldap/open.c	Wed Oct 18 11:53:53 2000
+++ ./libraries/libldap/open.c	Tue Nov 21 20:37:04 2000
@@ -329,8 +329,15 @@
 	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;
