Adding experimental mutex in Fetcher
diff --git a/src/fetcher.cc b/src/fetcher.cc
index 13a52b3..98b8ceb 100644
--- a/src/fetcher.cc
+++ b/src/fetcher.cc
@@ -95,6 +95,8 @@
 {
   for (; m_minSendSeqNo < m_maxSeqNo && m_activePipeline < m_pipeline; m_minSendSeqNo++)
     {
+      unique_lock<mutex> lock (m_seqNoMutex);
+
       if (m_outOfOrderRecvSeqNo.find (m_minSendSeqNo+1) != m_outOfOrderRecvSeqNo.end ())
         continue;
 
@@ -157,6 +159,8 @@
   m_lastPositiveActivity = date_time::second_clock<boost::posix_time::ptime>::universal_time();
 
   ////////////////////////////////////////////////////////////////////////////
+  unique_lock<mutex> lock (m_seqNoMutex);
+
   m_outOfOrderRecvSeqNo.insert (seqno);
   m_inActivePipeline.erase (seqno);
   _LOG_DEBUG ("Total segments received: " << m_outOfOrderRecvSeqNo.size ());
@@ -222,12 +226,25 @@
   if (m_lastPositiveActivity <
       (date_time::second_clock<boost::posix_time::ptime>::universal_time() - m_maximumNoActivityPeriod))
     {
-      m_inActivePipeline.erase (seqno);
-      m_activePipeline --;
-      if (m_activePipeline == 0)
+      bool done = false;
+      {
+        unique_lock<mutex> lock (m_seqNoMutex);
+        m_inActivePipeline.erase (seqno);
+        m_activePipeline --;
+
+        if (m_activePipeline == 0)
+          {
+          done = true;
+          }
+      }
+
+      if (done)
         {
-          _LOG_DEBUG ("Telling that fetch failed");
-          _LOG_DEBUG ("Active pipeline size should be zero: " << m_inActivePipeline.size ());
+          {
+            unique_lock<mutex> lock (m_seqNoMutex);
+            _LOG_DEBUG ("Telling that fetch failed");
+            _LOG_DEBUG ("Active pipeline size should be zero: " << m_inActivePipeline.size ());
+          }
 
           m_active = false;
           m_onFetchFailed (ref (*this));