Index: /trunk/FACT++/src/fad.cc
===================================================================
--- /trunk/FACT++/src/fad.cc	(revision 11421)
+++ /trunk/FACT++/src/fad.cc	(revision 11422)
@@ -101,8 +101,8 @@
     {
         cout << "Data sent: (transmitted=" << bytes_transferred << ") rc=" << error.message() << " (" << error << ")" << endl;
+        fOutQueue.pop_front();
     }
 
     vector<uint16_t> fBufCommand;
-    vector<uint16_t> fBuffer;
 
     vector<uint16_t> fCommand;
@@ -120,4 +120,6 @@
 
     int fSocket;
+
+    deque<vector<uint16_t>> fOutQueue;
 
     void SendData()
@@ -132,5 +134,5 @@
             fHeader.fTempDrs[i] = (42.+fBoardId/40.+float(rand())/RAND_MAX*5)*16;
 
-        fBuffer.resize(0);
+        vector<uint16_t> evtbuf;
 
         for (int i=0; i<kNumChannels; i++)
@@ -140,6 +142,6 @@
             const vector<uint16_t> buf = fChHeader[i].HtoN();
 
-            fBuffer.insert(fBuffer.end(), buf.begin(), buf.end());
-            fBuffer.insert(fBuffer.end(), fChHeader[i].fRegionOfInterest, 0x42+fHeader.fEventCounter*100);
+            evtbuf.insert(evtbuf.end(), buf.begin(), buf.end());
+            evtbuf.insert(evtbuf.end(), fChHeader[i].fRegionOfInterest, 0x42+fHeader.fEventCounter*100);
 
             fHeader.fPackageLength += sizeof(ChannelHeader)/2;
@@ -147,12 +149,14 @@
         }
 
-        fBuffer.push_back(htons(FAD::kDelimiterEnd));
+        evtbuf.push_back(htons(FAD::kDelimiterEnd));
 
         const vector<uint16_t> h = fHeader.HtoN();
 
-        fBuffer.insert(fBuffer.begin(), h.begin(), h.end());
+        evtbuf.insert(evtbuf.begin(), h.begin(), h.end());
+
+        fOutQueue.push_back(evtbuf);
 
         if (fCommandSocket)
-            AsyncWrite(this, ba::buffer(ba::const_buffer(fBuffer.data(), fBuffer.size()*2)));
+            AsyncWrite(this, ba::buffer(ba::const_buffer(fOutQueue.back().data(), fOutQueue.back().size()*2)));
         else
         {
@@ -163,5 +167,5 @@
             fSocket %= fSockets.size();
 
-            AsyncWrite(fSockets[fSocket].get(), ba::buffer(ba::const_buffer(fBuffer.data(), fBuffer.size()*2)));
+            AsyncWrite(fSockets[fSocket].get(), ba::buffer(ba::const_buffer(fOutQueue.back().data(), fOutQueue.back().size()*2)));
         }
     }
