Index: trunk/BNC/src/bncnetqueryv2.cpp
===================================================================
--- trunk/BNC/src/bncnetqueryv2.cpp	(revision 10802)
+++ trunk/BNC/src/bncnetqueryv2.cpp	(revision 10960)
@@ -16,4 +16,6 @@
 
 #include <iostream>
+
+#include <QTimer>
 
 #include "bncnetqueryv2.h"
@@ -34,4 +36,5 @@
   _firstData = true;
   _status    = init;
+  _timeOut   = 20000;
 
   bncSettings settings;
@@ -215,8 +218,26 @@
   // Wait Loop
   // ---------
+  bool timedOut = false;
   if (!_reply->bytesAvailable()) {
+    QTimer timer;
+    timer.setSingleShot(true);
+    connect(&timer, SIGNAL(timeout()), _eventLoop, SLOT(quit()));
+    timer.start(_timeOut);
     _eventLoop->exec();
+    timedOut = !timer.isActive();
   }
   if (!_reply) {
+    return;
+  }
+
+  // Timeout: neither new data arrived nor did the request finish
+  // (e.g. connection silently dropped by a NAT/firewall)
+  // --------------------------------------------------------------
+  if (timedOut) {
+    _status = error;
+    emit newMessage(_url.path().toLatin1().replace(0,1,"")
+                    + ": Read timeout", true);
+    disconnect(_reply, SIGNAL(finished()), this, SLOT(slotFinished()));
+    _reply->abort();
     return;
   }
