From 7729fa4a4727c724df9e31cc524334f0629c558b Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Tue, 10 Aug 2010 09:04:12 +0000 Subject: RPC: splitting methodName should not be done at the QXmppRpcIq level, it is perfectly legitimate to not use the INTERFACE.METHOD convention in a Jabber-RPC IQ --- source/QXmppClient.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'source/QXmppClient.cpp') 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()); -- cgit v1.2.3