summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandr Akulich <akulichalexander@gmail.com>2015-08-05 09:30:16 +0500
committerAlexandr Akulich <akulichalexander@gmail.com>2015-08-29 17:10:35 +0500
commit44a8dba6bb038f99e6e90e275d07279375e7ba3c (patch)
tree20ea558b14af9a01a89066aa7bd43611fbdb0d40
parent9c5829933de502363fc36c0d0f3251c4de247cfa (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.cpp12
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);