summaryrefslogtreecommitdiff
path: root/science/gsystem/files/patch-network-reconnect.diff
diff options
context:
space:
mode:
Diffstat (limited to 'science/gsystem/files/patch-network-reconnect.diff')
-rw-r--r--science/gsystem/files/patch-network-reconnect.diff266
1 files changed, 0 insertions, 266 deletions
diff --git a/science/gsystem/files/patch-network-reconnect.diff b/science/gsystem/files/patch-network-reconnect.diff
deleted file mode 100644
index 9129a620b0da..000000000000
--- a/science/gsystem/files/patch-network-reconnect.diff
+++ /dev/null
@@ -1,266 +0,0 @@
-Index: src/worldengine/GXmlDataController.cpp
-===================================================================
---- src/worldengine/GXmlDataController.cpp (revision 547)
-+++ src/worldengine/GXmlDataController.cpp (working copy)
-@@ -1306,6 +1306,14 @@
-
- void GXmlDataController::sendUserMessage(QString message, QString destination)
- {
-+ //@todo: this doesn't work???
-+// XMPP::Jid destjid;
-+// destjid.set(destination);
-+// if (!destjid.isValid())
-+// {
-+// qWarning(QString("Destination %1 not a valid JID, not sending message!").arg(destination));
-+// return;
-+// }
- QDomDocument d;
- QDomElement e = d.createElement("message");
- d.appendChild(e);
-Index: src/worldengine/GXmppNetwork.cpp
-===================================================================
---- src/worldengine/GXmppNetwork.cpp (revision 547)
-+++ src/worldengine/GXmppNetwork.cpp (working copy)
-@@ -94,19 +94,22 @@
- : GXmlNetwork(parent,name),
- Active(FALSE),
- Connected(FALSE),
-+ Connecting(FALSE),
- XmppLayerCreated(FALSE),
- XmppConnector(NULL),
- Tls(NULL),
- TlsHandler(NULL),
- Stream(NULL),
- NetworkId(full_jid),
-- MessageQueue(new GXmppMessageQueue())
-+ MessageQueue(new GXmppMessageQueue()),
-+ StayConnected(FALSE)
- {
- connect(qApp,SIGNAL(aboutToQuit()),this,SLOT(closeNetwork()));
-
-- QTimer* heartbeat_timer = new QTimer(this,"heartbeat timer");
-- connect(heartbeat_timer,SIGNAL(timeout()),this,SLOT(sendHeartbeat()));
-- heartbeat_timer->start(55000);
-+// QTimer* heartbeat_timer = new QTimer(this,"heartbeat timer");
-+// connect(heartbeat_timer,SIGNAL(timeout()),this,SLOT(sendHeartbeat()));
-+// heartbeat_timer->start(55000);
-+ // see XMPP::ClientStream::setNoopTime() which is now used
- }
-
- GXmppNetwork::~GXmppNetwork()
-@@ -123,8 +126,9 @@
- {
- if (XmppLayerCreated)
- {
-- qWarning("XMPP Layer already created!");
-- return true;
-+ qWarning("XMPP Layer already created! Destroying it first...");
-+ this->deleteXmppLayer(true);
-+ qWarning("XMPP Layer now destroyed");
- }
-
- //XMPP related setup
-@@ -241,6 +245,11 @@
- XmppConnector=NULL;
- }
-
-+ this->Connected = false;
-+ this->Connecting = false;
-+ this->Active = false;
-+ this->XmppLayerCreated = false;
-+
- return true;
- }
-
-@@ -296,6 +305,14 @@
-
- bool GXmppNetwork::initNetwork()
- {
-+ if (this->Connecting)
-+ {
-+ qWarning("Already in the process of connecting the network");
-+ return false;
-+ }
-+
-+ this->Connecting = true;
-+
- QMutexLocker lock(this);
- if (!this->createXmppLayer())
- {
-@@ -332,7 +349,7 @@
- Tls->setCertificateStore(certStore);
- }
-
--// Stream->setNoopTime(55000); // every 55 seconds
-+ Stream->setNoopTime(55000); // every 55 seconds
- qDebug("Connecting XMPP network with JID " + this->getNetworkId());
- qDebug("Warning: if you get a segmentation fault next, this probably means");
- qDebug(" that the server you want to connect to (the domain part");
-@@ -344,15 +361,22 @@
- return true;
- }
-
-+void GXmppNetwork::reconnectNetwork()
-+{
-+ QTimer::singleShot(100,this,SLOT(initNetwork()));
-+}
-+
- bool GXmppNetwork::closeNetwork()
- {
- QMutexLocker lock(this);
-+ this->StayConnected = false;
- if (this->Connected)
- {
- qDebug("Disconnecting XMPP Stream...");
- this->Stream->close();
- this->Connected = false;
- this->Active = false; // correct place?
-+ this->Connecting = false;
- return true;
- }
- else
-@@ -379,6 +403,15 @@
- qWarning("Destination is empty, not sending message!");
- return false;
- }
-+
-+ //@todo this doesn't seem to be functional(??)
-+ XMPP::Jid destjid(destination);
-+ if (!destjid.isValid())
-+ {
-+ qWarning(QString("Destination %1 not a valid JID, not sending message!").arg(destination));
-+ return false;
-+ }
-+
- // qDebug(QString("type range for user events: %1 to %2").arg(QString::number(QEvent::User)).arg(QString::number(QEvent::MaxUser)));
- QDomDocument d;
- QDomElement e = d.createElement("message");
-@@ -386,15 +419,24 @@
- e.setAttribute("to",destination);
- e.appendChild(d.importNode(data,"true"));
-
-- if (!this->isSubscribed(destination))
-+ if (!this->isSubscribed(destination) || !this->isConnected())
- {
-- qWarning(QString("Delaying sending of message, destination %1 is not yet available").arg(destination));
-+ if (!this->isConnected() && this->StayConnected)
-+ {
-+ qWarning("Network is not connected! Reconnecting...");
-+ this->reconnectNetwork();
-+ }
-+ else
-+ {
-+ qWarning(QString("Delaying sending of message, destination %1 is not yet available").arg(destination));
-+ this->makeDestinationAvailable(destination);
-+ }
- this->MessageQueue->add(destination,d.toString());
-- this->makeDestinationAvailable(destination);
- }
- else
- {
-- QApplication::postEvent(this,new QNetworkSendEvent(d.toString()));
-+ this->send(d.toString());
-+// QApplication::postEvent(this,new QNetworkSendEvent(d.toString()));
- }
-
- return true;
-@@ -455,7 +497,7 @@
-
- bool GXmppNetwork::isConnected()
- {
-- if (this->Active && this->Connected && Stream->isAuthenticated())
-+ if (this->Active && this->Connected && Stream->isAuthenticated() && Stream->isActive())
- return true;
- else
- return false;
-@@ -505,7 +547,9 @@
-
- void GXmppNetwork::clientStreamConnected()
- {
-+ this->Connecting = false;
- this->Connected = true;
-+ this->StayConnected = true;
- qDebug("XMPP Stream connected");
- }
-
-@@ -553,7 +597,12 @@
-
- void GXmppNetwork::clientStreamConnectionClosed()
- {
-- qDebug("XMPP Stream connection closed");
-+ qDebug("XMPP Stream connection closed.");
-+ if (this->StayConnected)
-+ {
-+ qDebug("Using timer for delayed recreation of the XMPP layer...");
-+ this->reconnectNetwork();
-+ }
- }
-
- void GXmppNetwork::clientStreamDelayedCloseFinished()
-@@ -765,7 +814,7 @@
- }
- else if(err == XMPP::ClientStream::ErrProtocol)
- {
-- s = "conntest: XMPP protocol error";
-+ s = "XMPP protocol error";
- }
- else if(err == XMPP::ClientStream::ErrStream)
- {
-@@ -870,6 +919,12 @@
- s = "broken security layer (SASL)";
-
- qWarning(s);
-+
-+ if (!this->isConnected() && this->StayConnected)
-+ {
-+ qWarning("XMPP Stream got disconnected, reconnecting...");
-+ QTimer::singleShot(100,this,SLOT(initNetwork()));
-+ }
- }
-
- //END XMPP slots and signals for network management //
-Index: src/worldengine/GXmppNetwork.h
-===================================================================
---- src/worldengine/GXmppNetwork.h (revision 547)
-+++ src/worldengine/GXmppNetwork.h (working copy)
-@@ -81,6 +81,11 @@
- bool Connected;
-
- /**
-+ * Currently connecting?
-+ */
-+ bool Connecting;
-+
-+ /**
- * XMPP related objects created.
- */
- bool XmppLayerCreated;
-@@ -130,6 +135,14 @@
- */
- GXmppMessageQueue* MessageQueue;
-
-+ /**
-+ * Set to true if the network should stay connected.
-+ * In this case reinitializing the network will be done
-+ * automatically if the network got disconnected.
-+ * closeNetwork() sets this to false before shutting down.
-+ */
-+ bool StayConnected;
-+
- protected slots:
-
- /**
-@@ -208,6 +221,13 @@
- * Initialization.
- */
- virtual bool initNetwork();
-+
-+ /**
-+ * Issues a single shot timer to call initNetwork()
-+ * Useful when wanting to reconnect but being in the middle
-+ * of something (that is, in a slot)
-+ */
-+ virtual void reconnectNetwork();
-
- /**
- * Shuts down the network.