You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by dr...@apache.org on 2015/07/02 00:23:48 UTC
[2/2] directory-kerby git commit: Network transport related
improvements, addressing DIRKRB-313, 314, and 315
Network transport related improvements, addressing DIRKRB-313, 314, and 315
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/bb6cce19
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/bb6cce19
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/bb6cce19
Branch: refs/heads/master
Commit: bb6cce191204a7d7acdc95aa37ef0e5877ece5fc
Parents: 27cda2b
Author: drankye <ka...@intel.com>
Authored: Thu Jul 2 06:23:23 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Thu Jul 2 06:23:23 2015 +0800
----------------------------------------------------------------------
.../kerby/kerberos/kerb/client/ClientUtil.java | 26 +++++++++++++++
.../kerby/kerberos/kerb/client/KrbClient.java | 9 ++++++
.../kerberos/kerb/client/KrbConfigKey.java | 4 +--
.../kerby/kerberos/kerb/client/KrbSetting.java | 33 ++++++++++++++++++++
.../client/impl/DefaultInternalKrbClient.java | 16 +++-------
.../kerb/client/KrbClientSettingTest.java | 4 ++-
.../kerberos/kerb/transport/KdcNetwork.java | 19 +++++------
.../kerberos/kerb/transport/KrbNetwork.java | 20 +++++-------
.../kerberos/kerb/transport/TransportPair.java | 30 ++++++++++++++++++
.../kerby/kerberos/kerb/server/KdcSetting.java | 33 ++++++++++++++++++++
.../kerby/kerberos/kerb/server/KdcUtil.java | 26 +++++++++++++++
.../impl/DefaultInternalKdcServerImpl.java | 14 +++------
12 files changed, 186 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/ClientUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/ClientUtil.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/ClientUtil.java
index c6244f5..cface81 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/ClientUtil.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/ClientUtil.java
@@ -20,9 +20,11 @@
package org.apache.kerby.kerberos.kerb.client;
import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.transport.TransportPair;
import java.io.File;
import java.io.IOException;
+import java.net.InetSocketAddress;
import java.util.Map;
public final class ClientUtil {
@@ -93,4 +95,28 @@ public final class ClientUtil {
return krbConfig;
}
+
+ /**
+ * Get KDC network transport addresses according to krb client setting.
+ * @param setting
+ * @return UDP and TCP addresses pair
+ * @throws KrbException
+ */
+ public static TransportPair getTransportPair(
+ KrbSetting setting) throws KrbException {
+ TransportPair result = new TransportPair();
+
+ int tcpPort = setting.checkGetKdcTcpPort();
+ if (tcpPort > 0) {
+ result.tcpAddress = new InetSocketAddress(
+ setting.getKdcHost(), tcpPort);
+ }
+ int udpPort = setting.checkGetKdcUdpPort();
+ if (udpPort > 0) {
+ result.udpAddress = new InetSocketAddress(
+ setting.getKdcHost(), udpPort);
+ }
+
+ return result;
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
index bcd55d2..9905a50 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
@@ -93,7 +93,11 @@ public class KrbClient {
* @param kdcTcpPort
*/
public void setKdcTcpPort(int kdcTcpPort) {
+ if (kdcTcpPort < 1) {
+ throw new IllegalArgumentException("Invalid port");
+ }
commonOptions.add(KrbOption.KDC_TCP_PORT, kdcTcpPort);
+ setAllowTcp(true);
}
/**
@@ -111,12 +115,17 @@ public class KrbClient {
public void setAllowTcp(boolean allowTcp) {
commonOptions.add(KrbOption.ALLOW_TCP, allowTcp);
}
+
/**
* Set KDC udp port. Only makes sense when allowUdp is set.
* @param kdcUdpPort
*/
public void setKdcUdpPort(int kdcUdpPort) {
+ if (kdcUdpPort < 1) {
+ throw new IllegalArgumentException("Invalid port");
+ }
commonOptions.add(KrbOption.KDC_UDP_PORT, kdcUdpPort);
+ setAllowUdp(true);
}
/**
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java
index 75478a7..00c5afa 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java
@@ -25,8 +25,8 @@ public enum KrbConfigKey implements SectionConfigKey {
KRB_DEBUG(true),
KDC_HOST("localhost"),
KDC_PORT(),
- KDC_ALLOW_UDP(true),
- KDC_ALLOW_TCP(true),
+ KDC_ALLOW_UDP(false),
+ KDC_ALLOW_TCP(false),
KDC_UDP_PORT(),
KDC_TCP_PORT(),
KDC_DOMAIN("example.com"),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbSetting.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbSetting.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbSetting.java
index da99df0..f1a51b2 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbSetting.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbSetting.java
@@ -20,6 +20,7 @@
package org.apache.kerby.kerberos.kerb.client;
import org.apache.kerby.KOptions;
+import org.apache.kerby.kerberos.kerb.KrbException;
/**
* Krb client setting that combines common options and client config.
@@ -58,6 +59,38 @@ public class KrbSetting {
return kdcHost;
}
+ /**
+ * Check kdc tcp setting and see if any bad.
+ * @return valid tcp port or -1 if not allowTcp
+ * @throws KrbException
+ */
+ public int checkGetKdcTcpPort() throws KrbException {
+ if (allowTcp()) {
+ int kdcPort = getKdcTcpPort();
+ if (kdcPort < 1) {
+ throw new KrbException("KDC tcp port isn't set or configured");
+ }
+ return kdcPort;
+ }
+ return -1;
+ }
+
+ /**
+ * Check kdc udp setting and see if any bad.
+ * @return valid udp port or -1 if not allowUdp
+ * @throws KrbException
+ */
+ public int checkGetKdcUdpPort() throws KrbException {
+ if (allowUdp()) {
+ int kdcPort = getKdcUdpPort();
+ if (kdcPort < 1) {
+ throw new KrbException("KDC udp port isn't set or configured");
+ }
+ return kdcPort;
+ }
+ return -1;
+ }
+
public int getKdcTcpPort() {
int tcpPort = commonOptions.getIntegerOption(KrbOption.KDC_TCP_PORT);
if (tcpPort > 0) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/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 93cc890..2570510 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
@@ -20,6 +20,7 @@
package org.apache.kerby.kerberos.kerb.client.impl;
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.TgsRequest;
@@ -27,9 +28,9 @@ import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
import org.apache.kerby.kerberos.kerb.transport.KrbNetwork;
import org.apache.kerby.kerberos.kerb.transport.KrbTransport;
+import org.apache.kerby.kerberos.kerb.transport.TransportPair;
import java.io.IOException;
-import java.net.InetSocketAddress;
/**
* A default krb client implementation.
@@ -50,20 +51,11 @@ public class DefaultInternalKrbClient extends AbstractInternalKrbClient {
this.krbHandler = new DefaultKrbHandler();
krbHandler.init(getContext());
- InetSocketAddress tcpAddress = null, udpAddress = null;
- if (getSetting().allowTcp()) {
- tcpAddress = new InetSocketAddress(getSetting().getKdcHost(),
- getSetting().getKdcTcpPort());
- }
- if (getSetting().allowUdp()) {
- udpAddress = new InetSocketAddress(getSetting().getKdcHost(),
- getSetting().getKdcUdpPort());
- }
-
+ TransportPair tpair = ClientUtil.getTransportPair(getSetting());
KrbNetwork network = new KrbNetwork();
network.setSocketTimeout(getSetting().getTimeout());
try {
- transport = network.connect(tcpAddress, udpAddress);
+ transport = network.connect(tpair);
} catch (IOException e) {
throw new KrbException("Failed to create transport", e);
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/KrbClientSettingTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/KrbClientSettingTest.java b/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/KrbClientSettingTest.java
index 6ccf8bd..e90d3bb 100644
--- a/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/KrbClientSettingTest.java
+++ b/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/KrbClientSettingTest.java
@@ -32,12 +32,14 @@ public class KrbClientSettingTest {
krbClient.setKdcHost("localhost");
krbClient.setKdcRealm("TEST2.COM");
- krbClient.setAllowUdp(false);
krbClient.setKdcTcpPort(12345);
KrbSetting krbSetting = krbClient.getSetting();
assertThat(krbSetting.getKdcHost()).isEqualTo("localhost");
+ assertThat(krbSetting.allowTcp()).isEqualTo(true);
assertThat(krbSetting.getKdcTcpPort()).isEqualTo(12345);
+ assertThat(krbSetting.allowUdp()).isEqualTo(false);
+ assertThat(krbSetting.getKdcUdpPort()).isEqualTo(-1);
assertThat(krbSetting.getKdcRealm()).isEqualTo("TEST2.COM");
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KdcNetwork.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KdcNetwork.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KdcNetwork.java
index 57dea73..661e1e5 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KdcNetwork.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KdcNetwork.java
@@ -37,8 +37,7 @@ public abstract class KdcNetwork {
protected final static int MAX_MESSAGE_SIZE = 65507;
private final static int KDC_TCP_TRANSPORT_TIMEOUT = 3 * 1000;
private final static int KDC_TCP_SERVER_TIMEOUT = 100;
- private InetSocketAddress tcpAddress;
- private InetSocketAddress udpAddress;
+ private TransportPair tpair;
private boolean isStopped;
private ServerSocket tcpServer;
private DatagramChannel udpServer;
@@ -50,19 +49,17 @@ public abstract class KdcNetwork {
isStopped = false;
}
- public void listen(InetSocketAddress tcpAddress,
- InetSocketAddress udpAddress) throws IOException {
- this.tcpAddress = tcpAddress;
- this.udpAddress = udpAddress;
+ public void listen(TransportPair tpair) throws IOException {
+ this.tpair = tpair;
tcpServer = new ServerSocket();
tcpServer.setSoTimeout(KDC_TCP_SERVER_TIMEOUT);
- tcpServer.bind(tcpAddress);
+ tcpServer.bind(tpair.tcpAddress);
- if (udpAddress != null) {
+ if (tpair.udpAddress != null) {
udpServer = DatagramChannel.open();
udpServer.configureBlocking(false);
- udpServer.bind(udpAddress);
+ udpServer.bind(tpair.udpAddress);
recvBuffer = ByteBuffer.allocate(MAX_MESSAGE_SIZE);
}
}
@@ -84,7 +81,7 @@ public abstract class KdcNetwork {
}
}
- if (this.tcpAddress != null) {
+ if (tpair.tcpAddress != null) {
try {
checkAndAccept();
} catch (SocketTimeoutException e) { //NOPMD
@@ -94,7 +91,7 @@ public abstract class KdcNetwork {
}
}
- if (this.udpAddress != null) {
+ if (tpair.udpAddress != null) {
try {
checkUdpMessage();
} catch (SocketTimeoutException e) { //NOPMD
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbNetwork.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbNetwork.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbNetwork.java
index 1c5aded..62e0a43 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbNetwork.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbNetwork.java
@@ -20,7 +20,6 @@
package org.apache.kerby.kerberos.kerb.transport;
import java.io.IOException;
-import java.net.InetSocketAddress;
import java.net.Socket;
/**
@@ -30,28 +29,25 @@ import java.net.Socket;
public class KrbNetwork {
private int socketTimeout = 10 * 1000;
- private InetSocketAddress tcpAddress;
- private InetSocketAddress udpAddress;
+ private TransportPair tpair;
- public KrbTransport connect(InetSocketAddress tcpAddress,
- InetSocketAddress udpAddress) throws IOException {
- this.tcpAddress = tcpAddress;
- this.udpAddress = udpAddress;
+ public KrbTransport connect(TransportPair tpair) throws IOException {
+ this.tpair = tpair;
/**
* Try TCP first.
*/
KrbTransport transport = null;
- if (tcpAddress != null) {
+ if (tpair.tcpAddress != null) {
try {
transport = tcpConnect();
} catch (IOException e) {
- if (udpAddress != null) {
- transport = new KrbUdpTransport(udpAddress);
+ if (tpair.udpAddress != null) {
+ transport = new KrbUdpTransport(tpair.udpAddress);
}
}
} else {
- transport = new KrbUdpTransport(udpAddress);
+ transport = new KrbUdpTransport(tpair.udpAddress);
}
if (transport == null) {
@@ -64,7 +60,7 @@ public class KrbNetwork {
private KrbTcpTransport tcpConnect() throws IOException {
Socket socket = new Socket();
socket.setSoTimeout(socketTimeout);
- socket.connect(tcpAddress);
+ socket.connect(tpair.tcpAddress);
return new KrbTcpTransport(socket);
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/TransportPair.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/TransportPair.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/TransportPair.java
new file mode 100644
index 0000000..335a781
--- /dev/null
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/TransportPair.java
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.kerby.kerberos.kerb.transport;
+
+import java.net.InetSocketAddress;
+
+/**
+ * Transport TCP and UDP port pair
+ */
+public class TransportPair {
+ public InetSocketAddress tcpAddress;
+ public InetSocketAddress udpAddress;
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java
index 64df7cf..920c5a0 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java
@@ -20,6 +20,7 @@
package org.apache.kerby.kerberos.kerb.server;
import org.apache.kerby.KOptions;
+import org.apache.kerby.kerberos.kerb.KrbException;
/**
* KDC setting that combines startup options and kdc config.
@@ -65,6 +66,38 @@ public class KdcSetting {
return kdcHost;
}
+ /**
+ * Check kdc tcp setting and see if any bad.
+ * @return valid tcp port or -1 if not allowTcp
+ * @throws org.apache.kerby.kerberos.kerb.KrbException
+ */
+ public int checkGetKdcTcpPort() throws KrbException {
+ if (allowTcp()) {
+ int kdcPort = getKdcTcpPort();
+ if (kdcPort < 1) {
+ throw new KrbException("KDC tcp port isn't set or configured");
+ }
+ return kdcPort;
+ }
+ return -1;
+ }
+
+ /**
+ * Check kdc udp setting and see if any bad.
+ * @return valid udp port or -1 if not allowUdp
+ * @throws KrbException
+ */
+ public int checkGetKdcUdpPort() throws KrbException {
+ if (allowUdp()) {
+ int kdcPort = getKdcUdpPort();
+ if (kdcPort < 1) {
+ throw new KrbException("KDC udp port isn't set or configured");
+ }
+ return kdcPort;
+ }
+ return -1;
+ }
+
public int getKdcTcpPort() {
int tcpPort = startupOptions.getIntegerOption(KdcServerOption.KDC_TCP_PORT);
if (tcpPort < 1) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcUtil.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcUtil.java
index 4157fd1..158f05c 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcUtil.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcUtil.java
@@ -22,9 +22,11 @@ package org.apache.kerby.kerberos.kerb.server;
import org.apache.kerby.kerberos.kerb.KrbException;
import org.apache.kerby.kerberos.kerb.identity.backend.IdentityBackend;
import org.apache.kerby.kerberos.kerb.identity.backend.MemoryIdentityBackend;
+import org.apache.kerby.kerberos.kerb.transport.TransportPair;
import java.io.File;
import java.io.IOException;
+import java.net.InetSocketAddress;
/**
* KDC side utilities.
@@ -96,4 +98,28 @@ public final class KdcUtil {
backend.initialize();
return backend;
}
+
+ /**
+ * Get KDC network transport addresses according to KDC setting.
+ * @param setting
+ * @return UDP and TCP addresses pair
+ * @throws KrbException
+ */
+ public static TransportPair getTransportPair(
+ KdcSetting setting) throws KrbException {
+ TransportPair result = new TransportPair();
+
+ int tcpPort = setting.checkGetKdcTcpPort();
+ if (tcpPort > 0) {
+ result.tcpAddress = new InetSocketAddress(
+ setting.getKdcHost(), tcpPort);
+ }
+ int udpPort = setting.checkGetKdcUdpPort();
+ if (udpPort > 0) {
+ result.udpAddress = new InetSocketAddress(
+ setting.getKdcHost(), udpPort);
+ }
+
+ return result;
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/bb6cce19/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultInternalKdcServerImpl.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultInternalKdcServerImpl.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultInternalKdcServerImpl.java
index 2e55e83..8b61d8e 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultInternalKdcServerImpl.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultInternalKdcServerImpl.java
@@ -21,11 +21,12 @@ package org.apache.kerby.kerberos.kerb.server.impl;
import org.apache.kerby.kerberos.kerb.server.KdcContext;
import org.apache.kerby.kerberos.kerb.server.KdcSetting;
+import org.apache.kerby.kerberos.kerb.server.KdcUtil;
import org.apache.kerby.kerberos.kerb.server.preauth.PreauthHandler;
import org.apache.kerby.kerberos.kerb.transport.KdcNetwork;
import org.apache.kerby.kerberos.kerb.transport.KrbTransport;
+import org.apache.kerby.kerberos.kerb.transport.TransportPair;
-import java.net.InetSocketAddress;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -58,15 +59,8 @@ public class DefaultInternalKdcServerImpl extends AbstractInternalKdcServer {
};
network.init();
-
- InetSocketAddress tcpAddress, udpAddress = null;
- tcpAddress = new InetSocketAddress(getSetting().getKdcHost(),
- getSetting().getKdcTcpPort());
- if (getSetting().allowUdp()) {
- udpAddress = new InetSocketAddress(getSetting().getKdcHost(),
- getSetting().getKdcUdpPort());
- }
- network.listen(tcpAddress, udpAddress);
+ TransportPair tpair = KdcUtil.getTransportPair(getSetting());
+ network.listen(tpair);
network.start();
}