ldap_create( LDAP **ldp )
{
LDAP *ld;
+ struct ldapoptions *gopts;
*ldp = NULL;
- if( ldap_int_global_options.ldo_valid != LDAP_INITIALIZED ) {
- ldap_int_initialize(NULL);
+ /* Get pointer to global option structure */
+ if ( (gopts = LDAP_INT_GLOBAL_OPT()) == NULL) {
+ return LDAP_NO_MEMORY;
+ }
+
+ /* Initialize the global options, if not already done. */
+ if( gopts->ldo_valid != LDAP_INITIALIZED ) {
+ ldap_int_initialize(gopts, NULL);
}
Debug( LDAP_DEBUG_TRACE, "ldap_init\n", 0, 0, 0 );
}
/* copy the global options */
- memcpy(&ld->ld_options, &ldap_int_global_options,
- sizeof(ld->ld_options));
+ memcpy(&ld->ld_options, gopts, sizeof(ld->ld_options));
ld->ld_valid = LDAP_VALID_SESSION;
ld->ld_options.ldo_sctrls = NULL;
ld->ld_options.ldo_cctrls = NULL;
- ld->ld_options.ldo_defludp =
- ldap_url_duplist(ldap_int_global_options.ldo_defludp);
+ ld->ld_options.ldo_defludp = ldap_url_duplist(gopts->ldo_defludp);
if ( ld->ld_options.ldo_defludp == NULL ) {
LDAP_FREE( (char*)ld );
ber_sockbuf_add_io( sb, &ber_sockbuf_io_udp,
LBER_SBIOD_LEVEL_PROVIDER, NULL );
break;
-#ifdef LDAP_PF_LOCAL
- case LDAP_PROTO_LOCAL:
+ case LDAP_PROTO_IPC:
+#ifdef LDAP_PF_UNIX
+ /* only IPC mechanism supported is PF_UNIX */
rc = ldap_connect_to_path( ld, sb, srv->lud_host,
async );
if ( rc == -1 )
ber_sockbuf_add_io( sb, &ber_sockbuf_io_fd,
LBER_SBIOD_LEVEL_PROVIDER, NULL );
break;
-#endif /* LDAP_PF_LOCAL */
+#endif /* LDAP_PF_UNIX */
default:
return -1;
break;