wldap32: Create version 3 contexts by default.
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
diff --git a/dlls/wldap32/init.c b/dlls/wldap32/init.c
index 46a078a..6b413f8 100644
--- a/dlls/wldap32/init.c
+++ b/dlls/wldap32/init.c
@@ -206,6 +206,17 @@
WINE_DEFAULT_DEBUG_CHANNEL(wldap32);
+#ifdef HAVE_LDAP
+static LDAP *create_context( const char *url )
+{
+ LDAP *ld;
+ int version = LDAP_VERSION3;
+ if (ldap_initialize( &ld, url ) != LDAP_SUCCESS) return NULL;
+ ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION, &version );
+ return ld;
+}
+#endif
+
/***********************************************************************
* cldap_openA (WLDAP32.@)
*
@@ -276,7 +287,7 @@
url = urlify_hostnames( "cldap://", hostnameU, portnumber );
if (!url) goto exit;
- ldap_initialize( &ld, url );
+ ld = create_context( url );
exit:
strfreeU( hostnameU );
@@ -385,7 +396,7 @@
url = urlify_hostnames( "ldap://", hostnameU, portnumber );
if (!url) goto exit;
- ldap_initialize( &ld, url );
+ ld = create_context( url );
exit:
strfreeU( hostnameU );
@@ -467,7 +478,7 @@
url = urlify_hostnames( "ldap://", hostnameU, portnumber );
if (!url) goto exit;
- ldap_initialize( &ld, url );
+ ld = create_context( url );
exit:
strfreeU( hostnameU );
diff --git a/dlls/wldap32/tests/parse.c b/dlls/wldap32/tests/parse.c
index 5c84929..c4c97e1 100644
--- a/dlls/wldap32/tests/parse.c
+++ b/dlls/wldap32/tests/parse.c
@@ -123,6 +123,15 @@
ok( !ret, "ldap_set_optionW failed 0x%08x\n", ret );
}
+static void test_ldap_get_optionW( LDAP *ld )
+{
+ ULONG ret, version;
+
+ ret = ldap_get_optionW( ld, LDAP_OPT_PROTOCOL_VERSION, &version );
+ ok( !ret, "ldap_get_optionW failed 0x%08x\n", ret );
+ ok( version == LDAP_VERSION3, "got %u\n", version );
+}
+
START_TEST (parse)
{
LDAP *ld;
@@ -132,6 +141,7 @@
test_ldap_parse_sort_control( ld );
test_ldap_search_extW( ld );
+ test_ldap_get_optionW( ld );
test_ldap_set_optionW( ld );
ldap_unbind( ld );
}