Author Topic: Опять меняется протокол ICQ?  (Read 414099 times)

0 Members and 1 Guest are viewing this topic.

Offline dartraiden

Re: Опять меняется протокол ICQ?
« Reply #855 on: 15 12 2019, 21:08:36 »
Логично. При запуске Миранды выполняется очистка NotInList. Затем, при подключении к сети, с сервера прилетает информация, что контакт переименовался в [deleted], и что он не в ростере. Контакт переименовывается и выкидывается в NotInList. При следующем запуске Миранды выполняется очистка NotInList и тут, по всей логике, должно сработать исключение ("если контакт не в локальном списке и называется не [deleted] - стереть").
« Last Edit: 15 12 2019, 21:10:43 by dartraiden »
 

Offline dartraiden

Re: Опять меняется протокол ICQ?
« Reply #856 on: 15 12 2019, 21:09:13 »
Кстати, после установки плагина DbEditorPP.dll Миранда крашится при её закрытии.
У меня не крашится, поэтому либо крашлог, либо ронять под отладчиком и смотреть стек.
 

Offline WAJIM

Re: Опять меняется протокол ICQ?
« Reply #857 on: 15 12 2019, 21:29:43 »
должно сработать исключение ("если контакт не в локальном списке и называется не [deleted] - стереть").
Может строки надо сравнивать через mir_wstrcmp() ?

Вообще, лучше добавить опцию для разрешения удаления контактов, которых нет в ростере, как это сделано в протоколе jabber.
Тогда можно будет не опасаться за утерю истории.
« Last Edit: 15 12 2019, 22:06:35 by WAJIM »
 

Offline dartraiden

Re: Опять меняется протокол ICQ?
« Reply #858 on: 16 12 2019, 12:31:39 »
Пробуем новый вариант, уже залилось.
 

Offline WAJIM

Re: Опять меняется протокол ICQ?
« Reply #859 on: 16 12 2019, 12:36:34 »
Ничего не изменилось. Серые контакты удаляются после перезапуска.

« Last Edit: 16 12 2019, 12:38:10 by WAJIM »
 

Offline dartraiden

Re: Опять меняется протокол ICQ?
« Reply #860 on: 16 12 2019, 12:41:21 »
У меня всё ок на 22362. Добавляем такой контакт в ростер, он получает флаг IcqDeleted в базе - это даёт ему иммунитет он выбрасывания в NotInList.

Добавьте свои серенькие в постоянный список, да и всё. Они больше не станут серыми.
« Last Edit: 16 12 2019, 12:44:12 by dartraiden »
 

Offline WAJIM

Re: Опять меняется протокол ICQ?
« Reply #861 on: 16 12 2019, 12:45:32 »
А если другие контакты по-тихому станут серыми и потом удалятся после очередного перезапуска?
 

Offline WAJIM

Re: Опять меняется протокол ICQ?
« Reply #862 on: 16 12 2019, 13:03:25 »
У меня всё ок на 22362. Добавляем такой контакт в ростер, он получает флаг IcqDeleted в базе
Добавляйте удаленный контакт руками в оффлайне. Потом подключайтесь и он станет серым.
 

Offline dartraiden

Re: Опять меняется протокол ICQ?
« Reply #863 on: 16 12 2019, 13:13:37 »
Умгум, я это смоделировал уже, чуток иначе.
 

Offline WAJIM

Re: Опять меняется протокол ICQ?
« Reply #864 on: 16 12 2019, 14:34:20 »
Вообще имхо подход в принципе некорректный. Контакты, которых нет в ростере как раз должны быть серыми, но не должны удаляться автоматически. Иначе невозможно понять, есть они реально в ростере или нет. А вот удалять серые контакты при запуске или нет - это должна решать опция в настройках протокола icq.

Тогда не нужен будет этот хак с [deleted].
 

Offline dartraiden

Re: Опять меняется протокол ICQ?
« Reply #865 on: 16 12 2019, 15:11:16 »
Quote
Контакты, которых нет в ростере как раз должны быть серыми, но не должны удаляться автоматически. Иначе невозможно понять, есть они реально в ростере или нет.
Понять несложно:
- если контакт [deleted], то он не в серверном ростере и быть там не может, сервер вернёт ошибку при добавлении
- если контакт не [deleted], то о его нахождении/отсутствии в ростере свидетельствует как раз таки цвет

Quote
А вот удалять серые контакты при запуске или нет - это должна решать опция в настройках протокола icq.
Тоже костыль, ни у одного протокола такого нет. Все протоколы синхронизируются с серверами, если мне не изменяет память. Разумно, чтобы ICQ не выбивался из общего ряда, а вот как раз для скотства, которое учинило мыло.ру, сделали костылик

На сервер вылился очередной билд.
« Last Edit: 16 12 2019, 15:33:52 by dartraiden »
 

Offline WAJIM

Re: Опять меняется протокол ICQ?
« Reply #866 on: 16 12 2019, 15:17:07 »
Понять несложно:
- если контакт [deleted], то он не в серверном ростере и быть там не может, сервер вернёт ошибку при добавлении
- если контакт не [deleted], то о его нахождении/отсутствии в ростере свидетельствует как раз таки цвет
Если у контактна назначено имя руками, то в списке контактов он не станет как [deleted] и без серости невозможно понять, есть контакт в ростере или нет.

Quote
Тоже костыль, ни у одного протокола такого нет.
Да ладно. А на скрине что?
 

Offline dartraiden

Re: Опять меняется протокол ICQ?
« Reply #867 on: 16 12 2019, 15:33:05 »
без серости невозможно понять, есть контакт в ростере или нет
Способ есть, хоть и не самый очевидный - user details.
 

Offline WAJIM

Re: Опять меняется протокол ICQ?
« Reply #868 on: 16 12 2019, 15:48:57 »
Очисткой NotInList занимается не протокол. Таким образом, если хочется одновременно иметь серые контакты (которые с точки Миранды все подлежат очистке) и не удалять их, нужно лепить исключение-костыль на более низком уровне, что архитектурно неправильно.
А что тогда делает функция Contact_RemoveFromList() в протоколе icq? Разве это не она удаляет контакт из спика?

Quote
Если ты в жаббере выключишь упомянутую настройку, то у тебя контакты, отсутствующие в серверном ростере, будут серыми или нет? Я ставлю на то, что не будут.
Не будет. Но хоть история контакта не удалится 100% - это главное.
 

Offline dartraiden

Re: Опять меняется протокол ICQ?
« Reply #869 on: 16 12 2019, 15:50:17 »
Ну так и в аське история не удалится, пока ты сам лично не сотрёшь этот контакт руками. Сервер сам ничего не стирает, кроме удалённых из системы аккаунтов. С ними мы разобрались. Если в офис mail.ru завезут самолёт кокаина и они начнут просто так убивать контакты, не меняя их имя на [deleted], тогда мы и подумаем, что делать.

Post Merge: 16 12 2019, 15:56:39
что тогда делает функция Contact_RemoveFromList() в протоколе icq? Разве это не она удаляет контакт из спика?

Quote
ghazan, 16.12.2019 18:53:37:
выставляет NotOnList

Как и написал выше, протокол волен выставить контакту этот флаг, чёрную метку. При запуске программы приходит киллер и начинает расстрел означенных субъектов. Киллер не знает пощады, доктор сказал в морг - значит в морг.
« Last Edit: 16 12 2019, 15:57:20 by dartraiden »