Index: trunk/BNC/src/PPP/pppRun.cpp
===================================================================
--- trunk/BNC/src/PPP/pppRun.cpp	(revision 5925)
+++ trunk/BNC/src/PPP/pppRun.cpp	(revision 5927)
@@ -423,11 +423,9 @@
   }
 
+  emit finished();
+
   if (BNC_CORE->mode() != t_bncCore::interactive) {
     qApp->exit(0);
   }
-  else {
-    emit finished();
-    deleteLater();
-  }
 }
 
Index: trunk/BNC/src/PPP/pppThread.cpp
===================================================================
--- trunk/BNC/src/PPP/pppThread.cpp	(revision 5925)
+++ trunk/BNC/src/PPP/pppThread.cpp	(revision 5927)
@@ -61,6 +61,4 @@
   _pppRun    = 0;
 
-  connect(this, SIGNAL(finished()), this, SLOT(deleteLater()));
-
   connect(this, SIGNAL(newMessage(QByteArray,bool)), 
           BNC_CORE, SLOT(slotMessage(const QByteArray,bool)));
@@ -79,4 +77,5 @@
   try {
     _pppRun = new t_pppRun(_opt);
+    connect(_pppRun, SIGNAL(finished()), this, SLOT(slotPPPfinished()));
     if (_opt->_realTime) {
       if (_ownThread) {
@@ -89,7 +88,12 @@
   }
   catch (t_except exc) {
-    _pppRun = 0;
+    delete _pppRun; _pppRun = 0;
     emit newMessage(QByteArray(exc.what().c_str()), true);
   }
 }
 
+// Run (virtual)
+////////////////////////////////////////////////////////////////////////////
+void t_pppThread::slotPPPfinished() {
+  delete _pppRun; _pppRun = 0;
+}
Index: trunk/BNC/src/PPP/pppThread.h
===================================================================
--- trunk/BNC/src/PPP/pppThread.h	(revision 5925)
+++ trunk/BNC/src/PPP/pppThread.h	(revision 5927)
@@ -23,4 +23,8 @@
  signals:
   void newMessage(QByteArray msg, bool showOnScreen);
+  void pppFinished();
+
+ private slots:
+  void slotPPPfinished();
 
  private:
