Index: trunk/BNS/bnscaster.cpp
===================================================================
--- trunk/BNS/bnscaster.cpp	(revision 2641)
+++ trunk/BNS/bnscaster.cpp	(revision 2643)
@@ -93,5 +93,5 @@
 // Start the Communication with NTRIP Caster
 ////////////////////////////////////////////////////////////////////////////
-void t_bnscaster::open() {
+void t_bnscaster::open(bool force) {
 
   if (_mountpoint.isEmpty()) {
@@ -99,7 +99,10 @@
   }
 
-  if (_outSocket != 0 && 
-      _outSocket->state() == QAbstractSocket::ConnectedState) {
-    return;
+  if (_outSocket != 0) {
+    if ( _outSocket->state() == QAbstractSocket::HostLookupState ||
+         _outSocket->state() == QAbstractSocket::ConnectingState ||
+         _outSocket->state() == QAbstractSocket::ConnectedState ) {
+      return;
+    }
   }
 
@@ -110,5 +113,6 @@
     _sOpenTrial = 4;
   }
-  if (_outSocketOpenTime.isValid() &&
+  if (!force &&
+      _outSocketOpenTime.isValid() &&
       _outSocketOpenTime.secsTo(QDateTime::currentDateTime()) < minDt) {
     return;
@@ -217,11 +221,17 @@
 ////////////////////////////////////////////////////////////////////////////
 void t_bnscaster::write(char* buffer, unsigned len) {
-  if (_outSocket) {
-    unsigned bytesWritten = _outSocket->write(buffer, len);
-    _outSocket->flush();
-    if (bytesWritten != len) {
-      emit(newMessage("Broadcaster: cannot write to socket, closing"));
-      delete _outSocket;
-      _outSocket = 0;
+  for (int iTrial = 1; iTrial <= 2; ++iTrial) {
+    if (_outSocket) {
+      unsigned bytesWritten = _outSocket->write(buffer, len);
+      if (bytesWritten == len) {
+        _outSocket->flush();
+        break;
+      }
+      else {
+        emit(newMessage("Broadcaster: cannot write to socket, closing"));
+        delete _outSocket;
+        _outSocket = 0;
+        open(true);
+      }
     }
   }
Index: trunk/BNS/bnscaster.h
===================================================================
--- trunk/BNS/bnscaster.h	(revision 2641)
+++ trunk/BNS/bnscaster.h	(revision 2643)
@@ -10,5 +10,5 @@
   t_bnscaster(const QString& mountpoint);
   virtual ~t_bnscaster();
-  void open();
+  void open(bool force = false);
   void write(char* buffer, unsigned len);
   void printAscii(const QString& line);
