mrDoctorWho / vk4xmpp

Jabber-транспорт для ВКонтакте (A jabber gateway to the VK social network)
https://vk.com/vk4xmpp
MIT License
126 stars 25 forks source link

Транспорт при старте спамит последним сообщением #223

Open Oreolek opened 5 years ago

Oreolek commented 5 years ago

Неважно, был ли транспорт закрыт нормально или через kill.

При подключении он начинает повторять последнее сообщение в конференции 5-6 раз. Останавливается только когда ВК присылает капчу.

mrDoctorWho commented 5 years ago

А можно логи транспорта? Ещё интересует версия.

Oreolek commented 5 years ago

Версия git master

Лог (без токена): [edit]

mrDoctorWho commented 5 years ago

Транспорт сообщает, что не смог создать групчат. Почему?

Oreolek commented 5 years ago

Вероятно (но не проверено), что дело в новой фиче новой версии prosody 0.11.x:

https://prosody.im/doc/modules/mod_muc#tombstones

По умолчанию prosody теперь не позволяет создать комнату, если она была недавно удалена. Чтобы это выключить, нужно указать muc_tombstones = false.

mrDoctorWho commented 5 years ago

Удалось проверить? Работает без tombstones?

Кстати, транспорт вполне безопасно можно сделать MUC-админом и тогда он наверняка сможет ходить по конференциям даже с muc_tombstones. А ещё это избавит от багов в случаях, когда кто-то создал конференцию раньше него самого.

Oreolek commented 5 years ago

В общем, это какая-то настройка на сервере. Пока непонятно, что именно, но сервер отказывает транспорту в создании комнат.

Oreolek commented 5 years ago

Вроде починилось. Старые комнаты надо удалять вручную (выбрать модуль conferences в поиске сервисов -> команды -> destroy rooms)

Текущие настройки:

muc_tombstones = false;
muc_room_locking = false;
Oreolek commented 5 years ago

А, не, не починилось. Снова идёт. Попробую больше инфы собрать.

Ledarium commented 5 years ago

Плюсую. Также происходит в конференциях, когда кто-то присылает сообщение в ответ на несколько моих. Выглядит все так:

мое сообщение 1 мое сообщение 2 мое сообщение 3 < входящее сообщение мое сообщение 1 мое сообщение 2 мое сообщение 3

Если убить vk4xmpp в момент этого бага, то при следующем старте он снова спамит Сервер ejabberd 18.01

В логах есть warning:vk4xmpp: User wasn't found in the database and no token or password was given

mrDoctorWho commented 5 years ago

@Ledarium В этом issue рассматривается косяк именно с сообщениями в конференции. Связано это с тем, что транспорт не получает подтверждения о создании конференции и пытается создать её снова. А создание включает в себя отправку последних сообщений.

Можно попробовать посмотреть DEBUG-логи.

mrDoctorWho commented 5 years ago

@Oreolek какие новости?

Oreolek commented 5 years ago

Пока никаких, нет времени на тесты. Временно не пользуюсь.

Oreolek commented 5 years ago

Общий вопрос: почему создание комнаты включает отправку последних сообщений? По XEP, создание - это именно запрос presence. На запрос не ответили - создать комнату не получилось. Из стандарта, кстати, убрали совместимость с Groupchat.

mrDoctorWho commented 2 years ago

@Oreolek извиняюсь за долгий ответ, но лучше позже, чем никогда.

Я не очень понимаю вопрос. Транспорт отправляет сообщения только если конференцию удалось создать. Не понимаю, что может удивлять в том, что транспорт отправляет сообщения в созданную им конференцию.