@@ -635,8 +635,9 @@ bool QXmppServer::listenForServers(const QHostAddress &address, quint16 port)
635
635
// / Route an XMPP stanza.
636
636
// /
637
637
// / \param element
638
+ // / \param recipient
638
639
639
- bool QXmppServer::sendElement (const QDomElement &element)
640
+ bool QXmppServer::sendElement (const QDomElement &element, const QString& resource )
640
641
{
641
642
// serialize data
642
643
QByteArray data;
@@ -645,22 +646,33 @@ bool QXmppServer::sendElement(const QDomElement &element)
645
646
helperToXmlAddDomElement (&xmlStream, element, omitNamespaces);
646
647
647
648
// route data
648
- return d->routeData (element.attribute (" to" ), data);
649
+ if (!resource.isEmpty ()) {
650
+ // ... to explicitly specified resource. Override original resource from "to" (if any)
651
+ return d->routeData (QXmppUtils::jidToBareJid (element.attribute (" to" )) + " /" + resource, data);
652
+ } else {
653
+ return d->routeData (element.attribute (" to" ), data);
654
+ }
649
655
}
650
656
651
657
// / Route an XMPP packet.
652
658
// /
653
659
// / \param packet
660
+ // / \param recipient
654
661
655
- bool QXmppServer::sendPacket (const QXmppStanza &packet)
662
+ bool QXmppServer::sendPacket (const QXmppStanza &packet, const QString& resource )
656
663
{
657
664
// serialize data
658
665
QByteArray data;
659
666
QXmlStreamWriter xmlStream (&data);
660
667
packet.toXml (&xmlStream);
661
668
662
669
// route data
663
- return d->routeData (packet.to (), data);
670
+ if (!resource.isEmpty ()) {
671
+ // ... to explicitly specified resource. Override original resource from "to" (if any)
672
+ return d->routeData (QXmppUtils::jidToBareJid (packet.to ()) + " /" + resource, data);
673
+ } else {
674
+ return d->routeData (packet.to (), data);
675
+ }
664
676
}
665
677
666
678
// / Add a new incoming client \a stream.
0 commit comments