Index: /trunk/AddOn/TAcq/acqparam_exemple.d
===================================================================
--- /trunk/AddOn/TAcq/acqparam_exemple.d	(revision 3898)
+++ /trunk/AddOn/TAcq/acqparam_exemple.d	(revision 3899)
@@ -58,4 +58,9 @@
 #  de resynchronisation succesive
 ethrforcesamefc 50 50 
+#####
+# En activant la carte suivante, le lecteur (EthernetReader) attend les messages END sur chaque lien 
+# avant de terminer l'execuction 
+#  @ethrwaitendmsg
+ethrwaitendmsg
 ## No de port TCP/IP   
 #  @tcpportid 6912
Index: /trunk/AddOn/TAcq/brparam.cc
===================================================================
--- /trunk/AddOn/TAcq/brparam.cc	(revision 3898)
+++ /trunk/AddOn/TAcq/brparam.cc	(revision 3899)
@@ -139,4 +139,5 @@
   ethr_sfc_maxdpc_=50;
   ethr_sfc_maxresync_=50;
+  ethr_waitendmsg_=false;
 
   skysource="";
@@ -212,4 +213,5 @@
   ethr_sfc_maxdpc_=p.ethr_sfc_maxdpc_;
   ethr_sfc_maxresync_=p.ethr_sfc_maxresync_;
+  ethr_waitendmsg_=p.ethr_waitendmsg_;
 
   skysource=p.skysource;
@@ -263,4 +265,5 @@
     ethr_sfc_maxresync_=conf.IParam("ethrforcesamefc",1,50);
   }
+  if (conf.HasKey("ethrwaitendmsg"))  ethr_waitendmsg_=true;
 
   //  Parametre de controle du monitoring 
@@ -398,7 +401,9 @@
   if (ethr_forcesamefc_)
     cout << "EthernetReader mode: ForceSameFrameCounter read mode with Max_PaquetCounterDiff= " 
-	 << ethr_sfc_maxdpc_ << " MaxNbResync=" << ethr_sfc_maxresync_ << endl;
+	 << ethr_sfc_maxdpc_ << " MaxNbResync=" << ethr_sfc_maxresync_ 
+	 << ((ethr_waitendmsg_)?" Wait_For_END_Message_Before_Terminate ":" ") << endl;
   else
-    cout << "EthernetReader mode: AllOKPaquets read mode " << endl;
+    cout << "EthernetReader mode: AllOKPaquets read mode " 
+	 << ((ethr_waitendmsg_)?" Wait_For_END_Message_Before_Terminate ":" ") << endl;
 
   if (fgdoProc>0) 
Index: /trunk/AddOn/TAcq/brparam.h
===================================================================
--- /trunk/AddOn/TAcq/brparam.h	(revision 3898)
+++ /trunk/AddOn/TAcq/brparam.h	(revision 3899)
@@ -168,5 +168,6 @@
   uint_4 ethr_sfc_maxdpc_;   // valeur maximum de difference tolere entre compteurs de paquets de differentes fibres 
   uint_4 ethr_sfc_maxresync_;   // Nombre maximum de tentative de resynchronisation avant echec
- 
+  bool ethr_waitendmsg_;   // true -> EthernetReader attend le message END avant de s'arreter 
+
   // Identification source observee dans le ciel
   string skysource;
Index: /trunk/AddOn/TAcq/mfacq.cc
===================================================================
--- /trunk/AddOn/TAcq/mfacq.cc	(revision 3898)
+++ /trunk/AddOn/TAcq/mfacq.cc	(revision 3899)
@@ -389,4 +389,5 @@
   EthernetReader ethrdr(mmgr, bpar.GetParams(), bpar.GetParams().tcpportid);
   ethrdr.SetReadMode(acpar.ethr_forcesamefc_, acpar.ethr_sfc_maxdpc_,acpar.ethr_sfc_maxresync_);
+  ethrdr.WaitENDMsg4Terminate(acpar.ethr_waitendmsg_);
   ethrdr.SetPrintLevel(acpar.prtlevel_, acpar.prtmodulo_); 
 
Index: /trunk/AddOn/TAcq/racqueth.cc
===================================================================
--- /trunk/AddOn/TAcq/racqueth.cc	(revision 3898)
+++ /trunk/AddOn/TAcq/racqueth.cc	(revision 3899)
@@ -514,6 +514,8 @@
     usleep(50000);       // Attente de traitement du dernier paquet
     memgr_.Stop();        // Arret 
-    CleanUpAllSockets();  // On lit tous les liens jusqu'a la reception du message END
-    cout << " EthernetReader::run(): done CleanUpAllSockets()" << endl;
+    if (waitendmsg_)  {
+      CleanUpAllSockets();  // On lit tous les liens jusqu'a la reception du message END
+      cout << " EthernetReader::run(): done CleanUpAllSockets()" << endl;
+    }
   }  // Fin du bloc try 
   catch (std::exception& exc) {
Index: /trunk/AddOn/TAcq/racqueth.h
===================================================================
--- /trunk/AddOn/TAcq/racqueth.h	(revision 3898)
+++ /trunk/AddOn/TAcq/racqueth.h	(revision 3899)
@@ -98,4 +98,7 @@
   inline void SetReadMode(bool force_samefc=false, uint_4 maxdiff_paqnum=50, uint_4 maxresync=50)
   { rdsamefc_=force_samefc; sfc_maxdpc_=maxdiff_paqnum; sfc_maxresync_=maxresync; }
+  //  En activant le flag, le reader ne se termine qu'avec la reception des message END sur chaque lien 
+  inline void WaitENDMsg4Terminate(bool waitendmsg=false) 
+  { waitendmsg_=waitendmsg; }
 
   virtual void run();
@@ -165,4 +168,6 @@
   string stopreason_;   // message descriptif de la raison d'arret 
 
+  bool waitendmsg_;   // si true, attendre le message  END message sur chaque lien avant de s'arreter 
+ 
   int prtlev_;   // print level 
   uint_8 prtmodulo_;   // print periodicity (modulo) 
