Author: berndf
Date: Fri Aug 25 08:05:49 2006
New Revision: 436824

URL: http://svn.apache.org/viewvc?rev=436824&view=rev
Log:
avoid endless loop when no test port is available

Modified:
    james/server/trunk/src/test/org/apache/james/test/util/Util.java

Modified: james/server/trunk/src/test/org/apache/james/test/util/Util.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/util/Util.java?rev=436824&r1=436823&r2=436824&view=diff
==============================================================================
--- james/server/trunk/src/test/org/apache/james/test/util/Util.java (original)
+++ james/server/trunk/src/test/org/apache/james/test/util/Util.java Fri Aug 25 
08:05:49 2006
@@ -78,20 +78,25 @@
      */
     protected synchronized static int getNextNonPrivilegedPort() {
         // Hack to increase probability that the port is bindable
+        int nextPortCandidate = PORT_LAST_USED;
         while (true) {
             try {
-                PORT_LAST_USED++;
-                if (PORT_LAST_USED > PORT_RANGE_END) PORT_LAST_USED = 
PORT_RANGE_START;
+                nextPortCandidate++;
+                if (PORT_LAST_USED == nextPortCandidate) throw new 
RuntimeException("no free port found");
+                if (nextPortCandidate > PORT_RANGE_END) nextPortCandidate = 
PORT_RANGE_START; // start over
+
+                // test, port is available
                 ServerSocket ss;
-                ss = new ServerSocket(PORT_LAST_USED);
+                ss = new ServerSocket(nextPortCandidate);
                 ss.setReuseAddress(true);
                 ss.close();
                 break;
             } catch (IOException e) {
-                // TODO Auto-generated catch block
                 e.printStackTrace();
+                continue; // try next port
             }
         }
+        PORT_LAST_USED = nextPortCandidate;
         return PORT_LAST_USED;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to