Mercurial > hg > release > icedtea7-forest-2.6 > jdk
changeset 9703:3e4b0d90fafd
8205330: InitialDirContext ctor sometimes throws NPE if the server has sent a disconnection
Reviewed-by: chegar, dfuchs
author | robm |
---|---|
date | Fri, 05 Oct 2018 14:10:00 -0700 |
parents | feba444e5167 |
children | d351f417e00a |
files | src/share/classes/com/sun/jndi/ldap/LdapClient.java |
diffstat | 1 files changed, 10 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/jndi/ldap/LdapClient.java Thu Feb 07 18:19:45 2019 +0000 +++ b/src/share/classes/com/sun/jndi/ldap/LdapClient.java Fri Oct 05 14:10:00 2018 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -115,8 +115,8 @@ boolean isLdapv3; // Used by LdapCtx int referenceCount = 1; // Used by LdapCtx for check for sharing - Connection conn; // Connection to server; has reader thread - // used by LdapCtx for StartTLS + final Connection conn; // Connection to server; has reader thread + // used by LdapCtx for StartTLS final private PoolCallback pcb; final private boolean pooled; @@ -433,19 +433,17 @@ (new Throwable()).printStackTrace(); } - if (referenceCount <= 0 && conn != null) { + if (referenceCount <= 0) { if (debug > 0) System.err.println("LdapClient: closed connection " + this); if (!pooled) { // Not being pooled; continue with closing conn.cleanup(reqCtls, false); - conn = null; } else { // Pooled // Is this a real close or a request to return conn to pool if (hardClose) { conn.cleanup(reqCtls, false); - conn = null; pcb.removePooledConnection(this); } else { pcb.releasePooledConnection(this); @@ -462,15 +460,11 @@ System.err.println("LdapClient: forceClose() of " + this); } - if (conn != null) { - if (debug > 0) System.err.println( - "LdapClient: forced close of connection " + this); - conn.cleanup(null, false); - conn = null; - - if (cleanPool) { - pcb.removePooledConnection(this); - } + if (debug > 0) System.err.println( + "LdapClient: forced close of connection " + this); + conn.cleanup(null, false); + if (cleanPool) { + pcb.removePooledConnection(this); } } @@ -569,7 +563,7 @@ * Abandon the search operation and remove it from the message queue. */ void clearSearchReply(LdapResult res, Control[] ctls) { - if (res != null && conn != null) { + if (res != null) { // Only send an LDAP abandon operation when clearing the search // reply from a one-level or subtree search.