From 136fd5c8e17883928b0c848c404a644989c9d1b5 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 14 May 2015 19:50:04 +0300 Subject: [PATCH] added lock for dcOptions, emojibox large emoji display, session management improved, new emoji dropdown started --- Telegram/Resources/style.txt | 71 +++---- Telegram/SourceFiles/art/sprite.png | Bin 168236 -> 167124 bytes Telegram/SourceFiles/art/sprite_200x.png | Bin 223857 -> 217545 bytes Telegram/SourceFiles/boxes/emojibox.cpp | 6 +- Telegram/SourceFiles/boxes/emojibox.h | 1 + Telegram/SourceFiles/history.cpp | 24 ++- Telegram/SourceFiles/history.h | 5 + Telegram/SourceFiles/intro/introcode.cpp | 1 + Telegram/SourceFiles/localstorage.cpp | 41 +++- Telegram/SourceFiles/mtproto/mtp.cpp | 188 +++++++++++------- Telegram/SourceFiles/mtproto/mtp.h | 17 +- .../SourceFiles/mtproto/mtpConnection.cpp | 109 +++++----- Telegram/SourceFiles/mtproto/mtpConnection.h | 2 +- Telegram/SourceFiles/mtproto/mtpDC.cpp | 72 ++++--- Telegram/SourceFiles/mtproto/mtpDC.h | 3 +- Telegram/SourceFiles/mtproto/mtpSession.cpp | 73 ++++--- Telegram/SourceFiles/mtproto/mtpSession.h | 7 +- Telegram/SourceFiles/mtproto/mtpSessionImpl.h | 2 +- 18 files changed, 378 insertions(+), 244 deletions(-) diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt index f4d6141ef..eecbc9d64 100644 --- a/Telegram/Resources/style.txt +++ b/Telegram/Resources/style.txt @@ -1362,7 +1362,7 @@ btnInfoClose: flatButton(aboutCloseButton) { emojiTextFont: font(16px); emojiReplaceWidth: 56px; emojiReplaceHeight: 56px; -emojiReplaceInnerHeight: 38px; +emojiReplaceInnerHeight: 42px; connectingBG: #fffe; connectingColor: #777; @@ -1459,40 +1459,37 @@ emojiScroll: flatScroll(scrollDef) { topsh: 0px; bottomsh: 0px; } -emojiRecent: sprite(6px, 197px, 20px, 20px); -emojiRecentOver: sprite(290px, 221px, 20px, 20px); -emojiRecentActive: sprite(290px, 242px, 20px, 20px); -emojiPeople: sprite(27px, 197px, 20px, 20px); -emojiPeopleOver: sprite(311px, 221px, 20px, 20px); -emojiPeopleActive: sprite(311px, 242px, 20px, 20px); -emojiNature: sprite(48px, 197px, 20px, 20px); -emojiNatureOver: sprite(245px, 266px, 20px, 20px); -emojiNatureActive: sprite(245px, 287px, 20px, 20px); -emojiFood: sprite(69px, 197px, 20px, 20px); -emojiFoodOver: sprite(266px, 266px, 20px, 20px); -emojiFoodActive: sprite(266px, 287px, 20px, 20px); -emojiCelebration: sprite(90px, 197px, 20px, 20px); -emojiCelebrationOver: sprite(290px, 266px, 20px, 20px); -emojiCelebrationActive: sprite(290px, 287px, 20px, 20px); -emojiActivity: sprite(111px, 197px, 20px, 20px); -emojiActivityOver: sprite(311px, 266px, 20px, 20px); -emojiActivityActive: sprite(311px, 287px, 20px, 20px); -emojiTravel: sprite(132px, 197px, 20px, 20px); -emojiTravelOver: sprite(321px, 344px, 20px, 20px); -emojiTravelActive: sprite(321px, 365px, 20px, 20px); -emojiObjects: sprite(153px, 197px, 20px, 20px); -emojiObjectsOver: sprite(342px, 344px, 20px, 20px); -emojiObjectsActive: sprite(342px, 365px, 20px, 20px); -emojiStickers: sprite(174px, 197px, 20px, 20px); -emojiStickersOver: sprite(363px, 344px, 20px, 20px); -emojiStickersActive: sprite(363px, 365px, 20px, 20px); +emojiRecent: sprite(0px, 196px, 21px, 22px); +emojiRecentOver: sprite(287px, 220px, 21px, 22px); +emojiRecentActive: sprite(287px, 242px, 21px, 22px); +emojiPeople: sprite(21px, 196px, 21px, 22px); +emojiPeopleOver: sprite(298px, 220px, 21px, 22px); +emojiPeopleActive: sprite(298px, 242px, 21px, 22px); +emojiNature: sprite(42px, 196px, 21px, 22px); +emojiNatureOver: sprite(245px, 264px, 21px, 22px); +emojiNatureActive: sprite(245px, 286px, 21px, 22px); +emojiFood: sprite(63px, 196px, 21px, 22px); +emojiFoodOver: sprite(266px, 264px, 21px, 22px); +emojiFoodActive: sprite(266px, 286px, 21px, 22px); +emojiCelebration: sprite(84px, 196px, 21px, 22px); +emojiCelebrationOver: sprite(287px, 264px, 21px, 22px); +emojiCelebrationActive: sprite(287px, 286px, 21px, 22px); +emojiActivity: sprite(105px, 196px, 21px, 22px); +emojiActivityOver: sprite(308px, 264px, 21px, 22px); +emojiActivityActive: sprite(308px, 286px, 21px, 22px); +emojiTravel: sprite(126px, 196px, 21px, 22px); +emojiTravelOver: sprite(321px, 344px, 21px, 22px); +emojiTravelActive: sprite(321px, 366px, 21px, 22px); +emojiObjects: sprite(147px, 196px, 21px, 22px); +emojiObjectsOver: sprite(342px, 344px, 21px, 22px); +emojiObjectsActive: sprite(342px, 366px, 21px, 22px); rbEmoji: flatCheckbox { textColor: transparent; bgColor: transparent; disColor: transparent; - width: 28px; - height: 36px; + width: 36px; + height: 46px; textTop: 0px; textLeft: 0px; @@ -1502,7 +1499,7 @@ rbEmoji: flatCheckbox { cursor: cursor(pointer); disabledCursor: cursor(default); - imagePos: point(5px, 8px); + imagePos: point(8px, 12px); } rbEmojiRecent: flatCheckbox(rbEmoji) { imageRect: emojiRecent; @@ -1568,16 +1565,8 @@ rbEmojiObjects: flatCheckbox(rbEmoji) { disImageRect: emojiObjects; chkDisImageRect: emojiObjectsActive; } -rbEmojiStickers: flatCheckbox(rbEmojiRecent) { - imageRect: emojiStickers; - chkImageRect: emojiStickersActive; - overImageRect: emojiStickersOver; - chkOverImageRect: emojiStickersActive; - disImageRect: emojiStickers; - chkDisImageRect: emojiStickersActive; -} emojiPanPadding: margins(5px, 0px, 0px, 5px); -emojiPanSize: size(35px, 35px); +emojiPanSize: size(39px, 35px); emojiPanDuration: 200; emojiPanHover: #f0f0f0; emojiPanRound: 2px; @@ -1593,6 +1582,8 @@ emojiColorsPadding: 5px; emojiColorsSep: 1px; emojiColorsSepColor: #d5d5d5; +toStickersImg: sprite(); +toEmojiImg: sprite(); stickerPanRound: 3px; stickerPanPadding: 2px; stickerPanDelete: sprite(123px, 132px, 12px, 12px); diff --git a/Telegram/SourceFiles/art/sprite.png b/Telegram/SourceFiles/art/sprite.png index 39ef106569c3fac363c8a56866934202e70b2b7a..824f523892125d3c65462c6a2e49483c3a897390 100644 GIT binary patch delta 47476 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 Of0X4lF%?5p7%Z9 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 T#4H~W2aJ|gzL_g+`0W1zdx-Xu delta 61960 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

H&5M05>UI+np5piIzt$ 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 + _blocks.size() * st::emojiReplaceHeight + (st::emojiReplaceHeight - _blockHeight) + _done.height()); + resizeMaxHeight(_blocks[0].size() * st::emojiReplaceWidth + (st::emojiReplaceWidth - _esize), st::boxPadding.top() + st::boxFont->height + _blocks.size() * st::emojiReplaceHeight + (st::emojiReplaceHeight - _blockHeight) + _done.height()); connect(&_done, SIGNAL(clicked()), this, SLOT(onClose())); @@ -139,7 +139,7 @@ void EmojiBox::paintEvent(QPaintEvent *e) { int32 rowSize = i->size(), left = (width() - rowSize * st::emojiReplaceWidth) / 2; for (BlockRow::const_iterator j = i->cbegin(), en = i->cend(); j != en; ++j) { if (j->emoji) { - emojiDraw(p, j->emoji, left + (st::emojiReplaceWidth - st::emojiSize) / 2, top + (st::emojiReplaceHeight - _blockHeight) / 2); + p.drawPixmap(QPoint(left + (st::emojiReplaceWidth - _esize) / 2, top + (st::emojiReplaceHeight - _blockHeight) / 2), App::emojisLarge(), QRect(j->emoji->x * _esize, j->emoji->y * _esize, _esize, _esize)); } QRect trect(left, top + (st::emojiReplaceHeight + _blockHeight) / 2 - st::emojiTextFont->height, st::emojiReplaceWidth, st::emojiTextFont->height); p.drawText(trect, j->text, QTextOption(Qt::AlignHCenter | Qt::AlignTop)); diff --git a/Telegram/SourceFiles/boxes/emojibox.h b/Telegram/SourceFiles/boxes/emojibox.h index f3c4f90b0..a20a4ac32 100644 --- a/Telegram/SourceFiles/boxes/emojibox.h +++ b/Telegram/SourceFiles/boxes/emojibox.h @@ -38,6 +38,7 @@ private: void fillBlocks(); + int32 _esize; BottomButton _done; int32 _blockHeight; diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index 9d31b53aa..c10cea049 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -4879,7 +4879,7 @@ void HistoryMessage::getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) lnk = _from->lnk; return; } -// width -= st::msgPhotoSkip; + // width -= st::msgPhotoSkip; left += st::msgPhotoSkip; } if (width < 1) return; @@ -4900,6 +4900,10 @@ void HistoryMessage::getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) } r.setTop(r.top() + st::msgNameFont->height); } + return getStateFromMessageText(lnk, inText, x, y, r); +} + +void HistoryMessage::getStateFromMessageText(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const QRect &r) const { QRect trect(r.marginsAdded(-st::msgPadding)); TextLinkPtr medialnk; if (_media) { @@ -5056,12 +5060,10 @@ void HistoryForwarded::drawForwardedFrom(QPainter &p, int32 x, int32 y, int32 w, } void HistoryForwarded::drawMessageText(QPainter &p, const QRect &trect, uint32 selection) const { - int32 h = st::msgServiceNameFont->height; - drawForwardedFrom(p, trect.x(), trect.y(), trect.width(), (selection == FullItemSel)); QRect realtrect(trect); - realtrect.setY(trect.y() + h); + realtrect.setY(trect.y() + st::msgServiceNameFont->height); HistoryMessage::drawMessageText(p, realtrect, selection); } @@ -5139,6 +5141,12 @@ void HistoryForwarded::getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y return HistoryMessage::getState(lnk, inText, x, y); } +void HistoryForwarded::getStateFromMessageText(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const QRect &r) const { + QRect realr(r); + realr.setHeight(r.height() - st::msgServiceNameFont->height); + HistoryMessage::getStateFromMessageText(lnk, inText, x, y, realr); +} + void HistoryForwarded::getForwardedState(TextLinkPtr &lnk, bool &inText, int32 x, int32 w) const { inText = false; if (x >= fromWidth && x < w && x < fromWidth + fwdFromName.maxWidth()) { @@ -5445,6 +5453,14 @@ void HistoryReply::getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) co return HistoryMessage::getState(lnk, inText, x, y); } +void HistoryReply::getStateFromMessageText(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const QRect &r) const { + int32 h = st::msgReplyPadding.top() + st::msgReplyBarSize.height() + st::msgReplyPadding.bottom(); + + QRect realr(r); + realr.setHeight(r.height() - h); + HistoryMessage::getStateFromMessageText(lnk, inText, x, y, realr); +} + void HistoryReply::getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const { symbol = 0; after = false; diff --git a/Telegram/SourceFiles/history.h b/Telegram/SourceFiles/history.h index 33049b826..e82d93c47 100644 --- a/Telegram/SourceFiles/history.h +++ b/Telegram/SourceFiles/history.h @@ -1238,7 +1238,10 @@ public: int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0); bool hasPoint(int32 x, int32 y) const; + void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) const; + virtual void getStateFromMessageText(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const QRect &r) const; + void getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const; uint32 adjustSelection(uint16 from, uint16 to, TextSelectType type) const { return _text.adjustSelection(from, to, type); @@ -1311,6 +1314,7 @@ public: int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0); bool hasPoint(int32 x, int32 y) const; void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) const; + void getStateFromMessageText(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const QRect &r) const; void getForwardedState(TextLinkPtr &lnk, bool &inText, int32 x, int32 w) const; void getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const; @@ -1363,6 +1367,7 @@ public: int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0); bool hasPoint(int32 x, int32 y) const; void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) const; + void getStateFromMessageText(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const QRect &r) const; void getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const; UserData *replyTo() const { diff --git a/Telegram/SourceFiles/intro/introcode.cpp b/Telegram/SourceFiles/intro/introcode.cpp index 4f64a2c4b..f34631f9c 100644 --- a/Telegram/SourceFiles/intro/introcode.cpp +++ b/Telegram/SourceFiles/intro/introcode.cpp @@ -153,6 +153,7 @@ void IntroCode::activate() { callTimer.start(1000); error = ""; errorAlpha = anim::fvalue(0); + sentCode = QString(); show(); code.setDisabled(false); code.setFocus(); diff --git a/Telegram/SourceFiles/localstorage.cpp b/Telegram/SourceFiles/localstorage.cpp index b11f1166c..55cd0751e 100644 --- a/Telegram/SourceFiles/localstorage.cpp +++ b/Telegram/SourceFiles/localstorage.cpp @@ -1077,10 +1077,17 @@ namespace { LOG(("App Info: reading old user config..")); qint32 version = 0; - mtpDcOptions dcOpts(cDcOptions()); + mtpDcOptions dcOpts; + { + QReadLocker lock(MTP::dcOptionsMutex()); + dcOpts = cDcOptions(); + } _dcOpts = &dcOpts; _readOldUserSettingsFields(&file, version); - cSetDcOptions(dcOpts); + { + QWriteLocker lock(MTP::dcOptionsMutex()); + cSetDcOptions(dcOpts); + } file.close(); result = true; @@ -1157,10 +1164,17 @@ namespace { LOG(("App Info: reading old keys..")); qint32 version = 0; - mtpDcOptions dcOpts(cDcOptions()); + mtpDcOptions dcOpts; + { + QReadLocker lock(MTP::dcOptionsMutex()); + dcOpts = cDcOptions(); + } _dcOpts = &dcOpts; _readOldMtpDataFields(&file, version); - cSetDcOptions(dcOpts); + { + QWriteLocker lock(MTP::dcOptionsMutex()); + cSetDcOptions(dcOpts); + } file.close(); result = true; @@ -1648,7 +1662,11 @@ namespace Local { LOG(("App Error: could not decrypt settings from settings file, maybe bad passcode..")); return writeSettings(); } - mtpDcOptions dcOpts(cDcOptions()); + mtpDcOptions dcOpts; + { + QReadLocker lock(MTP::dcOptionsMutex()); + dcOpts = cDcOptions(); + } _dcOpts = &dcOpts; LOG(("App Info: reading encrypted settings..")); while (!settings.stream.atEnd()) { @@ -1669,7 +1687,10 @@ namespace Local { DEBUG_LOG(("MTP Info: adding built in DC %1 connect option: %2:%3").arg(bdcs[i].id).arg(bdcs[i].ip).arg(bdcs[i].port)); } } - cSetDcOptions(dcOpts); + { + QWriteLocker lock(MTP::dcOptionsMutex()); + cSetDcOptions(dcOpts); + } _settingsSalt = salt; } @@ -1690,13 +1711,19 @@ namespace Local { } settings.writeData(_settingsSalt); - mtpDcOptions dcOpts(cDcOptions()); + mtpDcOptions dcOpts; + { + QReadLocker lock(MTP::dcOptionsMutex()); + dcOpts = cDcOptions(); + } if (dcOpts.isEmpty()) { const BuiltInDc *bdcs = builtInDcs(); for (int i = 0, l = builtInDcsCount(); i < l; ++i) { dcOpts.insert(bdcs[i].id, mtpDcOption(bdcs[i].id, "", bdcs[i].ip, bdcs[i].port)); DEBUG_LOG(("MTP Info: adding built in DC %1 connect option: %2:%3").arg(bdcs[i].id).arg(bdcs[i].ip).arg(bdcs[i].port)); } + + QWriteLocker lock(MTP::dcOptionsMutex()); cSetDcOptions(dcOpts); } diff --git a/Telegram/SourceFiles/mtproto/mtp.cpp b/Telegram/SourceFiles/mtproto/mtp.cpp index d2553c4f9..4f4be3b1c 100644 --- a/Telegram/SourceFiles/mtproto/mtp.cpp +++ b/Telegram/SourceFiles/mtproto/mtp.cpp @@ -23,13 +23,14 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org namespace { typedef QMap Sessions; Sessions sessions; + QVector sessionsToKill; MTProtoSessionPtr mainSession; - typedef QMap RequestsByDC; // holds dc for request to this dc or -dc for request to main dc + typedef QMap RequestsByDC; // holds dcWithShift for request to this dc or -dc for request to main dc RequestsByDC requestsByDC; QMutex requestByDCLock; - typedef QMap AuthExportRequests; // holds target dc for auth export request + typedef QMap AuthExportRequests; // holds target dcWithShift for auth export request AuthExportRequests authExportRequests; bool _started = false; @@ -55,7 +56,7 @@ namespace { BadGuestDCRequests badGuestDCRequests; typedef QVector DCAuthWaiters; - typedef QMap AuthWaiters; + typedef QMap AuthWaiters; // holds request ids waiting for auth import to specific dc AuthWaiters authWaiters; QMutex toClearLock; @@ -76,12 +77,11 @@ namespace { if (globalHandler.onFail && MTP::authedId()) (*globalHandler.onFail)(req, error); // auth failed in main dc return; } - int32 newdc = i.value(); + int32 newdc = i.value() % _mtp_internal::dcShift; DEBUG_LOG(("MTP Info: auth import to dc %1 succeeded").arg(newdc)); DCAuthWaiters &waiters(authWaiters[newdc]); - MTProtoSessionPtr session(_mtp_internal::getSession(newdc)); if (waiters.size()) { QReadLocker locker(&requestMapLock); for (DCAuthWaiters::iterator i = waiters.begin(), e = waiters.end(); i != e; ++i) { @@ -91,6 +91,7 @@ namespace { LOG(("MTP Error: could not find request %1 for resending").arg(requestId)); continue; } + int32 dcWithShift = newdc; { RequestsByDC::iterator k = requestsByDC.find(requestId); if (k == requestsByDC.cend()) { @@ -101,11 +102,15 @@ namespace { MTP::setdc(newdc); k.value() = -newdc; } else { - k.value() = k.value() - (k.value() % _mtp_internal::dcShift) + newdc; + int32 shift = k.value() - (k.value() % _mtp_internal::dcShift); + dcWithShift += shift; + k.value() = dcWithShift; } DEBUG_LOG(("MTP Info: resending request %1 to dc %2 after import auth").arg(requestId).arg(k.value())); } - session->sendPrepared(j.value()); + if (MTProtoSessionPtr session = _mtp_internal::getSession(dcWithShift)) { + session->sendPrepared(j.value()); + } } waiters.clear(); } @@ -121,8 +126,8 @@ namespace { void exportDone(const MTPauth_ExportedAuthorization &result, mtpRequestId req) { AuthExportRequests::const_iterator i = authExportRequests.constFind(req); if (i == authExportRequests.cend()) { - LOG(("MTP Error: auth export request target dc not found, requestId: %1").arg(req)); - RPCError error(rpcClientError("AUTH_IMPORT_FAIL", QString("did not find target dc, request %1").arg(req))); + LOG(("MTP Error: auth export request target dcWithShift not found, requestId: %1").arg(req)); + RPCError error(rpcClientError("AUTH_IMPORT_FAIL", QString("did not find target dcWithShift, request %1").arg(req))); if (globalHandler.onFail && MTP::authedId()) (*globalHandler.onFail)(req, error); // auth failed in main dc return; } @@ -137,7 +142,7 @@ namespace { AuthExportRequests::const_iterator i = authExportRequests.constFind(req); if (i != authExportRequests.cend()) { - authWaiters[i.value()].clear(); + authWaiters[i.value() % _mtp_internal::dcShift].clear(); } if (globalHandler.onFail && MTP::authedId()) (*globalHandler.onFail)(req, error); // auth failed in main dc return true; @@ -151,31 +156,34 @@ namespace { if ((m = QRegularExpression("^(FILE|PHONE|NETWORK|USER)_MIGRATE_(\\d+)$").match(err)).hasMatch()) { if (!requestId) return false; - int32 dc = 0, newdc = m.captured(2).toInt(); + int32 dcWithShift = 0, newdcWithShift = m.captured(2).toInt(); { QMutexLocker locker(&requestByDCLock); RequestsByDC::iterator i = requestsByDC.find(requestId); if (i == requestsByDC.end()) { - LOG(("MTP Error: could not find request %1 for migrating to %2").arg(requestId).arg(newdc)); + LOG(("MTP Error: could not find request %1 for migrating to %2").arg(requestId).arg(newdcWithShift)); } else { - dc = i.value(); + dcWithShift = i.value(); } } - if (!dc || !newdc) return false; + if (!dcWithShift || !newdcWithShift) return false; - DEBUG_LOG(("MTP Info: changing request %1 dc%2 to %3").arg(requestId).arg((dc > 0) ? "" : " and main dc").arg(newdc)); - if (dc < 0) { - if (MTP::authedId() && !authExportRequests.contains(requestId)) { // import auth, set dc and resend - DEBUG_LOG(("MTP Info: importing auth to dc %1").arg(newdc)); - DCAuthWaiters &waiters(authWaiters[newdc]); + DEBUG_LOG(("MTP Info: changing request %1 from dcWithShift%2 to dc%3").arg(requestId).arg(dcWithShift).arg(newdcWithShift)); + if (dcWithShift < 0) { // newdc shift = 0 + if (false && MTP::authedId() && !authExportRequests.contains(requestId)) { // migrate not supported at this moment + DEBUG_LOG(("MTP Info: importing auth to dc %1").arg(newdcWithShift)); + DCAuthWaiters &waiters(authWaiters[newdcWithShift]); if (!waiters.size()) { - authExportRequests.insert(MTP::send(MTPauth_ExportAuthorization(MTP_int(newdc)), rpcDone(exportDone), rpcFail(exportFail)), newdc); + authExportRequests.insert(MTP::send(MTPauth_ExportAuthorization(MTP_int(newdcWithShift)), rpcDone(exportDone), rpcFail(exportFail)), newdcWithShift); } waiters.push_back(requestId); return true; } else { - MTP::setdc(newdc); + MTP::setdc(newdcWithShift); } + } else { + int32 shift = dcWithShift - (dcWithShift % _mtp_internal::dcShift); + newdcWithShift += shift; } mtpRequest req; @@ -188,8 +196,10 @@ namespace { } req = i.value(); } - _mtp_internal::registerRequest(requestId, (dc < 0) ? -newdc : newdc); - _mtp_internal::getSession(newdc)->sendPrepared(req); + if (MTProtoSessionPtr session = _mtp_internal::getSession(newdcWithShift)) { + _mtp_internal::registerRequest(requestId, (dcWithShift < 0) ? -newdcWithShift : newdcWithShift); + session->sendPrepared(req); + } return true; } else if (code < 0 || code >= 500 || (m = QRegularExpression("^FLOOD_WAIT_(\\d+)$").match(err)).hasMatch()) { if (!requestId) return false; @@ -218,26 +228,26 @@ namespace { return true; } else if (code == 401 || (badGuestDC && badGuestDCRequests.constFind(requestId) == badGuestDCRequests.cend())) { - int32 dc = 0; + int32 dcWithShift = 0; { QMutexLocker locker(&requestByDCLock); RequestsByDC::iterator i = requestsByDC.find(requestId); if (i != requestsByDC.end()) { - dc = i.value(); + dcWithShift = i.value(); } else { LOG(("MTP Error: unauthorized request without dc info, requestId %1").arg(requestId)); } } - int32 newdc = abs(dc) % _mtp_internal::dcShift; + int32 newdc = abs(dcWithShift) % _mtp_internal::dcShift; if (!newdc || newdc == mtpMainDC() || !MTP::authedId()) { if (!badGuestDC && globalHandler.onFail) (*globalHandler.onFail)(requestId, error); // auth failed in main dc return false; } - DEBUG_LOG(("MTP Info: importing auth to dc %1").arg(dc)); + DEBUG_LOG(("MTP Info: importing auth to dcWithShift %1").arg(dcWithShift)); DCAuthWaiters &waiters(authWaiters[newdc]); if (!waiters.size()) { - authExportRequests.insert(MTP::send(MTPauth_ExportAuthorization(MTP_int(newdc)), rpcDone(exportDone), rpcFail(exportFail)), newdc); + authExportRequests.insert(MTP::send(MTPauth_ExportAuthorization(MTP_int(newdc)), rpcDone(exportDone), rpcFail(exportFail)), abs(dcWithShift)); } waiters.push_back(requestId); if (badGuestDC) badGuestDCRequests.insert(requestId); @@ -253,20 +263,22 @@ namespace { } req = i.value(); } - int32 dc = 0; + int32 dcWithShift = 0; { QMutexLocker locker(&requestByDCLock); RequestsByDC::iterator i = requestsByDC.find(requestId); if (i == requestsByDC.end()) { LOG(("MTP Error: could not find request %1 for resending with init connection").arg(requestId)); } else { - dc = i.value(); + dcWithShift = i.value(); } } - if (!dc) return false; + if (!dcWithShift) return false; - req->needsLayer = true; - _mtp_internal::getSession(dc < 0 ? (-dc) : dc)->sendPrepared(req); + if (MTProtoSessionPtr session = _mtp_internal::getSession(dcWithShift < 0 ? (-dcWithShift) : dcWithShift)) { + req->needsLayer = true; + session->sendPrepared(req); + } return true; } else if (err == qsl("MSG_WAIT_FAILED")) { mtpRequest req; @@ -283,7 +295,7 @@ namespace { LOG(("MTP Error: wait failed for not dependent request %1").arg(requestId)); return false; } - int32 dc = 0; + int32 dcWithShift = 0; { QMutexLocker locker(&requestByDCLock); RequestsByDC::iterator i = requestsByDC.find(requestId), j = requestsByDC.find(req->after->requestId); @@ -292,19 +304,21 @@ namespace { } else if (j == requestsByDC.end()) { LOG(("MTP Error: could not find dependent request %1 by dc").arg(req->after->requestId)); } else { - dc = i.value(); + dcWithShift = i.value(); if (i.value() != j.value()) { req->after = mtpRequest(); } } } - if (!dc) return false; + if (!dcWithShift) return false; if (!req->after) { - req->needsLayer = true; - _mtp_internal::getSession(dc < 0 ? (-dc) : dc)->sendPrepared(req); + if (MTProtoSessionPtr session = _mtp_internal::getSession(dcWithShift < 0 ? (-dcWithShift) : dcWithShift)) { + req->needsLayer = true; + session->sendPrepared(req); + } } else { - int32 newdc = abs(dc) % _mtp_internal::dcShift; + int32 newdc = abs(dcWithShift) % _mtp_internal::dcShift; DCAuthWaiters &waiters(authWaiters[newdc]); if (waiters.indexOf(req->after->requestId) >= 0) { if (waiters.indexOf(requestId) < 0) { @@ -338,27 +352,27 @@ namespace { } namespace _mtp_internal { - MTProtoSessionPtr getSession(int32 dc) { + MTProtoSessionPtr getSession(int32 dcWithShift) { if (!_started) return MTProtoSessionPtr(); - if (!dc) return mainSession; - if (!(dc % _mtp_internal::dcShift)) { - dc += mainSession->getDC(); + if (!dcWithShift) return mainSession; + if (!(dcWithShift % _mtp_internal::dcShift)) { + dcWithShift += (mainSession->getDcWithShift() % _mtp_internal::dcShift); } - Sessions::const_iterator i = sessions.constFind(dc); + Sessions::const_iterator i = sessions.constFind(dcWithShift); if (i != sessions.cend()) return *i; MTProtoSessionPtr result(new MTProtoSession()); - result->start(dc); + result->start(dcWithShift); - sessions.insert(dc, result); + sessions.insert(dcWithShift, result); return result; } - void registerRequest(mtpRequestId requestId, int32 dc) { + void registerRequest(mtpRequestId requestId, int32 dcWithShift) { { QMutexLocker locker(&requestByDCLock); - requestsByDC.insert(requestId, dc); + requestsByDC.insert(requestId, dcWithShift); } _mtp_internal::performDelayedClear(); // need to do it somewhere.. } @@ -530,12 +544,12 @@ namespace _mtp_internal { if (globalHandler.onDone) (*globalHandler.onDone)(0, from, end); // some updates were received } - void onStateChange(int32 dc, int32 state) { - if (stateChangedHandler) stateChangedHandler(dc, state); + void onStateChange(int32 dcWithShift, int32 state) { + if (stateChangedHandler) stateChangedHandler(dcWithShift, state); } - void onSessionReset(int32 dc) { - if (sessionResetHandler) sessionResetHandler(dc); + void onSessionReset(int32 dcWithShift) { + if (sessionResetHandler) sessionResetHandler(dcWithShift); } bool rpcErrorOccured(mtpRequestId requestId, const RPCFailHandlerPtr &onFail, const RPCError &err) { // return true if need to clean request data @@ -561,12 +575,12 @@ namespace _mtp_internal { mtpRequestId requestId = delayedRequests.front().first; delayedRequests.pop_front(); - int32 dc = 0; + int32 dcWithShift = 0; { QMutexLocker locker(&requestByDCLock); RequestsByDC::const_iterator i = requestsByDC.constFind(requestId); if (i != requestsByDC.cend()) { - dc = i.value(); + dcWithShift = i.value(); } else { LOG(("MTP Error: could not find request dc for delayed resend, requestId %1").arg(requestId)); continue; @@ -583,7 +597,9 @@ namespace _mtp_internal { } req = j.value(); } - _mtp_internal::getSession(dc < 0 ? (-dc) : dc)->sendPrepared(req); + if (MTProtoSessionPtr session = _mtp_internal::getSession(dcWithShift < 0 ? (-dcWithShift) : dcWithShift)) { + session->sendPrepared(req); + } } if (!delayedRequests.isEmpty()) { @@ -595,13 +611,15 @@ namespace _mtp_internal { namespace MTP { void start() { + if (started()) return; + unixtimeInit(); MTProtoDCMap &dcs(mtpDCMap()); mainSession = MTProtoSessionPtr(new MTProtoSession()); mainSession->start(mtpMainDC()); - sessions[mainSession->getDC()] = mainSession; + sessions[mainSession->getDcWithShift()] = mainSession; _started = true; resender = new _mtp_internal::RequestResender(); @@ -625,8 +643,9 @@ namespace MTP { void restart(int32 dcMask) { if (!_started) return; + dcMask %= _mtp_internal::dcShift; for (Sessions::const_iterator i = sessions.cbegin(), e = sessions.cend(); i != e; ++i) { - if ((*i)->getDC() % _mtp_internal::dcShift == dcMask % _mtp_internal::dcShift) { + if (((*i)->getDcWithShift() % _mtp_internal::dcShift) == dcMask) { (*i)->restart(); } } @@ -641,8 +660,9 @@ namespace MTP { void setdc(int32 dc, bool fromZeroOnly) { if (!dc || !_started) return; mtpSetDC(dc, fromZeroOnly); - if (maindc() != mainSession->getDC()) { - mainSession = _mtp_internal::getSession(maindc()); + int32 oldMainDc = mainSession->getDcWithShift(); + if (maindc() != oldMainDc) { + killSession(oldMainDc); } Local::writeMtpData(); } @@ -656,7 +676,7 @@ namespace MTP { if (!dc) return mainSession->getState(); if (!(dc % _mtp_internal::dcShift)) { - dc += mainSession->getDC(); + dc += (mainSession->getDcWithShift() % _mtp_internal::dcShift); } Sessions::const_iterator i = sessions.constFind(dc); @@ -670,7 +690,7 @@ namespace MTP { if (!dc) return mainSession->transport(); if (!(dc % _mtp_internal::dcShift)) { - dc += mainSession->getDC(); + dc += (mainSession->getDcWithShift() % _mtp_internal::dcShift); } Sessions::const_iterator i = sessions.constFind(dc); @@ -679,16 +699,10 @@ namespace MTP { return QString(); } - void initdc(int32 dc) { - if (!_started) return; - _mtp_internal::getSession(dc); - } - void ping() { - MTProtoSessionPtr session = _mtp_internal::getSession(0); - if (!session) return; - - return session->ping(); + if (MTProtoSessionPtr session = _mtp_internal::getSession(0)) { + session->ping(); + } } void cancel(mtpRequestId requestId) { @@ -706,25 +720,35 @@ namespace MTP { QMutexLocker locker(&requestByDCLock); RequestsByDC::iterator i = requestsByDC.find(requestId); if (i != requestsByDC.end()) { - _mtp_internal::getSession(abs(i.value()))->cancel(requestId, msgId); + if (MTProtoSessionPtr session = _mtp_internal::getSession(abs(i.value()))) { + session->cancel(requestId, msgId); + } requestsByDC.erase(i); } } _mtp_internal::clearCallbacks(requestId); } + void killSessionsDelayed() { + if (!sessionsToKill.isEmpty()) { + sessionsToKill.clear(); + } + } + void killSession(int32 dc) { Sessions::iterator i = sessions.find(dc); if (i != sessions.end()) { bool wasMain = (i.value() == mainSession); - i.value()->stop(); + i.value()->kill(); + if (sessionsToKill.isEmpty()) QTimer::singleShot(0, killSessionsDelayed); + sessionsToKill.push_back(i.value()); sessions.erase(i); if (wasMain) { mainSession = MTProtoSessionPtr(new MTProtoSession()); mainSession->start(mtpMainDC()); - sessions[mainSession->getDC()] = mainSession; + sessions[mainSession->getDcWithShift()] = mainSession; } } } @@ -743,22 +767,30 @@ namespace MTP { QMutexLocker locker(&requestByDCLock); RequestsByDC::iterator i = requestsByDC.find(requestId); if (i != requestsByDC.end()) { - return _mtp_internal::getSession(abs(i.value()))->requestState(requestId); + if (MTProtoSessionPtr session = _mtp_internal::getSession(abs(i.value()))) { + return session->requestState(requestId); + } + return MTP::RequestConnecting; } return MTP::RequestSent; } - return _mtp_internal::getSession(-requestId)->requestState(0); + if (MTProtoSessionPtr session = _mtp_internal::getSession(-requestId)) { + return session->requestState(0); + } + return MTP::RequestConnecting; } void stop() { for (Sessions::iterator i = sessions.begin(), e = sessions.end(); i != e; ++i) { - i.value()->stop(); + i.value()->kill(); } sessions.clear(); mainSession = MTProtoSessionPtr(); delete resender; resender = 0; mtpDestroyConfigLoader(); + + _started = false; } void authed(int32 uid) { @@ -810,4 +842,8 @@ namespace MTP { return mtpSetKey(dc, key); } + QReadWriteLock *dcOptionsMutex() { + return mtpDcOptionsMutex(); + } + }; diff --git a/Telegram/SourceFiles/mtproto/mtp.h b/Telegram/SourceFiles/mtproto/mtp.h index 1224b7ea9..bb9344657 100644 --- a/Telegram/SourceFiles/mtproto/mtp.h +++ b/Telegram/SourceFiles/mtproto/mtp.h @@ -37,8 +37,8 @@ namespace _mtp_internal { void execCallback(mtpRequestId requestId, const mtpPrime *from, const mtpPrime *end); bool hasCallbacks(mtpRequestId requestId); void globalCallback(const mtpPrime *from, const mtpPrime *end); - void onStateChange(int32 dc, int32 state); - void onSessionReset(int32 dc); + void onStateChange(int32 dcWithShift, int32 state); + void onSessionReset(int32 dcWithShift); bool rpcErrorOccured(mtpRequestId requestId, const RPCFailHandlerPtr &onFail, const RPCError &err); // return true if need to clean request data inline bool rpcErrorOccured(mtpRequestId requestId, const RPCResponseHandler &handler, const RPCError &err) { return rpcErrorOccured(requestId, handler.onFail, err); @@ -64,6 +64,7 @@ namespace _mtp_internal { namespace MTP { static const uint32 cfg = 1 * _mtp_internal::dcShift; // send(MTPhelp_GetConfig(), MTP::cfg + dc) - for dc enum + static const uint32 lgt = 2 * _mtp_internal::dcShift; // send(MTPauth_LogOut(), MTP::lgt + dc) - for logout of guest dcs enum static const uint32 dld[MTPDownloadSessionsCount] = { // send(req, callbacks, MTP::dld[i] + dc) - for download 0x10 * _mtp_internal::dcShift, 0x11 * _mtp_internal::dcShift, @@ -89,13 +90,13 @@ namespace MTP { int32 dcstate(int32 dc = 0); QString dctransport(int32 dc = 0); - void initdc(int32 dc); + template inline mtpRequestId send(const TRequest &request, RPCResponseHandler callbacks = RPCResponseHandler(), int32 dc = 0, uint64 msCanWait = 0, mtpRequestId after = 0) { - MTProtoSessionPtr session = _mtp_internal::getSession(dc); - if (!session) return 0; - - return session->send(request, callbacks, msCanWait, true, !dc, after); + if (MTProtoSessionPtr session = _mtp_internal::getSession(dc)) { + return session->send(request, callbacks, msCanWait, true, !dc, after); + } + return 0; } template inline mtpRequestId send(const TRequest &request, RPCDoneHandlerPtr onDone, RPCFailHandlerPtr onFail = RPCFailHandlerPtr(), int32 dc = 0, uint64 msCanWait = 0, mtpRequestId after = 0) { @@ -139,6 +140,8 @@ namespace MTP { mtpKeysMap getKeys(); void setKey(int32 dc, mtpAuthKeyPtr key); + QReadWriteLock *dcOptionsMutex(); + }; #include "mtproto/mtpSessionImpl.h" diff --git a/Telegram/SourceFiles/mtproto/mtpConnection.cpp b/Telegram/SourceFiles/mtproto/mtpConnection.cpp index e5c9910c1..57abdfa3d 100644 --- a/Telegram/SourceFiles/mtproto/mtpConnection.cpp +++ b/Telegram/SourceFiles/mtproto/mtpConnection.cpp @@ -1114,6 +1114,7 @@ MTProtoConnectionPrivate::MTProtoConnectionPrivate(QThread *thread, MTProtoConne // createConn(); if (!dc) { + QReadLocker lock(mtpDcOptionsMutex()); const mtpDcOptions &options(cDcOptions()); if (options.isEmpty()) { LOG(("MTP Error: connect failed, no DCs")); @@ -1713,6 +1714,8 @@ void MTProtoConnectionPrivate::retryByTimer() { } if (keyId == mtpAuthKey::RecreateKeyId) { if (sessionData->getKey()) { + unlockKey(); + QWriteLocker lock(sessionData->keyMutex()); sessionData->owner()->destroyKey(); } @@ -1738,31 +1741,34 @@ void MTProtoConnectionPrivate::socketStart(bool afterConfig) { _pingId = _pingMsgId = _pingIdToSend = _pingSendAt = 0; _pingSender.stop(); - const mtpDcOption *dcOption = 0; - const mtpDcOptions &options(cDcOptions()); - mtpDcOptions::const_iterator dcIndex = options.constFind(dc % _mtp_internal::dcShift); - DEBUG_LOG(("MTP Info: connecting to DC %1..").arg(dc)); - if (dcIndex == options.cend()) { + std::string ip; + uint32 port = 0; + { + QReadLocker lock(mtpDcOptionsMutex()); + const mtpDcOptions &options(cDcOptions()); + mtpDcOptions::const_iterator dcIndex = options.constFind(dc % _mtp_internal::dcShift); + DEBUG_LOG(("MTP Info: connecting to DC %1..").arg(dc)); + if (dcIndex != options.cend()) { + ip = dcIndex->ip; + port = dcIndex->port; + } + } + if (!port || ip.empty()) { if (afterConfig) { LOG(("MTP Error: DC %1 options not found right after config load!").arg(dc)); return restart(); - } else { - DEBUG_LOG(("MTP Info: DC %1 options not found, waiting for config").arg(dc)); - connect(mtpConfigLoader(), SIGNAL(loaded()), this, SLOT(onConfigLoaded())); - mtpConfigLoader()->load(); - return; } + DEBUG_LOG(("MTP Info: DC %1 options not found, waiting for config").arg(dc)); + connect(mtpConfigLoader(), SIGNAL(loaded()), this, SLOT(onConfigLoaded())); + mtpConfigLoader()->load(); + return; } - dcOption = &dcIndex.value(); - - const char *ip(dcOption->ip.c_str()); - uint32 port(dcOption->port); - DEBUG_LOG(("MTP Info: socket connection to %1:%2..").arg(ip).arg(port)); + DEBUG_LOG(("MTP Info: socket connection to %1:%2..").arg(ip.c_str()).arg(port)); connect(conn, SIGNAL(connected()), this, SLOT(onConnected())); connect(conn, SIGNAL(disconnected()), this, SLOT(restart())); - conn->connectToServer(ip, port); + conn->connectToServer(ip.c_str(), port); } void MTProtoConnectionPrivate::restart(bool maybeBadKey) { @@ -2824,12 +2830,36 @@ void MTProtoConnectionPrivate::onConnected() { TCP_LOG(("Connection Info: connection succeed.")); - if (updateAuthKey()) { - DEBUG_LOG(("MTP Info: returning from socketConnected..")); - return; + updateAuthKey(); +} + +void MTProtoConnectionPrivate::updateAuthKey() { + QReadLocker lockFinished(&sessionDataMutex); + if (!sessionData || !conn) return; + + DEBUG_LOG(("AuthKey Info: MTProtoConnection updating key from MTProtoSession, dc %1").arg(dc)); + uint64 newKeyId = 0; + { + ReadLockerAttempt lock(sessionData->keyMutex()); + if (!lock) { + DEBUG_LOG(("MTP Info: could not lock auth_key for read, waiting signal emit")); + clearMessages(); + keyId = newKeyId; + return; // some other connection is getting key + } + const mtpAuthKeyPtr &key(sessionData->getKey()); + newKeyId = key ? key->keyId() : 0; + } + if (keyId != newKeyId) { + clearMessages(); + keyId = newKeyId; + } + DEBUG_LOG(("AuthKey Info: MTProtoConnection update key from MTProtoSession, dc %1 result: %2").arg(dc).arg(mb(&keyId, sizeof(keyId)).str())); + if (keyId) { + return authKeyCreated(); } - DEBUG_LOG(("MTP Info: will be creating auth_key")); + DEBUG_LOG(("AuthKey Info: No key in updateAuthKey(), will be creating auth_key")); lockKey(); const mtpAuthKeyPtr &key(sessionData->getKey()); @@ -2854,36 +2884,6 @@ void MTProtoConnectionPrivate::onConnected() { sendRequestNotSecure(req_pq); } -bool MTProtoConnectionPrivate::updateAuthKey() { - QReadLocker lockFinished(&sessionDataMutex); - if (!sessionData || !conn) return false; - - DEBUG_LOG(("AuthKey Info: MTProtoConnection updating key from MTProtoSession, dc %1").arg(dc)); - uint64 newKeyId = 0; - { - ReadLockerAttempt lock(sessionData->keyMutex()); - if (!lock) { - DEBUG_LOG(("MTP Info: could not lock auth_key for read, waiting signal emit")); - clearMessages(); - keyId = newKeyId; - return true; // some other connection is getting key - } - const mtpAuthKeyPtr &key(sessionData->getKey()); - newKeyId = key ? key->keyId() : 0; - } - if (keyId != newKeyId) { - clearMessages(); - keyId = newKeyId; - } - DEBUG_LOG(("AuthKey Info: MTProtoConnection update key from MTProtoSession, dc %1 result: %2").arg(dc).arg(mb(&keyId, sizeof(keyId)).str())); - if (keyId) { - authKeyCreated(); - return true; - } - DEBUG_LOG(("AuthKey Info: Key update failed")); - return false; -} - void MTProtoConnectionPrivate::clearMessages() { if (keyId && keyId != mtpAuthKey::RecreateKeyId && conn) { conn->received().clear(); @@ -3481,7 +3481,14 @@ MTProtoConnectionPrivate::~MTProtoConnectionPrivate() { void MTProtoConnectionPrivate::stop() { QWriteLocker lockFinished(&sessionDataMutex); - sessionData = 0; + if (sessionData) { + if (myKeyLock) { + sessionData->owner()->notifyKeyCreated(mtpAuthKeyPtr()); // release key lock, let someone else create it + sessionData->keyMutex()->unlock(); + myKeyLock = false; + } + sessionData = 0; + } } MTProtoConnection::~MTProtoConnection() { diff --git a/Telegram/SourceFiles/mtproto/mtpConnection.h b/Telegram/SourceFiles/mtproto/mtpConnection.h index 6402277b0..7708b771f 100644 --- a/Telegram/SourceFiles/mtproto/mtpConnection.h +++ b/Telegram/SourceFiles/mtproto/mtpConnection.h @@ -366,7 +366,7 @@ public slots: // Sessions signals, when we need to send something void tryToSend(); - bool updateAuthKey(); + void updateAuthKey(); void onConfigLoaded(); diff --git a/Telegram/SourceFiles/mtproto/mtpDC.cpp b/Telegram/SourceFiles/mtproto/mtpDC.cpp index 5d9635a7b..bbd5b28f8 100644 --- a/Telegram/SourceFiles/mtproto/mtpDC.cpp +++ b/Telegram/SourceFiles/mtproto/mtpDC.cpp @@ -56,6 +56,20 @@ int32 mtpMainDC() { return mainDC; } +namespace { + QMap logoutGuestMap; // dcWithShift to logout request id + bool logoutDone(mtpRequestId req) { + for (QMap::iterator i = logoutGuestMap.begin(); i != logoutGuestMap.end(); ++i) { + if (i.value() == req) { + MTP::killSession(i.key()); + logoutGuestMap.erase(i); + return true; + } + } + return false; + } +} + void mtpLogoutOtherDCs() { QList dcs; { @@ -64,7 +78,7 @@ void mtpLogoutOtherDCs() { } for (int32 i = 0, cnt = dcs.size(); i != cnt; ++i) { if (dcs[i] != MTP::maindc()) { - MTP::send(MTPauth_LogOut(), RPCResponseHandler(), dcs[i]); + logoutGuestMap.insert(MTP::lgt + dcs[i], MTP::send(MTPauth_LogOut(), rpcDone(&logoutDone), rpcFail(&logoutDone), MTP::lgt + dcs[i])); } } } @@ -154,7 +168,11 @@ namespace { void mtpUpdateDcOptions(const QVector &options) { QSet already, restart; { - mtpDcOptions opts(cDcOptions()); + mtpDcOptions opts; + { + QReadLocker lock(mtpDcOptionsMutex()); + opts = cDcOptions(); + } for (QVector::const_iterator i = options.cbegin(), e = options.cend(); i != e; ++i) { const MTPDdcOption &optData(i->c_dcOption()); if (already.constFind(optData.vid.v) == already.cend()) { @@ -168,16 +186,26 @@ void mtpUpdateDcOptions(const QVector &options) { opts.insert(optData.vid.v, mtpDcOption(optData.vid.v, optData.vhostname.c_string().v, optData.vip_address.c_string().v, optData.vport.v)); } } - cSetDcOptions(opts); + { + QWriteLocker lock(mtpDcOptionsMutex()); + cSetDcOptions(opts); + } } for (QSet::const_iterator i = restart.cbegin(), e = restart.cend(); i != e; ++i) { MTP::restart(*i); } } +namespace { + QReadWriteLock _dcOptionsMutex; +} + +QReadWriteLock *mtpDcOptionsMutex() { + return &_dcOptionsMutex; +} + MTProtoConfigLoader::MTProtoConfigLoader() : _enumCurrent(0), _enumRequest(0) { connect(&_enumDCTimer, SIGNAL(timeout()), this, SLOT(enumDC())); - connect(this, SIGNAL(killCurrentSession(qint32,qint32)), this, SLOT(onKillCurrentSession(qint32,qint32)), Qt::QueuedConnection); } void MTProtoConfigLoader::load() { @@ -189,23 +217,15 @@ void MTProtoConfigLoader::load() { _enumDCTimer.start(MTPEnumDCTimeout); } -void MTProtoConfigLoader::onKillCurrentSession(qint32 request, qint32 current) { - if (request == _enumRequest && current == _enumCurrent) { - if (_enumRequest) { - MTP::cancel(_enumRequest); - _enumRequest = 0; - } - if (_enumCurrent) { - MTP::killSession(MTP::cfg + _enumCurrent); - _enumCurrent = 0; - } - } -} - void MTProtoConfigLoader::done() { _enumDCTimer.stop(); - if (_enumRequest || _enumCurrent) { - emit killCurrentSession(_enumRequest, _enumCurrent); + if (_enumRequest) { + MTP::cancel(_enumRequest); + _enumRequest = 0; + } + if (_enumCurrent) { + MTP::killSession(MTP::cfg + _enumCurrent); + _enumCurrent = 0; } emit loaded(); } @@ -220,14 +240,16 @@ void MTProtoConfigLoader::enumDC() { } else { MTP::killSession(MTP::cfg + _enumCurrent); } - const mtpDcOptions &options(cDcOptions()); - for (mtpDcOptions::const_iterator i = options.cbegin(), e = options.cend(); i != e; ++i) { - if (i.key() == _enumCurrent) { - _enumCurrent = (++i == e) ? options.cbegin().key() : i.key(); - break; + { + QReadLocker lock(mtpDcOptionsMutex()); + const mtpDcOptions &options(cDcOptions()); + for (mtpDcOptions::const_iterator i = options.cbegin(), e = options.cend(); i != e; ++i) { + if (i.key() == _enumCurrent) { + _enumCurrent = (++i == e) ? options.cbegin().key() : i.key(); + break; + } } } - _enumRequest = MTP::send(MTPhelp_GetConfig(), rpcDone(configLoaded), rpcFail(configFailed), MTP::cfg + _enumCurrent); _enumDCTimer.start(MTPEnumDCTimeout); diff --git a/Telegram/SourceFiles/mtproto/mtpDC.h b/Telegram/SourceFiles/mtproto/mtpDC.h index 4a5bd2c0d..403dc8615 100644 --- a/Telegram/SourceFiles/mtproto/mtpDC.h +++ b/Telegram/SourceFiles/mtproto/mtpDC.h @@ -72,12 +72,10 @@ public: public slots: void enumDC(); - void onKillCurrentSession(qint32 request, qint32 session); signals: void loaded(); - void killCurrentSession(qint32 request, qint32 session); private: @@ -104,3 +102,4 @@ mtpKeysMap mtpGetKeys(); void mtpSetKey(int32 dc, mtpAuthKeyPtr key); void mtpUpdateDcOptions(const QVector &options); +QReadWriteLock *mtpDcOptionsMutex(); diff --git a/Telegram/SourceFiles/mtproto/mtpSession.cpp b/Telegram/SourceFiles/mtproto/mtpSession.cpp index a38e01273..89c3fa623 100644 --- a/Telegram/SourceFiles/mtproto/mtpSession.cpp +++ b/Telegram/SourceFiles/mtproto/mtpSession.cpp @@ -63,11 +63,15 @@ void MTPSessionData::clear() { } -MTProtoSession::MTProtoSession() : data(this), dcId(0), dc(0), msSendCall(0), msWait(0), _ping(false) { +MTProtoSession::MTProtoSession() : _killed(false), data(this), dcWithShift(0), dc(0), msSendCall(0), msWait(0), _ping(false) { } void MTProtoSession::start(int32 dcenter) { - if (dcId) { + if (_killed) { + DEBUG_LOG(("Session Error: can't start a killed session")); + return; + } + if (dcWithShift) { DEBUG_LOG(("Session Info: MTProtoSession::start called on already started session")); return; } @@ -84,8 +88,8 @@ void MTProtoSession::start(int32 dcenter) { connections.reserve(cConnectionsInSession()); for (uint32 i = 0; i < cConnectionsInSession(); ++i) { connections.push_back(new MTProtoConnection()); - dcId = connections.back()->start(&data, dcenter); - if (!dcId) { + dcWithShift = connections.back()->start(&data, dcenter); + if (!dcWithShift) { for (MTProtoConnections::const_iterator j = connections.cbegin(), e = connections.cend(); j != e; ++j) { delete *j; } @@ -94,11 +98,12 @@ void MTProtoSession::start(int32 dcenter) { return; } if (!dc) { - dcenter = dcId; - MTProtoDCMap::const_iterator dcIndex = dcs.constFind(dcId % _mtp_internal::dcShift); + dcenter = dcWithShift; + int32 dcId = dcWithShift % _mtp_internal::dcShift; + MTProtoDCMap::const_iterator dcIndex = dcs.constFind(dcId); if (dcIndex == dcs.cend()) { - dc = MTProtoDCPtr(new MTProtoDC(dcId % _mtp_internal::dcShift, mtpAuthKeyPtr())); - dcs.insert(dcId % _mtp_internal::dcShift, dc); + dc = MTProtoDCPtr(new MTProtoDC(dcId, mtpAuthKeyPtr())); + dcs.insert(dcWithShift % _mtp_internal::dcShift, dc); } else { dc = dcIndex.value(); } @@ -115,18 +120,32 @@ void MTProtoSession::start(int32 dcenter) { } void MTProtoSession::restart() { + if (_killed) { + DEBUG_LOG(("Session Error: can't restart a killed session")); + return; + } emit needToRestart(); } void MTProtoSession::stop() { - DEBUG_LOG(("Session Info: stopping session %1").arg(dcId)); + DEBUG_LOG(("Session Info: stopping session dcWithShift %1").arg(dcWithShift)); while (!connections.isEmpty()) { connections.back()->stop(); connections.pop_back(); } } +void MTProtoSession::kill() { + stop(); + _killed = true; + DEBUG_LOG(("Session Info: marked session dcWithShift %1 as killed").arg(dcWithShift)); +} + void MTProtoSession::sendAnything(quint64 msCanWait) { + if (_killed) { + DEBUG_LOG(("Session Error: can't send anything in a killed session")); + return; + } uint64 ms = getms(true); if (msSendCall) { if (ms > msSendCall + msWait) { @@ -141,11 +160,11 @@ void MTProtoSession::sendAnything(quint64 msCanWait) { msWait = msCanWait; } if (msWait) { - DEBUG_LOG(("MTP Info: dc %1 can wait for %2ms from current %3").arg(dcId).arg(msWait).arg(msSendCall)); + DEBUG_LOG(("MTP Info: dcWithShift %1 can wait for %2ms from current %3").arg(dcWithShift).arg(msWait).arg(msSendCall)); msSendCall = ms; sender.start(msWait); } else { - DEBUG_LOG(("MTP Info: dc %1 stopped send timer, can wait for %2ms from current %3").arg(dcId).arg(msWait).arg(msSendCall)); + DEBUG_LOG(("MTP Info: dcWithShift %1 stopped send timer, can wait for %2ms from current %3").arg(dcWithShift).arg(msWait).arg(msSendCall)); sender.stop(); msSendCall = 0; needToResumeAndSend(); @@ -153,20 +172,24 @@ void MTProtoSession::sendAnything(quint64 msCanWait) { } void MTProtoSession::needToResumeAndSend() { + if (_killed) { + DEBUG_LOG(("Session Info: can't resume a killed session")); + return; + } if (connections.isEmpty()) { - DEBUG_LOG(("Session Info: resuming session %1").arg(dcId)); + DEBUG_LOG(("Session Info: resuming session dcWithShift %1").arg(dcWithShift)); MTProtoDCMap &dcs(mtpDCMap()); connections.reserve(cConnectionsInSession()); for (uint32 i = 0; i < cConnectionsInSession(); ++i) { connections.push_back(new MTProtoConnection()); - if (!connections.back()->start(&data, dcId)) { + if (!connections.back()->start(&data, dcWithShift)) { for (MTProtoConnections::const_iterator j = connections.cbegin(), e = connections.cend(); j != e; ++j) { delete *j; } connections.clear(); - DEBUG_LOG(("Session Info: could not start connection %1 to dc %2").arg(i).arg(dcId)); - dcId = 0; + DEBUG_LOG(("Session Info: could not start connection %1 to dcWithShift %2").arg(i).arg(dcWithShift)); + dcWithShift = 0; return; } } @@ -259,11 +282,11 @@ void MTProtoSession::checkRequestsByTimer() { } void MTProtoSession::onConnectionStateChange(qint32 newState) { - _mtp_internal::onStateChange(dcId, newState); + _mtp_internal::onStateChange(dcWithShift, newState); } void MTProtoSession::onResetDone() { - _mtp_internal::onSessionReset(dcId); + _mtp_internal::onSessionReset(dcWithShift); } void MTProtoSession::cancel(mtpRequestId requestId, mtpMsgId msgId) { @@ -428,23 +451,23 @@ QReadWriteLock *MTProtoSession::keyMutex() const { } void MTProtoSession::authKeyCreatedForDC() { - DEBUG_LOG(("AuthKey Info: MTProtoSession::authKeyCreatedForDC slot, emitting authKeyCreated(), dc %1").arg(dcId)); + DEBUG_LOG(("AuthKey Info: MTProtoSession::authKeyCreatedForDC slot, emitting authKeyCreated(), dcWithShift %1").arg(dcWithShift)); data.setKey(dc->getKey()); emit authKeyCreated(); } void MTProtoSession::notifyKeyCreated(const mtpAuthKeyPtr &key) { - DEBUG_LOG(("AuthKey Info: MTProtoSession::keyCreated(), setting, dc %1").arg(dcId)); + DEBUG_LOG(("AuthKey Info: MTProtoSession::keyCreated(), setting, dcWithShift %1").arg(dcWithShift)); dc->setKey(key); } void MTProtoSession::layerWasInitedForDC(bool wasInited) { - DEBUG_LOG(("MTP Info: MTProtoSession::layerWasInitedForDC slot, dc %1").arg(dcId)); + DEBUG_LOG(("MTP Info: MTProtoSession::layerWasInitedForDC slot, dcWithShift %1").arg(dcWithShift)); data.setLayerWasInited(wasInited); } void MTProtoSession::notifyLayerInited(bool wasInited) { - DEBUG_LOG(("MTP Info: emitting MTProtoDC::layerWasInited(%1), dc %2").arg(logBool(wasInited)).arg(dcId)); + DEBUG_LOG(("MTP Info: emitting MTProtoDC::layerWasInited(%1), dcWithShift %2").arg(logBool(wasInited)).arg(dcWithShift)); dc->setConnectionInited(wasInited); emit dc->layerWasInited(wasInited); } @@ -453,7 +476,7 @@ void MTProtoSession::destroyKey() { if (!dc) return; if (data.getKey()) { - DEBUG_LOG(("MTP Info: destroying auth_key for dc %1").arg(dcId)); + DEBUG_LOG(("MTP Info: destroying auth_key for dcWithShift %1").arg(dcWithShift)); if (data.getKey() == dc->getKey()) { dc->destroyKey(); } @@ -461,8 +484,8 @@ void MTProtoSession::destroyKey() { } } -int32 MTProtoSession::getDC() const { - return dcId; +int32 MTProtoSession::getDcWithShift() const { + return dcWithShift; } void MTProtoSession::tryToReceive() { @@ -481,7 +504,7 @@ void MTProtoSession::tryToReceive() { responses.erase(i); } if (requestId <= 0) { - if (dcId < int(_mtp_internal::dcShift)) { // call globalCallback only in main session + if (dcWithShift < int(_mtp_internal::dcShift)) { // call globalCallback only in main session _mtp_internal::globalCallback(response.constData(), response.constData() + response.size()); } } else { diff --git a/Telegram/SourceFiles/mtproto/mtpSession.h b/Telegram/SourceFiles/mtproto/mtpSession.h index 7e0145d71..3743f247d 100644 --- a/Telegram/SourceFiles/mtproto/mtpSession.h +++ b/Telegram/SourceFiles/mtproto/mtpSession.h @@ -224,8 +224,9 @@ public: void start(int32 dcenter = 0); void restart(); void stop(); + void kill(); - int32 getDC() const; + int32 getDcWithShift() const; ~MTProtoSession(); QReadWriteLock *keyMutex() const; @@ -275,10 +276,12 @@ private: typedef QList MTProtoConnections; MTProtoConnections connections; + + bool _killed; MTPSessionData data; - int32 dcId; + int32 dcWithShift; MTProtoDCPtr dc; uint64 msSendCall, msWait; diff --git a/Telegram/SourceFiles/mtproto/mtpSessionImpl.h b/Telegram/SourceFiles/mtproto/mtpSessionImpl.h index 79e519e15..033cab32d 100644 --- a/Telegram/SourceFiles/mtproto/mtpSessionImpl.h +++ b/Telegram/SourceFiles/mtproto/mtpSessionImpl.h @@ -37,6 +37,6 @@ mtpRequestId MTProtoSession::send(const TRequest &request, RPCResponseHandler ca requestId = 0; _mtp_internal::rpcErrorOccured(requestId, callbacks, rpcClientError("NO_REQUEST_ID", QString("send() failed to queue request, exception: %1").arg(e.what()))); } - if (requestId) _mtp_internal::registerRequest(requestId, toMainDC ? -getDC() : getDC()); + if (requestId) _mtp_internal::registerRequest(requestId, toMainDC ? -getDcWithShift() : getDcWithShift()); return requestId; }