Index: trunk/BNC/bncpppclient.cpp
===================================================================
--- trunk/BNC/bncpppclient.cpp	(revision 2809)
+++ trunk/BNC/bncpppclient.cpp	(revision 2810)
@@ -632,4 +632,6 @@
 void bncPPPclient::processEpochs() {
 
+  // Synchronization threshold (not used in SPP mode)
+  // ------------------------------------------------
   double maxDt = 0.0;
   if (!_pppMode) {
@@ -637,5 +639,16 @@
   }
 
+  // Make sure the buffer does not grow beyond any limit
+  // ---------------------------------------------------
+  const unsigned MAX_EPODATA_SIZE = 120;
+  if (_epoData.size() > MAX_EPODATA_SIZE) {
+    delete _epoData.front();
+    _epoData.pop();
+  }
+
+  // Loop over all unprocessed epochs
+  // --------------------------------
   while (!_epoData.empty()) {
+
     t_epoData* frontEpoData = _epoData.front();
 
@@ -643,11 +656,10 @@
     // ----------------------------------
     if (maxDt != 0.0 && !_corr_tt.valid()) {
-      delete _epoData.front();
-      _epoData.pop();
-      continue;
-    }
-
-    if (maxDt == 0 || 
-         (frontEpoData->tt - _corr_tt) < maxDt ) {
+      return;
+    }
+
+    // Process the front epoch
+    // -----------------------
+    if (maxDt == 0 || frontEpoData->tt - _corr_tt < maxDt) {
       processFrontEpoch();
       delete _epoData.front();
