fix content server
btw, ccn exception when prefix discvoery enabled at home
diff --git a/src/content-server.cc b/src/content-server.cc
index a5aaf31..fa5a2bb 100644
--- a/src/content-server.cc
+++ b/src/content-server.cc
@@ -59,13 +59,9 @@
 void
 ContentServer::registerPrefix(const Name &prefix)
 {
-  Name actionPrefix = Name (prefix)(m_deviceName)("action")(m_sharedFolderName);
-  Name filePrefix = Name (prefix)(m_deviceName)("file");
-  m_ccnx->setInterestFilter (actionPrefix, bind(&ContentServer::serve_Action, this, prefix, _1));
-  m_ccnx->setInterestFilter (filePrefix, bind(&ContentServer::serve_File,   this, prefix, _1));
+  m_ccnx->setInterestFilter (prefix, bind(&ContentServer::serve, this, prefix, _1));
 
-  _LOG_DEBUG (">> content server: register " << actionPrefix);
-  _LOG_DEBUG (">> content server: register " << filePrefix);
+  _LOG_DEBUG (">> content server: register " << prefix);
 
   ScopedLock lock (m_mutex);
   m_prefixes.insert(prefix);
@@ -74,19 +70,36 @@
 void
 ContentServer::deregisterPrefix (const Name &prefix)
 {
-  Name actionPrefix = Name (prefix)(m_deviceName)("action")(m_sharedFolderName);
-  Name filePrefix = Name (prefix)(m_deviceName)("file");
 
-  m_ccnx->clearInterestFilter(actionPrefix);
-  m_ccnx->clearInterestFilter(filePrefix);
+  m_ccnx->clearInterestFilter(prefix);
 
-  _LOG_DEBUG ("<< content server: deregister " << actionPrefix);
-  _LOG_DEBUG ("<< content server: deregister " << filePrefix);
+  _LOG_DEBUG ("<< content server: deregister " << prefix);
   ScopedLock lock (m_mutex);
   m_prefixes.erase (prefix);
 }
 
 void
+ContentServer::serve(Name forwardingHint, const Name &interest)
+{
+  // /forwardingHint/device-name/action/shared-folder/action-seq
+  // /forwardingHint/device-name/file/file-hash/segment
+
+  Name name = interest.getPartialName(forwardingHint.size());
+  if (name.size() > 3)
+  {
+    string type = name.getCompAsString(name.size() - 3);
+    if (type == "action")
+    {
+      serve_Action (forwardingHint, interest);
+    }
+    else if (type == "file")
+    {
+      serve_File (forwardingHint, interest);
+    }
+  }
+}
+
+void
 ContentServer::serve_Action (Name forwardingHint, const Name &interest)
 {
   _LOG_DEBUG (">> content server serving, forwardHing " << forwardingHint << ", interest " << interest);
diff --git a/src/content-server.h b/src/content-server.h
index 946170d..47640d9 100644
--- a/src/content-server.h
+++ b/src/content-server.h
@@ -46,6 +46,9 @@
 
 private:
   void
+  serve (Ccnx::Name forwardingHint, const Ccnx::Name &interest);
+
+  void
   serve_Action (Ccnx::Name forwardingHint, const Ccnx::Name &interest);
 
   void
diff --git a/test/test-dispatcher.cc b/test/test-dispatcher.cc
index 838f8d7..6f619df 100644
--- a/test/test-dispatcher.cc
+++ b/test/test-dispatcher.cc
@@ -71,9 +71,9 @@
   cleanDir(dir1);
   cleanDir(dir2);
 
-  Dispatcher d1(user1, folder, dir1, ccnx1);
+  Dispatcher d1(user1, folder, dir1, ccnx1, false);
   usleep(100);
-  Dispatcher d2(user2, folder, dir2, ccnx2);
+  Dispatcher d2(user2, folder, dir2, ccnx2, false);
 
   usleep(14900000);