diff --git a/include/opendht/dht_proxy_client.h b/include/opendht/dht_proxy_client.h
index aeb21bc15d22fff7857a3b0dca1ed43a5c112ab1..409187353e920af7771ac87a1badc942896ec9ba 100644
--- a/include/opendht/dht_proxy_client.h
+++ b/include/opendht/dht_proxy_client.h
@@ -57,7 +57,7 @@ public:
         std::function<void()> loopSignal, const std::string& serverHost,
         const std::string& pushClientId = "", std::shared_ptr<dht::Logger> logger = {});
 
-    void setHeaderFields(std::shared_ptr<http::Request> request);
+    void setHeaderFields(http::Request& request);
 
     virtual void setPushNotificationToken(const std::string& token) override {
 #ifdef OPENDHT_PUSH_NOTIFICATIONS
diff --git a/src/dht_proxy_client.cpp b/src/dht_proxy_client.cpp
index 77f7a6c46c201e194380adccab3a26aca28698e0..a984a5adcc75b77069bf7f0cf022c2c502441982 100644
--- a/src/dht_proxy_client.cpp
+++ b/src/dht_proxy_client.cpp
@@ -257,12 +257,12 @@ DhtProxyClient::periodic(const uint8_t*, size_t, SockAddr)
 }
 
 void
-DhtProxyClient::setHeaderFields(std::shared_ptr<http::Request> request){
-    request->set_header_field(restinio::http_field_t::host,
-                             (serverHostService_.first + ":" + serverHostService_.second).c_str());
-    request->set_header_field(restinio::http_field_t::user_agent, "RESTinio client");
-    request->set_header_field(restinio::http_field_t::accept, "*/*");
-    request->set_header_field(restinio::http_field_t::content_type, "application/json");
+DhtProxyClient::setHeaderFields(http::Request& request){
+    request.set_header_field(restinio::http_field_t::host,
+                             serverHostService_.first + ":" + serverHostService_.second);
+    request.set_header_field(restinio::http_field_t::user_agent, "RESTinio client");
+    request.set_header_field(restinio::http_field_t::accept, "*/*");
+    request.set_header_field(restinio::http_field_t::content_type, "application/json");
 }
 
 void
@@ -277,7 +277,7 @@ DhtProxyClient::get(const InfoHash& key, GetCallback cb, DoneCallback donecb, Va
         request->set_connection_type(restinio::http_connection_header_t::keep_alive);
         request->set_target("/" + key.toString());
         request->set_method(restinio::http_method_get());
-        setHeaderFields(request);
+        setHeaderFields(*request);
 
         auto opstate = std::make_shared<OperationState>();
         Value::Filter filter = w.empty() ? f : f.chain(w.getFilter());
@@ -430,7 +430,7 @@ DhtProxyClient::doPut(const InfoHash& key, Sp<Value> val, DoneCallback cb, time_
     try {
         request->set_target("/" + key.toString());
         request->set_method(restinio::http_method_post());
-        setHeaderFields(request);
+        setHeaderFields(*request);
 
         auto json = val->toJson();
         if (permanent) {
@@ -624,7 +624,7 @@ DhtProxyClient::queryProxyInfo(std::shared_ptr<InfoState> infoState, const sa_fa
         request->set_connection_type(restinio::http_connection_header_t::keep_alive);
         request->set_target("/");
         request->set_method(restinio::http_method_get());
-        setHeaderFields(request);
+        setHeaderFields(*request);
 
         auto ok = std::make_shared<std::atomic_bool>();
         ok->store(true);
@@ -929,7 +929,7 @@ DhtProxyClient::handleExpireListener(const asio::error_code &ec, const InfoHash&
             try {
                 request->set_target("/" + key.toString());
                 request->set_method(restinio::http_method_unsubscribe());
-                setHeaderFields(request);
+                setHeaderFields(*request);
 
                 Json::Value body;
                 body["key"] = deviceKey_;
@@ -997,7 +997,7 @@ DhtProxyClient::sendListen(const restinio::http_request_header_t header,
     auto reqid = request->id();
     try {
         request->set_header(header);
-        setHeaderFields(request);
+        setHeaderFields(*request);
         if (method == ListenMethod::LISTEN)
             request->set_connection_type(restinio::http_connection_header_t::keep_alive);
         std::string body;