aboutsummaryrefslogtreecommitdiff
path: root/src
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
parent5852e0fada1c9be06bd79328d3b6d3fe3dcde2d0 (diff)
downloadqxmpp-9235370c59f46e5e73936f9ccd907ee51603e70b.tar.gz
move ping handling to a plugin
Diffstat (limited to 'src')
-rw-r--r--src/QXmppServer.cpp44
-rw-r--r--src/src.pro10
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