Author Topic: StatusManager не закрывает сессию ICQ при выходе из Miranda  (Read 925 times)

0 Members and 1 Guest are viewing this topic.

Offline eugenyTopic starter

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
У меня наблюдается некорректное поведение модуля Startup status (входит в состав StatusManager) по отношению к закрытию сессии ICQ. Я установил галочку в пункте "Set status to offline before exit", но почему-то примерно в 50% случаев сессия ICQ остаётся открытой после выхода из программы (проверял список открытых сессий, заходя на https://icq.com/session/list/ru ). Операционная система - Windows 2003 Server R2 x86. Версия Миранды - последняя бета.

Впечатление такое, что программа настолько быстро закрывается, так что плагин не успевает отправить команду на закрытие сессии и получить подтверждение, что сессия закрыта. Тайм-аут бы какой-нибудь ввести тут не помешало, чтобы замедлить закрытие программы.

P.S. Опробовал на другом компьютере с Windows Server 2008 x86 на борту - та же картина (сессия ICQ закрывается не всегда).
« Last Edit: 03 07 2020, 13:39:46 by eugeny »
 

Offline dartraiden

Наша реализация протокола ICQ сама завершает сессию (если пользователь влогинен через постоянный пароль, а не одноразовый), не нужно ничего делать через StatusManager.

Пробуйте на 0.95.12, там был фикс ошибки, из-за которой сессия не закрывалась иногда.

Если не закрывает, то это нужно исправлять в протоколе, понадобится на версии 0.95.12 сделать нетлог протокола ICQ при выходе, чтобы в него попал момент, когда сессия должна была закрыться, но не закрылась.
« Last Edit: 03 07 2020, 17:30:51 by dartraiden »
_██_
(°ᴗƪ)
 

Offline eugenyTopic starter

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Я, собственно, плагин StatusManager подтянул, когда у меня часто не закрывалась сессия при выходе из программы.  Раз говорите, что пофиксили закрытие сессии в последних 0.95.12, то... 
В общем, галочку "Set status to offline before exit" в плагине снял, а нетлог включил - понаблюдаю за поведением протокола ICQ. Если что-то будет не так, то лог пришлю.
 

Offline dartraiden

StatusManager тут вообще никак не поможет. Если протокол убивает сессию при уходе в оффлайн, то он её убивает и при завершении Миранды. А если не убивает при уходе в оффлайн (не умеет или из-за ошибки), то StatusManager уведет его в оффлайн и... ничего. Сам StatusManager про сессии вообще не знает, это не его дело.

В принципе, сессию вообще убивать не стоит, это костыль, введённый временно, пока разработчик Mandarin ICQ не реализует у себя работу с серверной историей. Без неё Mandarin не получает оффлайн-сообщения, если висит чужая открытая сессия. А пользователям, у которых учётка ICQ зарегана недавно и не имеет постоянного пароля (для новых учёток постоянный пароль установить невозможно), вынуждены жить с открытой сессией, закрытие сессии ведет к лютому для них геморрою.
« Last Edit: 05 07 2020, 16:51:06 by dartraiden »
_██_
(°ᴗƪ)
 

Offline eugenyTopic starter

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Вот пример сессии ICQ, которая не закрылась (netlog прилагаю). Логин ICQ у меня с 1997 года, пароль постоянный - не менял его уже несколько лет.

Кстати, есть ещё вопрос по коннектам с сервером по протоколу ICQ. Если ставлю галочку "Validate SSL certificate", то под 2003 Server программа не коннектится - пишет об ошибке "сертификат выдан другому серверу". Пришлось галочку снять несколько месяцев назад. А вот под 2008 Server нормально коннектится с проверкой сертификата.  Какой то новый алгоритм шифрования в обновлённом протоколе ICQ, несовместимый со старыми версиями Windows?
« Last Edit: 08 07 2020, 15:06:49 by eugeny »
 

Offline dartraiden

TLS 1.2, вероятно. В вики написано, как поставить патчи от XP Embedded.
« Last Edit: 06 07 2020, 09:42:10 by dartraiden »
_██_
(°ᴗƪ)
 

Offline Apollo2k4

Какой-то новый алгоритм шифрования, несовместимый со старыми версиями Windows, в обновлённом протоколе ICQ?
Или устаревшие корневые сертификаты т.к. не собирается цепочка доверия.
«Все глупости совершаются с серьёзным выражением лица» © Кён «Меланхолия Сузумии Харухи»

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

Tox ID: apollo2k4@toxme.io
 

Offline dartraiden

Да, корневые сертификаты желательно обновить.
http://media.kaspersky.com/utilities/CorporateUtilities/rootsupd.zip
_██_
(°ᴗƪ)
 
The following users thanked this post: Apollo2k4

Offline eugenyTopic starter

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
корневые сертификаты желательно обновить
Точно таким файлом несколько лет назад обновлял сертификаты (хешсуммы совпадают).
 

Offline eugenyTopic starter

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
патчи от XP Embedded

Патч от XP Embedded на 2003 Server не ставится - всё-таки это не XP!

Для включения TLS 1.2 на 2003 Server я пробовал алгоритм действий, описанный здесь, но ничего не вышло - сертификат сервера ICQ всё равно не валидится. А в прошлом году с его  валидацией проблем не было. Оновление корневых сертификатов не помогает - тут что-то другое. Я даже пробовал обновлять корневые сертификаты, взяв их из Windows 7,  где они всегда свежие (сгенерил список сертификатов с  помощью certutil, затем внедрил их на 2003 Server) - не помогло.
 

Offline dartraiden

А в прошлом году с его  валидацией проблем не было.
В этом году на серверах ICQ включили TLS 1.2, видимо и ещё что-то поменяли.
Это не к нам, серверами рулит Mail.ru

Как вариант, поставьте плагин OpenSSL, тогда вместо WinCrypto шифрованием займётся OpenSSL.
« Last Edit: 06 07 2020, 13:11:03 by dartraiden »
_██_
(°ᴗƪ)
 

Offline eugenyTopic starter

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Как вариант, поставьте плагин OpenSSL
Этот вариант я тоже пробовал. Не работает под 2003 Server.
Собственно, это не так уж и важно - валидация сертификата. Снял галочку и коннекчусь без валидации. Это был дополнительный вопрос.

Я эту тему создал, поскольку неудобство доставляет именно то, что сессия ICQ не закрывается по выходу из программы. Приходится вручную переводить статус в Offline перед закрытием программы. А это - лишнее действие, которого можно было бы избежать.
 

Offline dartraiden

Я эту тему создал, поскольку неудобство доставляет именно то, что сессия ICQ не закрывается по выходу из программы.
Судя по логу, протокол честно попытался закрыть сессию, но запрос нарвался на уже закрытый к этому моменту (завершение работы приложения идёт полным ходом) сокет. У вас интернет медленный?
« Last Edit: 07 07 2020, 13:26:10 by dartraiden »
_██_
(°ᴗƪ)
 

Offline eugenyTopic starter

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
У вас интернет медленный?
Вообще, должно быть 100 Mbit/s. Но по тестам 2ip.ru/speed реальная скорость в разные дни составляет 80-90 Mbit/s на приём/отправку данных. Тестировал с близко расположенными сайтами (Новосибирск, Барнаул, Красноярск).
 
Я так и понял, что приложение терминируется операционной системой быстрее, чем успевает отлогиниться от серверов ICQ. В первом посте об этом и писал. 

Не знаю, медленный интернет тут виноват или "слишком умный" компьютер, который выгружает процесс из памяти в долю секунды, а, может быть, это антивирус как-то процесс разлогинивания тормозит. Думал, что плагин StatusManager как-то тут поможет, ибо увидел там слово before в настройке "Set status to offline before exit". Увы!
« Last Edit: 07 07 2020, 15:51:53 by eugeny »
 

Offline eugenyTopic starter

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Даже такую хитрость пробовал - включил autobackup с архивацией при выходе из Miranda. Думал, что так на пару секунд можно затормозить закрытие приложения, но обнаружил, что бэкап делается раньше, чем disconnect с сервером ICQ. В общем, это не помогло.
Можно ли эти два действия переставить местами в программном коде (чтоб сначала шёл дисконнект, а только потом аутобэкап)? Между этими двумя действиями можно было бы и тайм-аут, настраиваемый пользователем, ввести. Кажется, это решило бы все проблемы.