diff options
author | Benjamin Jemlich <pcgod@users.sourceforge.net> | 2011-10-23 11:06:59 +0400 |
---|---|---|
committer | Benjamin Jemlich <pcgod@users.sourceforge.net> | 2011-10-23 11:30:02 +0400 |
commit | 089b23d9779785afd6402f54d1a33107d582961d (patch) | |
tree | 79b92b7999b6706df844b89c7dd905d12cd9f4bb /src/murmur/MurmurIce.cpp | |
parent | 380b52d3e00aad4ad4c2635f25d40dd05c09165d (diff) |
Fix ghost disconnect removing permissions (#3423985)
Returning a list of groups using an authenticator added
temporary group membership for the user id only. Those are
removed when we're disconnecting an old user using the same
user id. Adding the session id to the group should fix the
problem.
This won't work if someone uses verifyPassword to set the
permissions (which is an undocumented implementation detail
anyway).
Diffstat (limited to 'src/murmur/MurmurIce.cpp')
-rw-r--r-- | src/murmur/MurmurIce.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/murmur/MurmurIce.cpp b/src/murmur/MurmurIce.cpp index c1d5c823c..cae3099ba 100644 --- a/src/murmur/MurmurIce.cpp +++ b/src/murmur/MurmurIce.cpp @@ -543,7 +543,7 @@ void MurmurIce::nameToIdSlot(int &id, const QString &name) { } } -void MurmurIce::authenticateSlot(int &res, QString &uname, const QList<QSslCertificate> &certlist, const QString &certhash, bool certstrong, const QString &pw) { +void MurmurIce::authenticateSlot(int &res, QString &uname, int sessionId, const QList<QSslCertificate> &certlist, const QString &certhash, bool certstrong, const QString &pw) { ::Server *server = qobject_cast< ::Server *> (sender()); ServerAuthenticatorPrx prx = mi->qmServerAuthenticator.value(server->iServerNum); @@ -575,7 +575,7 @@ void MurmurIce::authenticateSlot(int &res, QString &uname, const QList<QSslCerti qsl << u8(str); } if (! qsl.isEmpty()) - server->setTempGroups(res, NULL, qsl); + server->setTempGroups(res, sessionId, NULL, qsl); } } |