Author Topic: Обновление ICQ.dll поломало Status manager  (Read 7203 times)

0 Members and 1 Guest are viewing this topic.

Offline dartraiden

Re: Обновление ICQ.dll поломало Status manager
« Reply #15 on: 11 01 2020, 16:46:05 »
А какой конкретно билд ICQ.dll работает корректно? Понятно, что декабрьский, а точнее? Покажите информацию о версиях
« Last Edit: 12 01 2020, 06:10:33 by dartraiden »
 

Offline -SM-

Re: Обновление ICQ.dll поломало Status manager
« Reply #16 on: 12 01 2020, 07:11:09 »
С каким-то из ночников пришло странное поведение при коннекте. При первом запуске миранды все отлично соединяется. В дальнейшем, после любого попадания в оффлайн независимо от причины, хоть руками, хоть от ухода ноута в спячку, хоть от пропадания коннекта, при переходе заново в онлайн оно просто мгновенно меняет статус  на "онлайн", вероятно, ничего при этом другого не делая (не "крутится" процесс коннекта перед этим). Ну и не появляются статусы контактов, и ничего не работает. Выход из миранды целиком и вход обратно - и опять все ОК до ближайшего перехода в оффлайн.
Это что-то в каких-то настройках у меня, или это вообще так на текущих нескольких последних сборках аськи?
 

Offline laris

Re: Обновление ICQ.dll поломало Status manager
« Reply #17 on: 12 01 2020, 08:28:41 »
Сделал. На этой версии ICQ.dll все работает.
« Last Edit: 12 01 2020, 10:57:12 by laris »
 

Offline Apollo2k4

Re: Обновление ICQ.dll поломало Status manager
« Reply #18 on: 12 01 2020, 09:18:09 »
-SM-, проблема известна, сейчас собираем информацию, уточните на какой версии последний раз было нормально.
«Все глупости совершаются с серьёзным выражением лица» © Кён «Меланхолия Сузумии Харухи»

Правильно заданный вопрос – 50% решения.
Правила постинга
 

Offline -SM-

Re: Обновление ICQ.dll поломало Status manager
« Reply #19 on: 12 01 2020, 10:43:46 »
уточните на какой версии последний раз было нормально.
Знать бы. Я это сначала списывал на тупой и тормозной канал связи, так как был далеко на просторах Родины через модем. А когда понял, что дело не в этом, уже обновился, и не факт, что один раз. А есть где нибудь архив обновлений, чтобы пооткатываться?

UPD:
IMHO, на коммите, где OnLoggedOut переносили... Где-то в самом начале января. Но не уверен
« Last Edit: 12 01 2020, 11:05:51 by -SM- »
 

Offline laris

Re: Обновление ICQ.dll поломало Status manager
« Reply #20 on: 12 01 2020, 11:17:53 »
-SM-, Закиньте этот ICQ.dll в папку Plugins и проверьте, должно работать.

А что со временем на сайте? Отстает на пару часов, это нормально?
« Last Edit: 12 01 2020, 11:51:51 by laris »
 
The following users thanked this post: -SM-

Offline -SM-

Re: Обновление ICQ.dll поломало Status manager
« Reply #21 on: 12 01 2020, 11:48:34 »
Закиньте этот ICQ.dll
Увы, гранаты не той системы - мне нужны 64-битные....
 

Offline Apollo2k4

Re: Обновление ICQ.dll поломало Status manager
« Reply #22 on: 12 01 2020, 12:34:23 »
А что со временем на сайте? Отстает на пару часов, это нормально?
В настройках профиля поставьте правильный часовой пояс.
«Все глупости совершаются с серьёзным выражением лица» © Кён «Меланхолия Сузумии Харухи»

Правильно заданный вопрос – 50% решения.
Правила постинга
 

Offline -SM-

Re: Обновление ICQ.dll поломало Status manager
« Reply #23 on: 12 01 2020, 20:46:51 »
Закиньте этот ICQ.dll в папку
А не могли бы Вы diff выложить, чтобы я сам себе собрал 64-битную версию? Или оно вот-вот в коммиты попадет ?
 

Offline Apollo2k4

Re: Обновление ICQ.dll поломало Status manager
« Reply #24 on: 12 01 2020, 22:27:13 »
-SM-, в архиве лежит версия от 16.12.2019 01:03:08, скорее всего это коммит c296f490370ae3c727d8679b70e025838047d82f от 15 числа или около того +- 1-2 коммита, смотреть и пробовать можно тут, всё на свой страх и риск.
«Все глупости совершаются с серьёзным выражением лица» © Кён «Меланхолия Сузумии Харухи»

Правильно заданный вопрос – 50% решения.
Правила постинга
 
The following users thanked this post: -SM-

Offline -SM-

Re: Обновление ICQ.dll поломало Status manager
« Reply #25 on: 13 01 2020, 09:28:42 »
смотреть и пробовать можно тут,
Спасибо. О "там" то я знаю... Придется ставить VS 2019. А то для всех моих задач я пользуюсь VS2008 (я пишу драйвера железа и прочее внутреннее-системное, невидимое пользователю), а это им просто так не собирается.Я надеялся на то, что где-то есть архив того, что через апдейтер приходило, хотя бы за год последний.
 

Offline -SM-

Re: Обновление ICQ.dll поломало Status manager
« Reply #26 on: 13 01 2020, 10:07:32 »
Объясняю суть проблемы.
При смене статуса с онлайна на оффлайн (после того самого коммита) перестал вызываться CIcqProto::OnLoggedOut(). Вызывается CIcqProto::ShutdownSession, но, из-за того, что из него вызов OnLoggedOut убран, флаг m_bOnline не снимается (это делается в OnLoggedOut). Далее, при следующем онлайне, в CIcqProto::SetStatus просто все обходится к чертям собачьим, так как m_bOnline == true.

Это поведение отлично видно сразу же из нетлога:

Code: [Select]
[13:01:25 1860] SSL established with ECDHE-RSA-AES256-GCM-SHA384
[13:01:25 1860] [ICQ] (1532 u.icq.net) SSL negotiation successful
[13:01:25 1B98] [ICQ] Executing request 3cbac721-dfa6-4a68-b1d3-762395eaaacb:
https://u.icq.net/bos/bos-d013g/aim/fetchEvents?aimsid=091.0444317533.0687774958:300659245&rnd=1578909688.796512&seqNum=531&timeout=25000
[13:01:25 1860] [ICQ] Executing request 92e41be6-d8d9-4c44-8829-451c7d517693:
https://u.icq.net/wim/aim/endSession?f=json&aimsid=091.0444317533.0687774958%3A300659245&r=92e41be6-d8d9-4c44-8829-451c7d517693
[13:01:25 1B98] [ICQ] Executing request e6dcd7b6-311b-45c0-b590-cf434d561e48:
https://u.icq.net/bos/bos-d013g/aim/fetchEvents?aimsid=091.0444317533.0687774958:300659245&rnd=1578909688.803627&seqNum=541&timeout=25000
[13:01:25 1B98] [ICQ] CIcqProto::ShutdownSession
[13:01:25 1B98] [ICQ] Polling thread ended
[13:02:05 2A08] [ICQ] CIcqProto::SetStatus iNewStatus = 40072, m_iStatus = 40071, m_iDesiredStatus = 40071 m_hWorkerThread = 0000000000000360
[13:02:05 2A08] [ICQ] setting server online status to 40072


PS
как это корректно устранить, я не знаю, так как не знаю все модели софтины в целом. Но если в CIcqProto::ShutdownSession добавить m_bOnline = false; то все начинает работать. Но я не знаю, достаточно ли этого, и не надо ли делать что-то еще из OnLoggedOut при этом.
« Last Edit: 13 01 2020, 10:22:35 by Apollo2k4 »
 

Offline ghazan

Re: Обновление ICQ.dll поломало Status manager
« Reply #27 on: 13 01 2020, 10:48:02 »
-SM-,
Жесть, сейчас гляну, спасибо. Там идея в том, что CIcqProto::OnLoggedOut() отрабатывает при разрушении служебного потока, который обслуживает сессию, и как при окончании сессии может не разваливаться поток - это загадка.

PS: твоя правда, не вызывается. Щас будет
« Last Edit: 13 01 2020, 11:12:45 by ghazan »
 
The following users thanked this post: -SM-

Offline -SM-

Re: Обновление ICQ.dll поломало Status manager
« Reply #28 on: 13 01 2020, 11:12:54 »
Жесть
Так ИМХО потому, что m_bTerminated никогда не ставится, потому что CIcqProto::OnShutdown() ниоткуда не вызывается.
 

Offline ghazan

Re: Обновление ICQ.dll поломало Status manager
« Reply #29 on: 13 01 2020, 12:32:22 »
m_bTerminated ставится, когда Миранда разваливается на выходе.

Я просто зря скопировал код из Фейсбука, потому что в миранде поток, обслуживающий аськины http requests, живет постоянно, даже в оффлайне, чтобы грузить аватары, например, или кидать файлы в оффлайн. Есть, кстати, сомнение, что оно будет работать, ибо без идентификатора сессии никаких чудес происходить не будет...

Вернул пока эту дурь на место, потом будем разбираться. Билд вылился на сервер, можно обновляться