aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppServer.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-27 15:17:18 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-27 15:17:18 +0000
commit9235370c59f46e5e73936f9ccd907ee51603e70b (patch)
tree445d05b451ceb3e41ae41fce12832dcb1d536087 /src/QXmppServer.cpp
parent5852e0fada1c9be06bd79328d3b6d3fe3dcde2d0 (diff)
downloadqxmpp-9235370c59f46e5e73936f9ccd907ee51603e70b.tar.gz
move ping handling to a plugin
Diffstat (limited to 'src/QXmppServer.cpp')
-rw-r--r--src/QXmppServer.cpp44
1 files changed, 14 insertions, 30 deletions
diff --git a/src/QXmppServer.cpp b/src/QXmppServer.cpp
index 5b6c7607..59ce4f63 100644
--- a/src/QXmppServer.cpp
+++ b/src/QXmppServer.cpp
@@ -32,12 +32,14 @@
#include "QXmppIncomingClient.h"
#include "QXmppIncomingServer.h"
#include "QXmppOutgoingServer.h"
-#include "QXmppPingIq.h"
#include "QXmppServer.h"
#include "QXmppServerExtension.h"
#include "QXmppServerPlugin.h"
#include "QXmppUtils.h"
+// Core plugins
+Q_IMPORT_PLUGIN(mod_ping)
+
class QXmppServerPrivate
{
public:
@@ -106,10 +108,7 @@ void QXmppServerPrivate::loadExtensions(QXmppServer *server)
continue;
foreach (const QString &key, plugin->keys())
- {
- QXmppServerExtension *extension;
server->addExtension(plugin->create(key));
- }
}
loaded = true;
}
@@ -437,36 +436,21 @@ void QXmppServer::handleStanza(QXmppStream *stream, const QDomElement &element)
}
else if (element.tagName() == "iq")
{
- // XEP-0199: XMPP Ping
- if (QXmppPingIq::isPingIq(element))
- {
- QXmppPingIq request;
- request.parse(element);
+ // we do not support the given IQ
+ QXmppIq request;
+ request.parse(element);
- QXmppIq response(QXmppIq::Result);
- response.setId(element.attribute("id"));
- response.setFrom(d->domain);
+ if (request.type() != QXmppIq::Error && request.type() != QXmppIq::Result)
+ {
+ QXmppIq response(QXmppIq::Error);
+ response.setId(request.id());
+ response.setFrom(domain());
response.setTo(request.from());
+ QXmppStanza::Error error(QXmppStanza::Error::Cancel,
+ QXmppStanza::Error::FeatureNotImplemented);
+ response.setError(error);
stream->sendPacket(response);
}
- // Other IQs
- else
- {
- QXmppIq request;
- request.parse(element);
-
- if (request.type() != QXmppIq::Error && request.type() != QXmppIq::Result)
- {
- QXmppIq response(QXmppIq::Error);
- response.setId(request.id());
- response.setFrom(domain());
- response.setTo(request.from());
- QXmppStanza::Error error(QXmppStanza::Error::Cancel,
- QXmppStanza::Error::FeatureNotImplemented);
- response.setError(error);
- stream->sendPacket(response);
- }
- }
}
} else {