diff --git a/src/manager.cpp b/src/manager.cpp
index 181a668b41be4280947fd3886e8ceb47d0721640..9344bba7f97937f455aa8e799990c85426d1dbad 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -707,7 +707,7 @@ Manager::init(const std::string &config_file)
 #endif
 
 #define PJSIP_TRY(ret) do {                                  \
-        if (ret != PJ_SUCCESS)                               \
+        if ((ret) != PJ_SUCCESS)                               \
             throw std::runtime_error(#ret " failed");        \
     } while (0)
 
diff --git a/src/manager.h b/src/manager.h
index f5b3a430a5e278b6de99dbc720a194bd531c9e23..f50bf67c21ee353542a897eab5595c5d3c44d8c4 100644
--- a/src/manager.h
+++ b/src/manager.h
@@ -899,7 +899,7 @@ private:
 // Helper to install a callback to be called once by the main event loop
 template<typename Callback>
 static void runOnMainThread(Callback&& cb) {
-    Manager::instance().scheduler().run([cb = std::move(cb)]() mutable {
+    Manager::instance().scheduler().run([cb = std::forward<Callback>(cb)]() mutable {
         cb();
     });
 }
diff --git a/src/ringdht/namedirectory.cpp b/src/ringdht/namedirectory.cpp
index 1d19143ab94e73e4c53257217419001b0f52c8cc..c4dd81bec53ee9de8e76418fcdaf470886cabc53 100644
--- a/src/ringdht/namedirectory.cpp
+++ b/src/ringdht/namedirectory.cpp
@@ -193,12 +193,12 @@ void NameDirectory::lookupName(const std::string& n, LookupCallback cb)
         }
 
         restbed::Uri uri(HTTPS_PROTO + serverHost_ + QUERY_NAME + name);
+        RING_DBG("Name lookup for %s: %s", name.c_str(), uri.to_string().c_str());
+
         auto request = std::make_shared<restbed::Request>(std::move(uri));
         request->set_header("Accept", "*/*");
         request->set_header("Host", serverHost_);
 
-        RING_DBG("Name lookup for %s: %s", name.c_str(), uri.to_string().c_str());
-
         auto ret = restbed::Http::async(request, [this,cb,name](const std::shared_ptr<restbed::Request>&,
                                                      const std::shared_ptr<restbed::Response>& reply) {
             auto code = reply->get_status_code();
diff --git a/src/threadloop.h b/src/threadloop.h
index d687fb58a6e4bf4772dbcebb28a2a4532c076a0b..4eaa8ca9e42b8527fafb7cce6ff57b76b58bab05 100644
--- a/src/threadloop.h
+++ b/src/threadloop.h
@@ -117,7 +117,7 @@ public:
             throw std::runtime_error("Can not call wait outside thread context");
 
         std::unique_lock<std::mutex> lk(mutex_);
-        cv_.wait(lk, [this, p = std::move(pred)]{ return isStopping() || p(); });
+        cv_.wait(lk, [this, p = std::forward<Pred>(pred)]{ return isStopping() || p(); });
     }
 
 private: