diff --git a/src/im/message_engine.h b/src/im/message_engine.h
index 6d3991ee5ba84dae38cb95169419f9e0c47f7895..1e217cc724f3c9673ff72f9a30781f4ecdd33660 100644
--- a/src/im/message_engine.h
+++ b/src/im/message_engine.h
@@ -70,7 +70,7 @@ public:
 
 private:
 
-    static const constexpr unsigned MAX_RETRIES = 3;
+    static const constexpr unsigned MAX_RETRIES = 1;
     static const std::chrono::minutes RETRY_PERIOD;
     using clock = std::chrono::steady_clock;
 
diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp
index a3965a24e5d3cda7d018fc4b5624f5fcf71c5bd1..35281d3c424908d915851550878850206cc02113 100644
--- a/src/ringdht/ringaccount.cpp
+++ b/src/ringdht/ringaccount.cpp
@@ -3362,7 +3362,7 @@ RingAccount::sendTextMessage(const std::string& to, const std::map<std::string,
     // Timeout cleanup
     std::weak_ptr<RingAccount> wshared = shared();
     Manager::instance().scheduleTask([wshared, confirm, token]() {
-        if (not confirm->replied and not confirm->listenTokens.empty()) {
+        if (not confirm->replied) {
             if (auto this_ = wshared.lock()) {
                 RING_DBG("[Account %s] [message %" PRIx64 "] timeout", this_->getAccountID().c_str(), token);
                 for (auto& t : confirm->listenTokens)