Merge remote-tracking branch 'git.irl/alex'

Conflicts:
	ccnx/ccnx-wrapper.cpp
diff --git a/ccnx/ccnx-wrapper.cpp b/ccnx/ccnx-wrapper.cpp
index bdb40e7..d584be4 100644
--- a/ccnx/ccnx-wrapper.cpp
+++ b/ccnx/ccnx-wrapper.cpp
@@ -61,7 +61,7 @@
   //}
 
   m_handle = ccn_create ();
-  UniqueRecLock lock(m_mutex);
+  //UniqueRecLock lock(m_mutex);
   if (ccn_connect(m_handle, NULL) < 0)
   {
     BOOST_THROW_EXCEPTION (CcnxOperationException() << errmsg_info_str("connection to ccnd failed"));
@@ -343,12 +343,14 @@
 int CcnxWrapper::sendInterest (const Name &interest, const Closure &closure, const Selectors &selectors)
 {
   _LOG_TRACE (">> sendInterest");
-  UniqueRecLock lock(m_mutex);
-  if (!m_running || !m_connected)
-    {
-      _LOG_ERROR ("<< sendInterest: not running or connected");
-      return -1;
-    }
+  {
+    UniqueRecLock lock(m_mutex);
+    if (!m_running || !m_connected)
+      {
+        _LOG_ERROR ("<< sendInterest: not running or connected");
+        return -1;
+      }
+  }
 
   CcnxCharbufPtr namePtr = interest.toCcnxCharbuf();
   ccn_charbuf *pname = namePtr->getBuf();
@@ -366,6 +368,7 @@
     templ = selectorsPtr->getBuf();
   }
 
+  UniqueRecLock lock(m_mutex);
   if (ccn_express_interest (m_handle, pname, dataClosure, templ) < 0)
   {
     _LOG_ERROR ("<< sendInterest: ccn_express_interest FAILED!!!");
@@ -382,6 +385,7 @@
   UniqueRecLock lock(m_mutex);
   if (!m_running || !m_connected)
     return -1;
+  }
 
   CcnxCharbufPtr ptr = prefix.toCcnxCharbuf();
   ccn_charbuf *pname = ptr->getBuf();
@@ -389,6 +393,8 @@
 
   interestClosure->data = new InterestCallback (interestCallback); // should be removed when closure is removed
   interestClosure->p = &incomingInterest;
+
+  UniqueRecLock lock(m_mutex);
   int ret = ccn_set_interest_filter (m_handle, pname, interestClosure);
   if (ret < 0)
   {