diff options
author | Alexandr Akulich <akulichalexander@gmail.com> | 2015-08-05 09:30:16 +0500 |
---|---|---|
committer | Alexandr Akulich <akulichalexander@gmail.com> | 2015-08-29 17:10:35 +0500 |
commit | 44a8dba6bb038f99e6e90e275d07279375e7ba3c (patch) | |
tree | 20ea558b14af9a01a89066aa7bd43611fbdb0d40 | |
parent | 9c5829933de502363fc36c0d0f3251c4de247cfa (diff) |
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.
-rw-r--r-- | TelepathyQt/base-connection.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/TelepathyQt/base-connection.cpp b/TelepathyQt/base-connection.cpp index 1694e69a..37275ac4 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); |