Index: trunk/MagicSoft/Cosy/candrv/network.cc
===================================================================
--- trunk/MagicSoft/Cosy/candrv/network.cc	(revision 4105)
+++ trunk/MagicSoft/Cosy/candrv/network.cc	(revision 6923)
@@ -278,4 +278,27 @@
 // --------------------------------------------------------------------------
 //
+// Print all errors which are currently set
+//
+void Network::PrintError() const
+{
+    for (int i=0; i<32; i++)
+    {
+        if (!fNodes[i])
+            continue;
+
+        if (!fNodes[i]->HasError())
+            continue;
+
+        lout << "- Node #" << dec << i << " '" << fNodes[i]->GetNodeName() << "' ";
+
+        if (fNodes[i]->GetError() <= 0)
+            lout << "Error occured." << endl;
+        else
+            lout << "has error #" << fNodes[i]->GetError() << endl;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
 // returns true if one of the nodes has the error-flag set (HasError).
 //
@@ -354,3 +377,2 @@
             fNodes[i]->CheckConnection();
 }
-
Index: trunk/MagicSoft/Cosy/candrv/network.h
===================================================================
--- trunk/MagicSoft/Cosy/candrv/network.h	(revision 4105)
+++ trunk/MagicSoft/Cosy/candrv/network.h	(revision 6923)
@@ -37,4 +37,6 @@
     virtual void Stop();
 
+    void PrintError() const;
+
     bool HasError() const;
     bool HasZombie() const;
Index: trunk/MagicSoft/Cosy/candrv/nodedrv.cc
===================================================================
--- trunk/MagicSoft/Cosy/candrv/nodedrv.cc	(revision 4105)
+++ trunk/MagicSoft/Cosy/candrv/nodedrv.cc	(revision 6923)
@@ -416,21 +416,14 @@
 // queue and no waiting is done, false is returned..
 //
-bool NodeDrv::WaitForSdo(WORD_t idx, BYTE_t subidx, WORDS_t timeout)
+bool NodeDrv::WaitForSdo(WORD_t idx, BYTE_t subidx, WORDS_t timeout, bool zombie)
 {
     bool rc = fNetwork->WaitForSdo(fId, idx, subidx, fIsZombie?-1:timeout);
-
-    if (!rc)
-    {
-        lout << "NodeDrv::WaitForSdo: 0x" << hex << idx << "/" << dec << (int)subidx << " " << GetNodeName() << " --> ZOMBIE!" << endl;
+    if (rc)
+        return true;
+
+    lout << " + " << GetNodeName() << ": NodeDrv::WaitForSdo: 0x" << hex << idx << "/" << dec << (int)subidx << " --> ZOMBIE! " << MTime() << endl;
+    if (zombie)
         SetZombie();
-    }
-/*
-    if (HasError())
-    {
-        lout << "NodeDrv::WaitForSdo: HasError 0x" << hex << idx << "/" << dec << (int)subidx << " " << GetNodeName() << " --> ZOMBIE!" << endl;
-        fIsZombie = kTRUE;
-    }
-*/
-    return fIsZombie ? false : rc;
+    return false;
 }
 
Index: trunk/MagicSoft/Cosy/candrv/nodedrv.h
===================================================================
--- trunk/MagicSoft/Cosy/candrv/nodedrv.h	(revision 4105)
+++ trunk/MagicSoft/Cosy/candrv/nodedrv.h	(revision 6923)
@@ -106,5 +106,5 @@
 
     // void WaitForSdos();
-    bool WaitForSdo(WORD_t idx, BYTE_t subidx=0, WORDS_t timeout=500);
+    bool WaitForSdo(WORD_t idx, BYTE_t subidx=0, WORDS_t timeout=500, bool zombie=true);
 
     void EnableCanMsg(BYTE_t fcode);
