Index: trunk/BNC/upload/bncuploadcaster.cpp
===================================================================
--- trunk/BNC/upload/bncuploadcaster.cpp	(revision 3209)
+++ trunk/BNC/upload/bncuploadcaster.cpp	(revision 3210)
@@ -191,5 +191,4 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncUploadCaster::deleteSafely() {
-  QMutexLocker locker(&_mutex);
   _isToBeDeleted = true;
   if (!isRunning()) {
@@ -214,12 +213,10 @@
 void bncUploadCaster::run() {
   while (true) {
-    {
-      QMutexLocker locker(&_mutex);
-      if (_isToBeDeleted) {
-        QThread::quit();
-        deleteLater();
-        return;
-      }
-    }
+    if (_isToBeDeleted) {
+      QThread::quit();
+      deleteLater();
+      return;
+    }
+    open();
     uploadClockOrbitBias();
     msleep(10);
@@ -290,5 +287,5 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncUploadCaster::write(char* buffer, unsigned len) {
-  if (_outSocket) {
+  if (_outSocket && _outSocket->state() == QAbstractSocket::ConnectedState) {
     _outSocket->write(buffer, len);
     _outSocket->flush();
@@ -304,5 +301,9 @@
   // Append to buffer
   // ----------------
+  const int MAXBUFFSIZE = 1000;
   _rtnetStreamBuffer.append(QByteArray(buffer, bufLen));
+  if (_rtnetStreamBuffer.size() > MAXBUFFSIZE) {
+    _rtnetStreamBuffer = _rtnetStreamBuffer.right(MAXBUFFSIZE);
+  }
 }
 
@@ -322,4 +323,5 @@
     for (int ii = 0; ii < hlpLines.size(); ii++) {
       if      (hlpLines[ii].indexOf('*') != -1) {
+        lines.clear();
         QTextStream in(hlpLines[ii].toAscii());
         QString hlp;
@@ -338,6 +340,4 @@
     return;
   }
-
-  this->open();
 
   unsigned year, month, day;
@@ -452,5 +452,5 @@
   }
   
-  if (_outSocket && (co.NumberOfGPSSat > 0 || co.NumberOfGLONASSSat > 0)) {
+  if (co.NumberOfGPSSat > 0 || co.NumberOfGLONASSSat > 0) {
     char obuffer[CLOCKORBIT_BUFFERSIZE];
   
@@ -461,5 +461,5 @@
   }
   
-  if (_outSocket && (bias.NumberOfGPSSat > 0 || bias.NumberOfGLONASSSat > 0)) {
+  if (bias.NumberOfGPSSat > 0 || bias.NumberOfGLONASSSat > 0) {
     char obuffer[CLOCKORBIT_BUFFERSIZE];
     int len = MakeBias(&bias, BTYPE_AUTO, 0, obuffer, sizeof(obuffer));
