diff --git a/core/src/main/java/org/acegisecurity/ldap/LdapTemplate.java b/core/src/main/java/org/acegisecurity/ldap/LdapTemplate.java index ff87346f08..007e07a469 100644 --- a/core/src/main/java/org/acegisecurity/ldap/LdapTemplate.java +++ b/core/src/main/java/org/acegisecurity/ldap/LdapTemplate.java @@ -27,6 +27,7 @@ import java.util.Set; import javax.naming.NameNotFoundException; import javax.naming.NamingEnumeration; import javax.naming.NamingException; +import javax.naming.Context; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; import javax.naming.directory.DirContext; @@ -135,7 +136,11 @@ public class LdapTemplate { public Object doInDirContext(DirContext ctx) throws NamingException { try { - ctx.lookup(LdapUtils.getRelativeName(dn, ctx)); + Object obj = ctx.lookup(LdapUtils.getRelativeName(dn, ctx)); + if (obj instanceof Context) { + LdapUtils.closeContext((Context) obj); + } + } catch (NameNotFoundException nnfe) { return Boolean.FALSE; }