fix #763.
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / php / model / XDebugTarget.java
index def9a6f..06064eb 100644 (file)
@@ -43,7 +43,7 @@ import org.w3c.dom.Node;
 
 import net.sourceforge.phpeclipse.xdebug.core.xdebug.ResponseListener;
 import net.sourceforge.phpeclipse.xdebug.core.xdebug.XDebugConnection;
-import net.sourceforge.phpeclipse.xdebug.core.xdebug.ResponseListener.XDebugResponse;
+import net.sourceforge.phpeclipse.xdebug.core.xdebug.XDebugResponse;
 
 /**
  * @author Christian
@@ -600,24 +600,31 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE
        }
        
        public void handleProxyEvent(XDebugConnection connection) {
-               setDebugConnection(connection);
                //System.out.println("* New Connection - XDebug.Target: " + fDebugConnection.getSessionID());
                
-               fThread = new XDebugThread(this);
-               fThreads = new IThread[] {fThread};
-               fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CHANGE));
-               try {
-                       started();
-               } catch( DebugException e ){
-                       e.printStackTrace();            
-               }               
+               if (setDebugConnection(connection)) {
+                       fThread = new XDebugThread(this);
+                       fThreads = new IThread[] {fThread};
+                       fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CHANGE));
+                       try {
+                               started();
+                       } catch( DebugException e ){
+                               e.printStackTrace();            
+                       }
+               }
        }
 
-       private void setDebugConnection(XDebugConnection connection) {
-               if (connection != null) {
+       private boolean setDebugConnection(XDebugConnection connection) {
+               if (connection != null && fDebugConnection == null) {
                        fDebugConnection = connection;
                        fResponseListener = new ResponseListener(connection);
                        startListener();
+                       
+                       return true;
+               } else {
+                       connection.close();
+                       
+                       return false;
                }
        }