diff --git a/client.c b/client.c
index 588389a9bd5a00dea42b33c8a1d900ef916e1571..1ea3a55955bd9d2955d68545077bc84b4c8411cf 100644
--- a/client.c
+++ b/client.c
@@ -108,6 +108,7 @@ int main(int argc, char **argv) {
   int selectedMode, ch;
   int succeeds = 0;
   int fails = 0;
+  int failed = 0;
   int not_checked = 1;
   int delay = 30;
   double tmp;
@@ -364,7 +365,11 @@ int main(int argc, char **argv) {
           sprintf(output_text, "Test failed. Failcode:%d  Ioerror:%d\n", 
             (int)engp->failCode, (int)engp->ioError);
           log_text(0);
-          return -1;
+	  failed++;
+	  if (failed >= 3)
+            return -1;
+	  else
+            break;
         }
         else if (engp->state == CLSM_COMPLETE) {
           /* more backoff stuff */