Miranda NG Official Community Forum
Miranda NG русскоязычный форум => Плагины => Topic started by: laris on 09 01 2020, 11:20:55
-
После последнего обновления icq.dll перестал нормально работать Status manager. При пропадании сети соединение не переподключается, хотя визуально миранда в сети, так же, как и те контакты, что были в сети до разрыва. Так же при изменении статуса на "Не в сети" и последующем подключении, миранда остается оффлайн, контакты не в сети, хотя значек миранды загорается зеленым. В принципе этот глюк заметен и без Status manager, повторное подключение вручную не дает результата, приходится только перезапускать программу. Miranda NG 0.95.11 x86 Windows 7
-
laris, хорошо бы нетлог (https://wiki.miranda-ng.org/index.php?title=Network_log/ru) этого момента, протокол особо не меняли после того как адаптировали весной 2019
-
Сделал. Выбираю статус "Не в сети", потом "В сети".
-
laris,
HttpPeekFirstResponseLine Failed (1460 10)
1460 - это таймаут, скорее всего, в вашей организации перекрыт доступ к ICQ
-
Обычный домашний интернет, не организация. Аська работает и подключается нормально при запуске. А вот при разрыве связи не может обратно ее восстановить и то же самое при ручном изменении статусов. Кстати, со старым icq.dll, недельной давности, все ок.
-
laris, судя по коммитам (https://github.com/miranda-ng/miranda-ng/commits/master/protocols/ICQ-WIM) ничего сильно не изменилось, проверьте корректность системного времени на ПК
-
А что со временем? Со временем все ок вроде.
Вот нетлог аналогичных действий с icq.dll от 16.12.2019 Здесь переподключение не сразу, но происходит.
-
laris,
тут всё нормально, да[17:39:18 1FC0] [ICQ] Connection request to u.icq.net:443 (Flags 11)....
[17:39:18 1FC0] [ICQ] (03220CF8) Connecting to server u.icq.net:443....
[17:39:18 1FC0] [ICQ] (03220CF8) Connecting to ip 178.237.20.123:443 ....
[17:39:18 1FC0] [ICQ] (1208) Connected to u.icq.net:443
[17:39:18 1FC0] [ICQ] (1208 u.icq.net) Starting SSL negotiation
[17:39:18 1FC0] [ICQ] (1208 u.icq.net) SSL negotiation successful
[17:39:18 1FC0] [ICQ] (03220CF8:1208) Data received
а в том логе всё не так хорошо, и это от Миранды никак, увы, не зависит
-
Ну так программа одна, система одна, я только подкинул старый icq.dll в папку плагины и получил нормальный результат. А при обновлении на новый icq.dll все плохо. В чем же дело?
-
Дело, очевидно, в том, что Status Manager тут не при чём.
-
Да, он ни при чем. Глючит и без него.
В общем вернул декабрьский icq.dll и отключил обновления. Надеюсь почините.
-
Надеюсь почините.
Вот в этом то и проблема, что проблема проявилась только у вас, ну или по крайней мере только вы о ней заявили, а фиксить проблему которой нет у остальных странное занятие. Так что без вашей помощи не обойдёмся.
-
Так а чем я могу помочь? Если что, пишите.Кстати, насчет системного времени. Я пользуюсь программой KRT для сброса лицензии Kaspersky Internet Security. В последних версиях она делает что-то с системным временем, оно тоже сбрасывается, но после перезагрузки восстанавливается. Может это как то влияет? Но опять же, с предыдущим icq.dll все нормально, стоит его закинуть в папку плагины.
-
Так а чем я могу помочь?
Сейчас два человека говорят о двух разных проблемах которые проявляются только у них, никто не может воспроизвести их у себя, решите проблему которая у меня есть но какая я не понимаю. Попробуйте поиграться с настройками фаервола может он считает что миранда подозрительная.
-
Не, я отключал это все, не влияет.
-
А какой конкретно билд ICQ.dll работает корректно? Понятно, что декабрьский, а точнее? Покажите информацию о версиях (https://wiki.miranda-ng.org/index.php?title=Version_information)
-
С каким-то из ночников пришло странное поведение при коннекте. При первом запуске миранды все отлично соединяется. В дальнейшем, после любого попадания в оффлайн независимо от причины, хоть руками, хоть от ухода ноута в спячку, хоть от пропадания коннекта, при переходе заново в онлайн оно просто мгновенно меняет статус на "онлайн", вероятно, ничего при этом другого не делая (не "крутится" процесс коннекта перед этим). Ну и не появляются статусы контактов, и ничего не работает. Выход из миранды целиком и вход обратно - и опять все ОК до ближайшего перехода в оффлайн.
Это что-то в каких-то настройках у меня, или это вообще так на текущих нескольких последних сборках аськи?
-
Сделал. На этой версии ICQ.dll все работает.
-
-SM-, проблема известна, сейчас собираем информацию, уточните на какой версии последний раз было нормально.
-
уточните на какой версии последний раз было нормально.
Знать бы. Я это сначала списывал на тупой и тормозной канал связи, так как был далеко на просторах Родины через модем. А когда понял, что дело не в этом, уже обновился, и не факт, что один раз. А есть где нибудь архив обновлений, чтобы пооткатываться?
UPD:
IMHO, на коммите, где OnLoggedOut переносили... Где-то в самом начале января. Но не уверен
-
-SM-, Закиньте этот ICQ.dll в папку Plugins и проверьте, должно работать.
А что со временем на сайте? Отстает на пару часов, это нормально?
-
Закиньте этот ICQ.dll
Увы, гранаты не той системы - мне нужны 64-битные....
-
А что со временем на сайте? Отстает на пару часов, это нормально?
В настройках профиля поставьте правильный часовой пояс.
-
Закиньте этот ICQ.dll в папку
А не могли бы Вы diff выложить, чтобы я сам себе собрал 64-битную версию? Или оно вот-вот в коммиты попадет ?
-
-SM-, в архиве лежит версия от 16.12.2019 01:03:08, скорее всего это коммит c296f490370ae3c727d8679b70e025838047d82f (https://github.com/miranda-ng/miranda-ng/commit/0a779cd8a38b07d39832adf27b39e8a673b69251#diff-fa40e2dede5229b328a6e2b10729fc77) от 15 числа или около того +- 1-2 коммита, смотреть и пробовать можно тут (https://github.com/miranda-ng/miranda-ng/commits/master/protocols/ICQ-WIM), всё на свой страх и риск.
-
смотреть и пробовать можно тут,
Спасибо. О "там" то я знаю... Придется ставить VS 2019. А то для всех моих задач я пользуюсь VS2008 (я пишу драйвера железа и прочее внутреннее-системное, невидимое пользователю), а это им просто так не собирается.Я надеялся на то, что где-то есть архив того, что через апдейтер приходило, хотя бы за год последний.
-
Объясняю суть проблемы.
При смене статуса с онлайна на оффлайн (после того самого коммита) перестал вызываться CIcqProto::OnLoggedOut(). Вызывается CIcqProto::ShutdownSession, но, из-за того, что из него вызов OnLoggedOut убран, флаг m_bOnline не снимается (это делается в OnLoggedOut). Далее, при следующем онлайне, в CIcqProto::SetStatus просто все обходится к чертям собачьим, так как m_bOnline == true.
Это поведение отлично видно сразу же из нетлога:
[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 при этом.
-
-SM-,
Жесть, сейчас гляну, спасибо. Там идея в том, что CIcqProto::OnLoggedOut() отрабатывает при разрушении служебного потока, который обслуживает сессию, и как при окончании сессии может не разваливаться поток - это загадка.
PS: твоя правда, не вызывается. Щас будет
-
Жесть
Так ИМХО потому, что m_bTerminated никогда не ставится, потому что CIcqProto::OnShutdown() ниоткуда не вызывается.
-
m_bTerminated ставится, когда Миранда разваливается на выходе.
Я просто зря скопировал код из Фейсбука, потому что в миранде поток, обслуживающий аськины http requests, живет постоянно, даже в оффлайне, чтобы грузить аватары, например, или кидать файлы в оффлайн. Есть, кстати, сомнение, что оно будет работать, ибо без идентификатора сессии никаких чудес происходить не будет...
Вернул пока эту дурь на место, потом будем разбираться. Билд вылился на сервер, можно обновляться
-
Есть, кстати, сомнение, что оно будет работать
А оно и не может работать в принципе - когда в оффлайне я - я и не могу ничего и никому писать или кидать по определению. А когда кто-то в оффлайне, кому надо написать или кинуть файл, а не я, то этого потока это не касается от слова совсем.
Post Merge: 13 01 2020, 13:01:02
Билд вылился на сервер, можно обновляться
Спасибо.
Как-то полу-работает... То срабатывает, то нет. Кажется, зависит от времени того, сколько продержать ее в оффлайне. А может и не от этого.
-
А оно и не может работать в принципе - когда в оффлайне я
Разумеется, может, если сессию не прерывать при выходе. Вообще для протокола ICQ-WIM нет такого понятия - оффлайн или онлайн, от того, что ты передал какой-то статус на сервер, никому не тепло и не холодно. Если есть session key, всегда можно что-то послать.
А вот если прервать сессию при выходе в оффлайн, чтобы не конфликтовать с мобильными клиентами, то запомненный session key становится невалидным, и дальше пока его обновить, то счастья не будет.
-
А вот если прервать сессию при выходе в оффлайн, чтобы не конфликтовать с мобильными клиентами, то запомненный session key становится невалидным, и дальше пока его обновить, то счастья не будет.
Ну я это и имел ввиду, что под "оффлайн" подразумевается именно завершенная сессия, и смысл оффлайна конкретно в этом. А некое виртуальное изменение статуса на сервере - получается, похоже, не оффлайном в его физическом смысле, а неким эквивалентом "невидимости".
-
Придется ставить VS 2019
Если что, мы собираем Миранду 2017-й студией из-за необходимости поддержки XP. 2019-й, конечно, собирать можно, но я предпочитаю 2017, чтобы билд не отличались от тех, которые мы вываливаем пользователям.
-
Ну все работает отлично, после сегодняшнего обновления, всем спасибо. )
-
laris, только вот другие протоколы так не думают, два протокола пришлось править, третий потенциально :)