--- a/src/mediaserver/cdplugins/plgwithslave.cxx
+++ b/src/mediaserver/cdplugins/plgwithslave.cxx
@@ -22,6 +22,7 @@
 #include <vector>
 #include <sstream>
 #include <functional>
+#include <memory>
 
 #include <string.h>
 #include <fcntl.h>
@@ -36,6 +37,8 @@
 #include "sysvshm.h"
 #include "main.hxx"
 #include "streamproxy.h"
+#include "netfetch.h"
+#include "curlfetch.h"
 
 using namespace std;
 using namespace std::placeholders;
@@ -108,7 +111,9 @@
 StreamProxy::UrlTransReturn translateurl(
     CDPluginServices *cdsrv,
     std::string& url,
-    const std::unordered_map<std::string, std::string>& querymap)
+    const std::unordered_map<std::string, std::string>& querymap,
+    std::unique_ptr<NetFetch>& fetcher
+    )
 {
     LOGDEB("PlgWithSlave::translateurl: url " << url << endl);
 
@@ -137,7 +142,12 @@
         LOGERR("answer_to_connection: no media_uri for: " << url << endl);
         return StreamProxy::Error;
     }
-    return realplg->doproxy() ? StreamProxy::Proxy : StreamProxy::Redirect;
+    StreamProxy::UrlTransReturn method = realplg->doproxy() ?
+        StreamProxy::Proxy : StreamProxy::Redirect;
+    if (method == StreamProxy::Proxy) {
+        fetcher = std::move(std::unique_ptr<NetFetch>(new CurlFetch(url)));
+    }
+    return method;
 }
 
 // Static
@@ -173,7 +183,7 @@
         int port = CDPluginServices::microhttpport();
         o_proxy = new StreamProxy(
             port,
-            std::bind(&translateurl, cdsrv, _1, _2));
+            std::bind(&translateurl, cdsrv, _1, _2, _3));
             
         if (nullptr == o_proxy) {
             LOGERR("PlgWithSlave: Proxy creation failed\n");