diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp
index 441c0e576..19ff9714d 100644
--- a/src/base/bittorrent/session.cpp
+++ b/src/base/bittorrent/session.cpp
@@ -1354,7 +1354,11 @@ void Session::configure(libtorrent::settings_pack &settingsPack)
     settingsPack.set_int(libt::settings_pack::active_tracker_limit, -1);
     settingsPack.set_int(libt::settings_pack::active_dht_limit, -1);
     settingsPack.set_int(libt::settings_pack::active_lsd_limit, -1);
-    settingsPack.set_int(libt::settings_pack::alert_queue_size, std::numeric_limits<int>::max() / 2);
+    // 1 active torrent force 2 connections. If you have more active torrents * 2 than connection limit,
+    // connection limit will get extended. Multiply max connections or active torrents by 10 for queue.
+    // Ignore -1 values because we don't want to set a max int message queue
+    settingsPack.set_int(libt::settings_pack::alert_queue_size, std::max(1000,
+        10 * std::max(maxActiveTorrents() * 2, maxConnections())));
 
     // Outgoing ports
     settingsPack.set_int(libt::settings_pack::outgoing_port, outgoingPortsMin());
@@ -1629,7 +1633,11 @@ void Session::configure(libtorrent::session_settings &sessionSettings)
     sessionSettings.active_tracker_limit = -1;
     sessionSettings.active_dht_limit = -1;
     sessionSettings.active_lsd_limit = -1;
-    sessionSettings.alert_queue_size = std::numeric_limits<int>::max() / 2;
+    // 1 active torrent force 2 connections. If you have more active torrents * 2 than connection limit,
+    // connection limit will get extended. Multiply max connections or active torrents by 10 for queue.
+    // Ignore -1 values because we don't want to set a max int message queue
+    sessionSettings.alert_queue_size = std::max(1000,
+        10 * std::max(maxActiveTorrents() * 2, maxConnections()));
 
     // Outgoing ports
     sessionSettings.outgoing_ports = std::make_pair(outgoingPortsMin(), outgoingPortsMax());
diff --git a/src/base/bittorrent/torrenthandle.cpp b/src/base/bittorrent/torrenthandle.cpp
index 3c6cb1f38..18104d2cc 100644
--- a/src/base/bittorrent/torrenthandle.cpp
+++ b/src/base/bittorrent/torrenthandle.cpp
@@ -1663,11 +1663,15 @@ void TorrentHandle::handleSaveResumeDataFailedAlert(const libtorrent::save_resum
 
 void TorrentHandle::handleFastResumeRejectedAlert(const libtorrent::fastresume_rejected_alert *p)
 {
+    qDebug("/!\\ Fast resume failed for %s, reason: %s", qUtf8Printable(name()), p->message().c_str());
+
+    updateStatus();
     if (p->error.value() == libt::errors::mismatching_file_size) {
         // Mismatching file size (files were probably moved)
-        pause();
-        m_hasMissingFiles = true;
         LogMsg(tr("File sizes mismatch for torrent '%1', pausing it.").arg(name()), Log::CRITICAL);
+        m_hasMissingFiles = true;
+        if (!isPaused())
+            pause();
     }
     else {
         LogMsg(tr("Fast resume data was rejected for torrent '%1'. Reason: %2. Checking again...")
