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/04/21 00:41:34 UTC

directory-kerby git commit: Fixed an infinite loop in DefaultKdcHandler, thanks Colm for reporting it

Repository: directory-kerby
Updated Branches:
  refs/heads/master 1e5c10ea1 -> 0e9ed9adf


Fixed an infinite loop in DefaultKdcHandler, thanks Colm for reporting it


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/0e9ed9ad
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/0e9ed9ad
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/0e9ed9ad

Branch: refs/heads/master
Commit: 0e9ed9adf2f30906984c8f53c9724908943fefe5
Parents: 1e5c10e
Author: Drankye <dr...@gmail.com>
Authored: Tue Apr 21 06:41:15 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Tue Apr 21 06:41:15 2015 +0800

----------------------------------------------------------------------
 .../kerb/transport/KrbTcpTransport.java         |  8 ++++++--
 .../kerberos/kerb/transport/KrbTransport.java   |  2 +-
 .../kerb/transport/KrbUdpTransport.java         |  8 ++++++--
 .../kerb/server/impl/DefaultKdcHandler.java     | 20 ++++++++++++--------
 4 files changed, 25 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0e9ed9ad/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTcpTransport.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTcpTransport.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTcpTransport.java
index 610a63d..cd949c5 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTcpTransport.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTcpTransport.java
@@ -66,7 +66,11 @@ public class KrbTcpTransport
     }
 
     @Override
-    public void release() throws IOException {
-        socket.close();
+    public void release() {
+        try {
+            socket.close();
+        } catch (IOException e) {
+            // NOOP
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0e9ed9ad/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTransport.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTransport.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTransport.java
index 7e68444..e2d1e7e 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTransport.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbTransport.java
@@ -61,5 +61,5 @@ public interface KrbTransport {
     /**
      * Release and close related resources like connection.
      */
-    public void release() throws IOException;
+    public void release();
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0e9ed9ad/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbUdpTransport.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbUdpTransport.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbUdpTransport.java
index 41c7784..42708e7 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbUdpTransport.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/transport/KrbUdpTransport.java
@@ -62,7 +62,11 @@ public class KrbUdpTransport
     }
 
     @Override
-    public void release() throws IOException {
-        channel.close();
+    public void release() {
+        try {
+            channel.close();
+        } catch (IOException e) {
+            //NOOP
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0e9ed9ad/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultKdcHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultKdcHandler.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultKdcHandler.java
index 9604c05..96809ee 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultKdcHandler.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/DefaultKdcHandler.java
@@ -23,11 +23,15 @@ import org.apache.kerby.kerberos.kerb.server.KdcHandler;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
 import org.apache.kerby.kerberos.kerb.transport.KrbTcpTransport;
 import org.apache.kerby.kerberos.kerb.transport.KrbTransport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
 import java.net.InetAddress;
 import java.nio.ByteBuffer;
 
 public class DefaultKdcHandler extends KdcHandler implements Runnable {
+    private static Logger logger = LoggerFactory.getLogger(DefaultKdcHandler.class);
     private final KrbTransport transport;
 
     public DefaultKdcHandler(KdcContext kdcContext, KrbTransport transport) {
@@ -41,19 +45,21 @@ public class DefaultKdcHandler extends KdcHandler implements Runnable {
             try {
                 ByteBuffer message = transport.receiveMessage();
                 if (message == null) {
-                    System.out.println("No valid request recved. Disconnect actively");
+                    logger.debug("No valid request recved. Disconnect actively");
                     transport.release();
                     break;
                 }
                 handleMessage(message);
-            } catch (Exception e) {
-                System.out.println("Transport or decoding error occurred"
-                        + e.getMessage());
+            } catch (IOException e) {
+                transport.release();
+                logger.debug("Transport or decoding error occurred, " +
+                        "disconnecting abnormally", e);
+                break;
             }
         }
     }
 
-    protected void handleMessage(ByteBuffer message) throws Exception {
+    protected void handleMessage(ByteBuffer message) {
         InetAddress clientAddress = transport.getRemoteAddress();
         boolean isTcp = (transport instanceof KrbTcpTransport);
 
@@ -61,9 +67,7 @@ public class DefaultKdcHandler extends KdcHandler implements Runnable {
             ByteBuffer krbResponse = handleMessage(message, isTcp, clientAddress);
             transport.sendMessage(krbResponse);
         } catch (Exception e) {
-            //TODO: log the error
-            System.out.println("Error occured while processing request:"
-                    + e.getMessage());
+            logger.debug("Error occured while processing request:", e);
         }
     }
 }