diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-27 15:17:18 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-08-27 15:17:18 +0000 |
| commit | 9235370c59f46e5e73936f9ccd907ee51603e70b (patch) | |
| tree | 445d05b451ceb3e41ae41fce12832dcb1d536087 /src/QXmppServer.cpp | |
| parent | 5852e0fada1c9be06bd79328d3b6d3fe3dcde2d0 (diff) | |
| download | qxmpp-9235370c59f46e5e73936f9ccd907ee51603e70b.tar.gz | |
move ping handling to a plugin
Diffstat (limited to 'src/QXmppServer.cpp')
| -rw-r--r-- | src/QXmppServer.cpp | 44 |
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 { |
