diff --git a/Fltk/GmshServer.h b/Fltk/GmshServer.h
index b1a01e141f0965a4ef2b0dcc819703b62543e987..5b68e23a80e8c7212b7c213cd574292569a0f618 100644
--- a/Fltk/GmshServer.h
+++ b/Fltk/GmshServer.h
@@ -240,9 +240,13 @@ class GmshServer {
   }
   int ReceiveMessageHeader(int *type, int *len)
   {
-    _ReceiveData(type, sizeof(int));
-    if(_ReceiveData(len, sizeof(int)))
-      return 1;
+    if(_ReceiveData(type, sizeof(int))){
+      if(*type < 0) return 0;
+      if(_ReceiveData(len, sizeof(int))){
+	if(*len < 0) return 0;
+	return 1;
+      }
+    }
     return 0;
   }
   int ReceiveMessageBody(int len, char *str)