PPI: Implement IOEvent error handling
[senf.git] / PPI / Connectors.cci
index a046feb..5dcb08e 100644 (file)
@@ -53,10 +53,14 @@ prefix_ senf::ppi::connector::Connector::Connector()
 {}
 
 prefix_ senf::ppi::connector::Connector::~Connector()
-{}
+{
+    if (peer_)
+        peer_->peer_ = 0;
+}
 
 prefix_ void senf::ppi::connector::Connector::connect(Connector & target)
 {
+    BOOST_ASSERT( ! peer_ && ! target.peer_ );
     peer_ = & target;
     target.peer_ = this;
 }
@@ -86,9 +90,10 @@ prefix_ bool senf::ppi::connector::PassiveConnector::nativeThrottled()
 
 prefix_ void senf::ppi::connector::PassiveConnector::throttle()
 {
-    if (!throttled())
+    if (!throttled()) {
+        nativeThrottled_ = true;
         emitThrottle();
-    nativeThrottled_ = true;
+    }
 }
 
 prefix_ void senf::ppi::connector::PassiveConnector::unthrottle()