aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/QXmppClient.cpp')
-rw-r--r--source/QXmppClient.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/source/QXmppClient.cpp b/source/QXmppClient.cpp
index a7f72b1b..400ff7e0 100644
--- a/source/QXmppClient.cpp
+++ b/source/QXmppClient.cpp
@@ -468,15 +468,21 @@ void QXmppClient::addInvokableInterface( QXmppInvokable *interface )
void QXmppClient::invokeInterfaceMethod( const QXmppRpcInvokeIq &iq )
{
QXmppStanza::Error error;
- QXmppInvokable *iface = m_interfaces.value(iq.interface());
+
+ const QStringList methodBits = iq.method().split('.');
+ if (methodBits.size() != 2)
+ return;
+ const QString interface = methodBits.first();
+ const QString method = methodBits.last();
+ QXmppInvokable *iface = m_interfaces.value(interface);
if (iface)
{
if ( iface->isAuthorized( iq.from() ) )
{
- if ( iface->interfaces().contains( iq.method() ) )
+ if ( iface->interfaces().contains(method) )
{
- QVariant result = iface->dispatch(iq.method().toLatin1(),
+ QVariant result = iface->dispatch(method.toLatin1(),
iq.arguments() );
QXmppRpcResponseIq resultIq;
resultIq.setId(iq.id());