From 94146a7d114384a521d36077f4f97c8e07b524c1 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 28 Feb 2007 11:35:55 +0000
Subject: [PATCH] Fix for issue 1285.

---
 opendj-sdk/opends/src/server/org/opends/server/tools/InstallDS.java |   71 ++++++++++++++++-------------------
 1 files changed, 32 insertions(+), 39 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/InstallDS.java b/opendj-sdk/opends/src/server/org/opends/server/tools/InstallDS.java
index ba2e087..9447387 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/InstallDS.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/InstallDS.java
@@ -30,9 +30,6 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedList;
@@ -424,6 +421,29 @@
       try
       {
         ldapPortNumber = ldapPort.getIntValue();
+
+        if (! skipPortCheck.isPresent())
+        {
+          // Check if the port can be used.
+          if (!SetupUtils.canUseAsPort(ldapPortNumber))
+          {
+            int msgID;
+            String message;
+            if (SetupUtils.isPriviledgedPort(ldapPortNumber))
+            {
+              msgID   = MSGID_INSTALLDS_CANNOT_BIND_TO_PRIVILEGED_PORT;
+              message = getMessage(msgID, ldapPortNumber);
+              System.err.println(wrapText(message, MAX_LINE_WIDTH));
+            }
+            else
+            {
+              msgID   = MSGID_INSTALLDS_CANNOT_BIND_TO_PORT;
+              message = getMessage(msgID, ldapPortNumber);
+              System.err.println(wrapText(message, MAX_LINE_WIDTH));
+            }
+            return 1;
+          }
+        }
       }
       catch (ArgumentException ae)
       {
@@ -439,45 +459,20 @@
         String message = getMessage(msgID);
         ldapPortNumber = promptForInteger(message, 389, 1, 65535);
 
-        if (! skipPortCheck.isPresent())
+        if (skipPortCheck.isPresent())
         {
-          try
+            break;
+        }
+        else
+        {
+          // Check if the port can be used.
+          if (SetupUtils.canUseAsPort(ldapPortNumber))
           {
-            InetSocketAddress socketAddress =
-                                   new InetSocketAddress(ldapPortNumber);
-            ServerSocket serverSocket = new ServerSocket();
-            serverSocket.setReuseAddress(true);
-            serverSocket.bind(socketAddress);
-            serverSocket.close();
-
-            try
-            {
-              Socket socket = new Socket("127.0.0.1", ldapPortNumber);
-              socket.close();
-              if ((ldapPortNumber <= 1024) && (! isWindows))
-              {
-                msgID   = MSGID_INSTALLDS_CANNOT_BIND_TO_PRIVILEGED_PORT;
-                message = getMessage(msgID, ldapPortNumber);
-                System.err.println(wrapText(message, MAX_LINE_WIDTH));
-              }
-              else
-              {
-                msgID   = MSGID_INSTALLDS_CANNOT_BIND_TO_PORT;
-                message = getMessage(msgID, ldapPortNumber);
-                System.err.println(wrapText(message, MAX_LINE_WIDTH));
-              }
-
-              continue;
-            }
-            catch (Exception e)
-            {
-              // This is expected, so no action should be taken.
               break;
-            }
           }
-          catch (Exception e)
+          else
           {
-            if ((ldapPortNumber <= 1024) && (! isWindows))
+            if (SetupUtils.isPriviledgedPort(ldapPortNumber))
             {
               msgID   = MSGID_INSTALLDS_CANNOT_BIND_TO_PRIVILEGED_PORT;
               message = getMessage(msgID, ldapPortNumber);
@@ -489,8 +484,6 @@
               message = getMessage(msgID, ldapPortNumber);
               System.err.println(wrapText(message, MAX_LINE_WIDTH));
             }
-
-            continue;
           }
         }
       }

--
Gitblit v1.10.0