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 | |
| parent | 5852e0fada1c9be06bd79328d3b6d3fe3dcde2d0 (diff) | |
| download | qxmpp-9235370c59f46e5e73936f9ccd907ee51603e70b.tar.gz | |
move ping handling to a plugin
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppServer.cpp | 44 | ||||
| -rw-r--r-- | src/src.pro | 10 |
2 files changed, 22 insertions, 32 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 { diff --git a/src/src.pro b/src/src.pro index ee3cf582..d141d4f1 100644 --- a/src/src.pro +++ b/src/src.pro @@ -18,7 +18,7 @@ VERSION = $$QXMPP_VERSION DESTDIR = $$QXMPP_LIBRARY_DIR # Header files -HEADERS += QXmppUtils.h \ +INSTALL_HEADERS = QXmppUtils.h \ QXmppArchiveIq.h \ QXmppArchiveManager.h \ QXmppBindIq.h \ @@ -68,6 +68,7 @@ HEADERS += QXmppUtils.h \ QXmppVCardManager.h \ QXmppVCard.h \ QXmppVersionIq.h +HEADERS += $$INSTALL_HEADERS # Source files SOURCES += QXmppUtils.cpp \ @@ -119,12 +120,17 @@ SOURCES += QXmppUtils.cpp \ QXmppVCard.cpp \ QXmppVersionIq.cpp +# Plugins +DEFINES += QT_STATICPLUGIN +HEADERS += server/mod_ping.h +SOURCES += server/mod_ping.cpp + # pkg-config support CONFIG += create_pc create_prl no_install_prl QMAKE_PKGCONFIG_DESTDIR = $$QXMPP_LIBRARY_DIR/pkgconfig # Installation -headers.files = $$HEADERS +headers.files = $$INSTALL_HEADERS headers.path = $$[QT_INSTALL_PREFIX]/include/qxmpp target.path = $$[QT_INSTALL_PREFIX]/lib INSTALLS += headers target |
