src: add SigningInfo and version number to SegmentPublisher

refs: #4783

Change-Id: Id5dc8d6096ff729be0b8d0f971004281e0c09eb1
diff --git a/src/partial-producer.cpp b/src/partial-producer.cpp
index b0d29f1..e1570fe 100644
--- a/src/partial-producer.cpp
+++ b/src/partial-producer.cpp
@@ -74,14 +74,14 @@
 void
 PartialProducer::onHelloInterest(const ndn::Name& prefix, const ndn::Interest& interest)
 {
-  // Last component or third last component (in case of interest with IBF and segment)
-  // needs to be hello
-  if (interest.getName().get(interest.getName().size()-1).toUri() != "hello" &&
-      interest.getName().get(interest.getName().size()-3).toUri() != "hello") {
+  if (m_segmentPublisher.replyFromStore(interest.getName())) {
     return;
   }
 
-  if (m_segmentPublisher.replyFromStore(interest.getName())) {
+  // Last component or fourth last component (in case of interest with version and segment)
+  // needs to be hello
+  if (interest.getName().get(interest.getName().size()-1).toUri() != "hello" &&
+      interest.getName().get(interest.getName().size()-4).toUri() != "hello") {
     return;
   }
 
@@ -104,17 +104,25 @@
 void
 PartialProducer::onSyncInterest(const ndn::Name& prefix, const ndn::Interest& interest)
 {
-  NDN_LOG_DEBUG("Sync Interest Received, nonce: " << interest.getNonce() <<
-                " hash: " << std::hash<std::string>{}(interest.getName().toUri()));
-
-  ndn::Name interestName = interest.getName();
-
-  if (interestName.get(interestName.size() - 5).toUri() != "sync" &&
-      interestName.get(interestName.size() - 7).toUri() != "sync") {
+  if (m_segmentPublisher.replyFromStore(interest.getName())) {
     return;
   }
 
-  if (m_segmentPublisher.replyFromStore(interest.getName())) {
+  NDN_LOG_DEBUG("Sync Interest Received, nonce: " << interest.getNonce() <<
+                " hash: " << std::hash<std::string>{}(interest.getName().toUri()));
+
+  ndn::Name nameWithoutSyncPrefix = interest.getName().getSubName(prefix.size());
+  ndn::Name interestName;
+
+  if (nameWithoutSyncPrefix.size() == 4) {
+    // Get /<prefix>/BF/IBF/ from /<prefix>/BF/IBF (3 components of BF + 1 for IBF)
+    interestName = interest.getName();
+  }
+  else if (nameWithoutSyncPrefix.size() == 6) {
+    // Get <prefix>/BF/IBF/ from /<prefix>/BF/IBF/<version>/<segment-no>
+    interestName = interest.getName().getPrefix(-2);
+  }
+  else {
     return;
   }