You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pl...@apache.org on 2016/02/25 07:29:21 UTC
[3/3] directory-kerby git commit: DIRKRB-536 KrbClient leaks sockets.
Contributed by Alexander Haskell.
DIRKRB-536 KrbClient leaks sockets. Contributed by Alexander Haskell.
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/bbddb6f8
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/bbddb6f8
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/bbddb6f8
Branch: refs/heads/trunk
Commit: bbddb6f87a877dee7ff77be1e982f6616e1aec4d
Parents: a020b11
Author: plusplusjiajia <ji...@intel.com>
Authored: Thu Feb 25 14:36:50 2016 +0800
Committer: plusplusjiajia <ji...@intel.com>
Committed: Thu Feb 25 14:36:50 2016 +0800
----------------------------------------------------------------------
.../client/impl/DefaultInternalKrbClient.java | 24 ++++++++++++--------
1 file changed, 15 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bbddb6f8/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
index e2c18d3..df4ed10 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
@@ -23,6 +23,7 @@ import org.apache.kerby.kerberos.kerb.KrbException;
import org.apache.kerby.kerberos.kerb.client.ClientUtil;
import org.apache.kerby.kerberos.kerb.client.KrbSetting;
import org.apache.kerby.kerberos.kerb.client.request.AsRequest;
+import org.apache.kerby.kerberos.kerb.client.request.KdcRequest;
import org.apache.kerby.kerberos.kerb.client.request.TgsRequest;
import org.apache.kerby.kerberos.kerb.transport.KrbNetwork;
import org.apache.kerby.kerberos.kerb.transport.KrbTransport;
@@ -53,14 +54,23 @@ public class DefaultInternalKrbClient extends AbstractInternalKrbClient {
this.krbHandler = new DefaultKrbHandler();
krbHandler.init(getContext());
+ }
- TransportPair tpair = ClientUtil.getTransportPair(getSetting());
- KrbNetwork network = new KrbNetwork();
- network.setSocketTimeout(getSetting().getTimeout());
+ private void doRequest(KdcRequest request) throws KrbException {
try {
+ TransportPair tpair = ClientUtil.getTransportPair(getSetting());
+ KrbNetwork network = new KrbNetwork();
+
+ network.setSocketTimeout(getSetting().getTimeout());
+
transport = network.connect(tpair);
+
+ request.setSessionData(transport);
+ krbHandler.handleRequest(request);
} catch (IOException e) {
throw new KrbException("Failed to create transport", e);
+ } finally {
+ transport.release();
}
}
@@ -69,9 +79,7 @@ public class DefaultInternalKrbClient extends AbstractInternalKrbClient {
*/
@Override
protected TgtTicket doRequestTgt(AsRequest tgtTktReq) throws KrbException {
- tgtTktReq.setSessionData(transport);
-
- krbHandler.handleRequest(tgtTktReq);
+ doRequest(tgtTktReq);
return tgtTktReq.getTicket();
}
@@ -81,9 +89,7 @@ public class DefaultInternalKrbClient extends AbstractInternalKrbClient {
*/
@Override
protected SgtTicket doRequestSgt(TgsRequest ticketReq) throws KrbException {
- ticketReq.setSessionData(transport);
-
- krbHandler.handleRequest(ticketReq);
+ doRequest(ticketReq);
return ticketReq.getSgt();
}