Index: modules/jetty/src/main/java/org/mortbay/jetty/bio/SocketConnector.java
===================================================================
--- modules/jetty/src/main/java/org/mortbay/jetty/bio/SocketConnector.java	(revision 5945)
+++ modules/jetty/src/main/java/org/mortbay/jetty/bio/SocketConnector.java	(working copy)
@@ -50,6 +50,7 @@
 {
     protected ServerSocket _serverSocket;
     protected Set _connections;
+    protected volatile int _localPort=-1;
     
     /* ------------------------------------------------------------ */
     /** Constructor.
@@ -70,8 +71,14 @@
     {
         // Create a new server socket and set to non blocking mode
         if (_serverSocket==null || _serverSocket.isClosed())
-        _serverSocket= newServerSocket(getHost(),getPort(),getAcceptQueueSize());
-        _serverSocket.setReuseAddress(getReuseAddress());
+        {
+            int port=getPort();
+            _serverSocket=newServerSocket(getHost(),port,getAcceptQueueSize());
+            _serverSocket.setReuseAddress(getReuseAddress());
+            _localPort=_serverSocket.getLocalPort();
+            if (_localPort<0)
+                Log.warn("Bad localport on "+this);
+        }
     }
 
     /* ------------------------------------------------------------ */
@@ -90,6 +97,7 @@
         if (_serverSocket!=null)
             _serverSocket.close();
         _serverSocket=null;
+        _localPort=-2;
     }
 
     /* ------------------------------------------------------------ */
@@ -135,9 +143,7 @@
     /* ------------------------------------------------------------------------------- */
     public int getLocalPort()
     {
-        if (_serverSocket==null || _serverSocket.isClosed())
-            return -1;
-        return _serverSocket.getLocalPort();
+        return _localPort;
     }
 
     /* ------------------------------------------------------------------------------- */
Index: modules/jetty/src/main/java/org/mortbay/jetty/nio/SelectChannelConnector.java
===================================================================
--- modules/jetty/src/main/java/org/mortbay/jetty/nio/SelectChannelConnector.java	(revision 5945)
+++ modules/jetty/src/main/java/org/mortbay/jetty/nio/SelectChannelConnector.java	(working copy)
@@ -66,6 +66,7 @@
     protected transient ServerSocketChannel _acceptChannel;
     private long _lowResourcesConnections;
     private long _lowResourcesMaxIdleTime;
+    private volatile int _localPort=-1;
 
     private SelectorManager _manager = new SelectorManager()
     {
@@ -143,6 +144,7 @@
             if (_acceptChannel != null)
                 _acceptChannel.close();
             _acceptChannel = null;
+            _localPort=-2;
         }
     }
     
@@ -183,12 +185,7 @@
     /* ------------------------------------------------------------------------------- */
     public int getLocalPort()
     {
-        synchronized(this)
-        {
-            if (_acceptChannel==null || !_acceptChannel.isOpen())
-                return -1;
-            return _acceptChannel.socket().getLocalPort();
-        }
+        return _localPort;
     }
 
     /* ------------------------------------------------------------ */
@@ -214,10 +211,13 @@
                 _acceptChannel.socket().setReuseAddress(getReuseAddress());
                 InetSocketAddress addr = getHost()==null?new InetSocketAddress(getPort()):new InetSocketAddress(getHost(),getPort());
                 _acceptChannel.socket().bind(addr,getAcceptQueueSize());
+                _localPort=_acceptChannel.socket().getLocalPort();
 
+                if (_localPort<0)
+                    Log.warn("Bad localport on "+this);
+
                 // Set to non blocking mode
                 _acceptChannel.configureBlocking(false);
-                
             }
         }
     }
Index: modules/jetty/src/main/java/org/mortbay/jetty/nio/BlockingChannelConnector.java
===================================================================
--- modules/jetty/src/main/java/org/mortbay/jetty/nio/BlockingChannelConnector.java	(revision 5945)
+++ modules/jetty/src/main/java/org/mortbay/jetty/nio/BlockingChannelConnector.java	(working copy)
@@ -44,7 +44,8 @@
  */
 public class BlockingChannelConnector extends AbstractNIOConnector 
 {
-    private transient ServerSocketChannel _acceptChannel;
+    private ServerSocketChannel _acceptChannel;
+    private volatile int _localPort;
     
     /* ------------------------------------------------------------ */
     /** Constructor.
@@ -70,6 +71,7 @@
         // Bind the server socket to the local host and port
         InetSocketAddress addr = getHost()==null?new InetSocketAddress(getPort()):new InetSocketAddress(getHost(),getPort());
         _acceptChannel.socket().bind(addr,getAcceptQueueSize());
+        _localPort=_acceptChannel.socket().getLocalPort();
     }
 
     /* ------------------------------------------------------------ */
@@ -78,6 +80,7 @@
         if (_acceptChannel != null)
             _acceptChannel.close();
         _acceptChannel=null;
+        _localPort=-2;
     }
     
     /* ------------------------------------------------------------ */
@@ -112,9 +115,7 @@
     /* ------------------------------------------------------------------------------- */
     public int getLocalPort()
     {
-        if (_acceptChannel==null || !_acceptChannel.isOpen())
-            return -1;
-        return _acceptChannel.socket().getLocalPort();
+        return _localPort;
     }
     
     /* ------------------------------------------------------------------------------- */
