Index: com/sun/grizzly/TCPConnectorHandler.java
===================================================================
--- com/sun/grizzly/TCPConnectorHandler.java	(revision 3172)
+++ com/sun/grizzly/TCPConnectorHandler.java	(working copy)
@@ -116,12 +116,6 @@
     
     
     /**
-     * Is the connection established.
-     */
-    private volatile boolean isConnected;
-    
-    
-    /**
      * IsConnected Latch related
      */
     private CountDownLatch isConnectedLatch;
@@ -664,15 +658,6 @@
     
     
     /**
-     * Is the underlying SocketChannel connected.
-     * @return true if connected, otherwise false
-     */
-    public boolean isConnected(){
-        return isConnected && underlyingChannel.isOpen();
-    }
-    
-    
-    /**
      * Return the tcpNoDelay value used by the underlying accepted Sockets.
      * 
      * Also see setTcpNoDelay(boolean tcpNoDelay)
Index: com/sun/grizzly/ConnectorHandler.java
===================================================================
--- com/sun/grizzly/ConnectorHandler.java	(revision 3172)
+++ com/sun/grizzly/ConnectorHandler.java	(working copy)
@@ -231,4 +231,11 @@
      * @param callbackHandler handler
      */
     public void setCallbackHandler(P callbackHandler);
+
+    /**
+     * Is the underlying channel connected.
+     *
+     * @return true if connected, otherwise false
+     */
+    public boolean isConnected();
 }
Index: com/sun/grizzly/UDPConnectorHandler.java
===================================================================
--- com/sun/grizzly/UDPConnectorHandler.java	(revision 3172)
+++ com/sun/grizzly/UDPConnectorHandler.java	(working copy)
@@ -80,12 +80,6 @@
         implements AsyncQueueWritable, AsyncQueueReadable {
 
     /**
-     * Is the connection established.
-     */
-    protected volatile boolean isConnected;
-    
-    
-    /**
      * IsConnected Latch related
      */
     protected CountDownLatch isConnectedLatch;
@@ -590,13 +584,4 @@
     public Controller.Protocol protocol(){
         return Controller.Protocol.UDP;
     }
-    
-    
-    /**
-     * Is the underlying DatagramChannel connected.
-     * @return true if connected, othewise false
-     */
-    public boolean isConnected(){
-        return isConnected && underlyingChannel.isOpen();
-    }
 }
Index: com/sun/grizzly/connectioncache/client/CacheableConnectorHandler.java
===================================================================
--- com/sun/grizzly/connectioncache/client/CacheableConnectorHandler.java	(revision 3172)
+++ com/sun/grizzly/connectioncache/client/CacheableConnectorHandler.java	(working copy)
@@ -186,7 +186,10 @@
         }
     }
 
-    
+    public boolean isConnected() {
+        return underlyingConnectorHandler != null && underlyingConnectorHandler.isConnected();
+    }
+
     public ConnectorHandler getUnderlyingConnectorHandler() {
         return underlyingConnectorHandler;
     }
Index: com/sun/grizzly/SSLConnectorHandler.java
===================================================================
--- com/sun/grizzly/SSLConnectorHandler.java	(revision 3172)
+++ com/sun/grizzly/SSLConnectorHandler.java	(working copy)
@@ -143,11 +143,6 @@
     private ByteBuffer asyncHandshakeBuffer;
     
     /**
-     * Is the connection established.
-     */
-    private volatile boolean isConnected;
-    
-    /**
      * Is the handshake phase completed
      */
     private volatile boolean isHandshakeDone;
@@ -756,14 +751,6 @@
      * Is the underlying SocketChannel connected.
      * @return true if connected, otherwise false
      */
-    public boolean isConnected() {
-        return isConnected && underlyingChannel.isOpen();
-    }
-    
-    /**
-     * Is the underlying SocketChannel connected.
-     * @return true if connected, otherwise false
-     */
     public boolean isHandshakeDone() {
         return isHandshakeDone && !isProcessingAsyncHandshake;
     }
Index: com/sun/grizzly/AbstractConnectorHandler.java
===================================================================
--- com/sun/grizzly/AbstractConnectorHandler.java	(revision 3172)
+++ com/sun/grizzly/AbstractConnectorHandler.java	(working copy)
@@ -76,6 +76,11 @@
      * The connection's SelectableChannel.
      */
     protected SelectableChannel underlyingChannel;
+
+    /**
+     * Is the connection established.
+     */
+    protected volatile boolean isConnected;
     
     /**
      * Get the <tt>ConnectorHandler</tt> {@link Protocol}.
@@ -157,4 +162,12 @@
     public void setCallbackHandler(K callbackHandler) {
         this.callbackHandler = callbackHandler;
     }
+
+    /**
+     * Is the underlying channel connected.
+     * @return true if connected, otherwise false
+     */
+    public boolean isConnected(){
+        return isConnected && underlyingChannel != null && underlyingChannel.isOpen();
+    }
 }
