fix memory leak in ccnx-tunnel
diff --git a/include/ccnx-closure.h b/include/ccnx-closure.h
index 66f79e8..f006d11 100644
--- a/include/ccnx-closure.h
+++ b/include/ccnx-closure.h
@@ -31,6 +31,9 @@
   virtual TimeoutCallbackReturnValue
   runTimeoutCallback(const Name &interest);
 
+  virtual Closure *
+  dup() const;
+
 protected:
   int m_retry;
   TimeoutCallback *m_timeoutCallback;
diff --git a/include/ccnx-tunnel.h b/include/ccnx-tunnel.h
index 0525458..b71d3c1 100644
--- a/include/ccnx-tunnel.h
+++ b/include/ccnx-tunnel.h
@@ -40,7 +40,7 @@
   publishContentObject(const Name &name, const Bytes &contentObject, int freshness);
 
   virtual int
-  sendInterest (const Name &interest, Closure *closure, const Selectors &selectors = Selectors());
+  sendInterest (const Name &interest, const Closure *closure, const Selectors &selectors = Selectors());
 
 
   // prefix is topology-independent
@@ -95,6 +95,9 @@
   virtual TimeoutCallbackReturnValue
   runTimeoutCallback(const Name &interest) _OVERRIDE;
 
+  virtual Closure *
+  dup() const _OVERRIDE;
+
 private:
   CcnxTunnel *m_tunnel;
   Name m_originalInterest;
diff --git a/include/ccnx-wrapper.h b/include/ccnx-wrapper.h
index 12a5bc7..32999a3 100644
--- a/include/ccnx-wrapper.h
+++ b/include/ccnx-wrapper.h
@@ -37,7 +37,7 @@
   clearInterestFilter (const Name &prefix);
 
   virtual int
-  sendInterest (const Name &interest, Closure *closure, const Selectors &selector = Selectors());
+  sendInterest (const Name &interest, const Closure *closure, const Selectors &selector = Selectors());
 
   virtual int
   publishData (const Name &name, const unsigned char *buf, size_t len, int freshness);