[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9
Maximiliano Curia
maxy at moszumanska.debian.org
Mon May 9 09:08:22 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=bf0613c
The following commit has been merged in the master branch:
commit bf0613cc10c6dfe82ce0af5ff5f79091618468c3
Author: Marcin Ziemiński <zieminn at gmail.com>
Date: Wed Aug 6 14:30:34 2014 +0200
Change OTR message state to plaintext on channel exit.
Signed-off-by: Marcin Ziemiński <zieminn at gmail.com>
---
otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp | 12 +++++++++++-
otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h | 2 ++
otr-proxy/KTpProxy/otr-session.cpp | 15 +++++++++++++++
otr-proxy/KTpProxy/otr-session.h | 2 ++
otr-proxy/test/otr-test.cpp | 11 +++++++++++
5 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp
index cda76f0..3bc09a9 100644
--- a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp
+++ b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp
@@ -106,7 +106,7 @@ OtrProxyChannel::Adaptee::Adaptee(OtrProxyChannel *pc,
<< " Account name: " << context.accountName
<< " recipient name: " << context.recipientName
<< " protocol: " << context.protocol;
- connect(chan.data(), SIGNAL(invalidated(Tp::DBusProxy*,const QString&,const QString&)), SIGNAL(closed()));
+ connect(chan.data(), SIGNAL(invalidated(Tp::DBusProxy*,const QString&,const QString&)), SLOT(onChannelClosed()));
connect(&otrSes, SIGNAL(trustLevelChanged(TrustLevel)), SLOT(onTrustLevelChanged(TrustLevel)));
connect(&otrSes, SIGNAL(sessionRefreshed()), SIGNAL(sessionRefreshed()));
@@ -432,3 +432,13 @@ void OtrProxyChannel::Adaptee::onKeyGenerationFinished(const QString &accountId,
aboutToInit = false;
}
+
+void OtrProxyChannel::Adaptee::onChannelClosed()
+{
+ kDebug();
+ // we will not be able to send disconnect message so we just finish our own OTR session
+ if(isConnected) {
+ otrSes.forceUnencrypted();
+ }
+ Q_EMIT closed();
+}
diff --git a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h
index 908edf7..7d1f712 100644
--- a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h
+++ b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h
@@ -85,6 +85,8 @@ class OtrProxyChannel::Adaptee : public QObject
void onTrustLevelChanged(TrustLevel trustLevel);
void onKeyGenerationFinished(const QString &accountId, bool error);
+ void onChannelClosed();
+
Q_SIGNALS:
void messageSent(const Tp::MessagePartList &content, uint flags, const QString &messageToken);
void messageReceived(const Tp::MessagePartList &message);
diff --git a/otr-proxy/KTpProxy/otr-session.cpp b/otr-proxy/KTpProxy/otr-session.cpp
index ca9fa1c..25a2dad 100644
--- a/otr-proxy/KTpProxy/otr-session.cpp
+++ b/otr-proxy/KTpProxy/otr-session.cpp
@@ -126,6 +126,21 @@ namespace OTR
return parent()->getFingerprintFor(ctx.accountId, ctx.accountName);
}
+ void Session::forceUnencrypted()
+ {
+ if(trustLevel() == TrustLevel::NOT_PRIVATE) {
+ return;
+ }
+
+ ConnContext *context = otrl_context_find(userstate->userState(),
+ ctx.recipientName.toLocal8Bit(),
+ ctx.accountName.toLocal8Bit(),
+ ctx.protocol.toLocal8Bit(),
+ instance, 0, NULL, NULL, NULL);
+
+ otrl_context_force_plaintext(context);
+ }
+
Message Session::startSession()
{
Message msg;
diff --git a/otr-proxy/KTpProxy/otr-session.h b/otr-proxy/KTpProxy/otr-session.h
index 2f5fd0c..2d3c43a 100644
--- a/otr-proxy/KTpProxy/otr-session.h
+++ b/otr-proxy/KTpProxy/otr-session.h
@@ -71,6 +71,8 @@ namespace OTR
const SessionContext& context() const;
QString remoteFingerprint() const;
QString localFingerprint() const;
+ /** forces OTR session into plain text state */
+ void forceUnencrypted();
/** Returns OTR init message */
Message startSession();
diff --git a/otr-proxy/test/otr-test.cpp b/otr-proxy/test/otr-test.cpp
index 0ba40ba..2205ac9 100644
--- a/otr-proxy/test/otr-test.cpp
+++ b/otr-proxy/test/otr-test.cpp
@@ -140,6 +140,7 @@ class OTRTest : public QObject
void testDoubleConversation();
void testTrustDistrustFingerprint();
void testSessionRefreshed();
+ void testForceUnencrypted();
void cleanup();
@@ -527,6 +528,16 @@ void OTRTest::testSessionRefreshed()
QVERIFY(bobEnv->levelChanged);
}
+void OTRTest::testForceUnencrypted()
+{
+ TestSession &alice = aliceEnv->ses;
+ TestSession &bob = bobEnv->ses;
+
+ startSession(alice, bob);
+ alice.forceUnencrypted();
+ QCOMPARE(alice.trustLevel(), TrustLevel::NOT_PRIVATE);
+}
+
void OTRTest::cleanup()
{
delete aliceEnv;
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list