diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp
index f49834e59967c93fb069ff360bc8075c75d22576..9e139bc2e9113dfc507a2c525b7c0b9555e6bac9 100644
--- a/src/connectionmanager.cpp
+++ b/src/connectionmanager.cpp
@@ -500,7 +500,7 @@ public:
                               const std::string& name = "");
 
     void addNewMultiplexedSocket(const std::weak_ptr<DeviceInfo>& dinfo, const DeviceId& deviceId, const dht::Value::Id& vid, const std::shared_ptr<ConnectionInfo>& info);
-    void onPeerResponse(const PeerConnectionRequest& req);
+    void onPeerResponse(PeerConnectionRequest&& req);
     void onDhtConnected(const dht::crypto::PublicKey& devicePk);
 
 
@@ -1078,7 +1078,7 @@ ConnectionManager::Impl::sendChannelRequest(const std::weak_ptr<DeviceInfo>& din
 }
 
 void
-ConnectionManager::Impl::onPeerResponse(const PeerConnectionRequest& req)
+ConnectionManager::Impl::onPeerResponse(PeerConnectionRequest&& req)
 {
     auto device = req.owner->getLongId();
     if (auto info = infos_.getInfo(device, req.id)) {
@@ -1123,7 +1123,7 @@ ConnectionManager::Impl::onDhtConnected(const dht::crypto::PublicKey& devicePk)
                     shared->config_->logger->debug("[device {}] Received request", req.owner->getLongId());
             }
             if (req.isAnswer) {
-                shared->onPeerResponse(req);
+                shared->onPeerResponse(std::move(req));
             } else {
                 // Async certificate checking
                 shared->findCertificate(