telepathy-qt: BaseConnection::createChannel: Made ID inspection to be conditional.

Alexandr Akulich kaffeine at kemper.freedesktop.org
Sat Aug 29 05:49:54 PDT 2015


Module: telepathy-qt
Branch: master
Commit: 44a8dba6bb038f99e6e90e275d07279375e7ba3c
URL:    http://cgit.freedesktop.org/telepathy/telepathy-qt/commit/?id=44a8dba6bb038f99e6e90e275d07279375e7ba3c

Author: Alexandr Akulich <akulichalexander at gmail.com>
Date:   Wed Aug  5 09:30:16 2015 +0500

BaseConnection::createChannel: Made ID inspection to be conditional.

Certain connection managers always resolve ID in createChannel callback. To
improve such cases, resolve targetID/initiatorID only if it's not resolved yet.

---

 TelepathyQt/base-connection.cpp |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/TelepathyQt/base-connection.cpp b/TelepathyQt/base-connection.cpp
index 1694e69..37275ac 100644
--- a/TelepathyQt/base-connection.cpp
+++ b/TelepathyQt/base-connection.cpp
@@ -391,8 +391,8 @@ Tp::BaseChannelPtr BaseConnection::createChannel(const QVariantMap &request, boo
     if (error->isValid())
         return BaseChannelPtr();
 
-    QString targetID;
-    if (channel->targetHandle() != 0) {
+    QString targetID = channel->targetID();
+    if ((channel->targetHandle() != 0) && targetID.isEmpty()) {
         QStringList list = mPriv->inspectHandlesCB(channel->targetHandleType(),  UIntList() << channel->targetHandle(), error);
         if (error->isValid()) {
             debug() << "BaseConnection::createChannel: could not resolve handle " << channel->targetHandle();
@@ -401,14 +401,15 @@ Tp::BaseChannelPtr BaseConnection::createChannel(const QVariantMap &request, boo
             debug() << "BaseConnection::createChannel: found targetID " << *list.begin();
             targetID = *list.begin();
         }
+        channel->setTargetID(targetID);
     }
 
     if (request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle"))) {
         channel->setInitiatorHandle(request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle")).toUInt());
     }
 
-    QString initiatorID;
-    if (channel->initiatorHandle() != 0) {
+    QString initiatorID = channel->initiatorID();
+    if ((channel->initiatorHandle() != 0) && initiatorID.isEmpty()) {
         QStringList list = mPriv->inspectHandlesCB(HandleTypeContact, UIntList() << channel->initiatorHandle(), error);
         if (error->isValid()) {
             debug() << "BaseConnection::createChannel: could not resolve handle " << channel->initiatorHandle();
@@ -417,9 +418,8 @@ Tp::BaseChannelPtr BaseConnection::createChannel(const QVariantMap &request, boo
             debug() << "BaseConnection::createChannel: found initiatorID " << *list.begin();
             initiatorID = *list.begin();
         }
+        channel->setInitiatorID(initiatorID);
     }
-    channel->setInitiatorID(initiatorID);
-    channel->setTargetID(targetID);
     channel->setRequested(suppressHandler);
 
     channel->registerObject(error);



More information about the telepathy-commits mailing list