eJabberd 1.1.4 vs mod_shared_roster_ldap

Не могу выяснить кто виноват...
итак имеем -
- eJabberd 1.1.4
- модуль mod_shared_roster_ldap отсюда http://realloc.spb.ru/share/ejabberd112ad.html

все настроено согласно инструкции на вышеприведённом сайте
Юзеры нормально логинятся со своими сетевыми паролями, им генерится ростер со всеми сотрудниками входящими в группу Jabber Users, все юзеры акуратненько рассованы по группам согласно полю Department. Казалось бы жизнь удалась...

У некоторых пользователей после логина не присылаются презенсы контактов которые залогинились ранее, презенсы присылаются лишь при смене этими контактами статусов.
Глюк намертво привязан к юзеру, т.е. откуда и каким клиентом он бы ни логинился - глюк воспроизводится 100%
Но при этом у других некоторых пользователей все ок - сразу после логина

Проблема проявляется не у всех, 5 из 30ти проверенных (протестировать на всех 150ти юзерах трудновато) при логине получают презенсы всех кто в онлайне

Кто то наблюдал подобное?
По какому условию (кроме состояния подписки) сервер отсылает презенс ?
И вообще куда копать?

копать, как всегда, в коде

когда мне удастся победить последний баг в конфиге, я тоже столкнусь с этой проблемой

а заключается она, имхо, в том, что в AD login AKA JIG не равнозначен отображаемому в контактах имени юзера
поэтому обрабатываются 2 разных параметра при определении presence
я не программер, но попробовать конуть в код могу, хотя и вряд ли из этого что-то выйдет, имхо проблема довольно сложна для решения

Патч

для того, чтобы jid'ы были в нижнем регистре,
в функции get_group_users нужно изменить:

case catch get_user_part(User, UAF) of
на
case catch get_user_part(stringprep:tolower(User), UAF) of

eJabberd 1.1.4 vs mod_shared_roster_ldap

заметил еще странное поведение -
на 4-х компах (w2k, w2k3) проинсталлил Ejabberd 1.1.4, подкинул mod_shared_roster_ldap, на всех 4-х проявляется все та же проблема. Причем проблемные юзеры всегда одни и те же.

НО!
На моем боевом компе после пересборки версии 1.1.4 (R11B-5) из исходников все работает нормально (по крайней мере на нескольких проблемных юзерах проблема не повторяется), в то время как версия из дистрибутива работает на этом же компе все с тем же глюком.

Переложил эту откомпиленую сборку (со всеми сопутствующими dll-ками) на 3 других компа, не меняя ничего в конфиге
- проблемма все та же.

Получается что коректно работает только самособраная версия, и только на одном из 4х компов (на том где это все собиралось).
Конфиги везде одинаковые, ошибок в логах нет

Единственное радикальное отличие моего компа от остальных это ось - w2k3 amd64, на остальных - i386, но эрланг то везде один и тот же - х32
Попытаюсь еще пересобрать 1.1.4 на тех 3х компах, посмотрим что из этого выйдет

Как то можно включить отладку (или что то типа отладки), чтоб посмотреть что делается при логоне проблемных юзерах на моем компе и на остальных?

И вообще кто использует 1.1.4 и mod_shared_roster_ldap отзовитесь, повторяются ли проблемы?

сорри, протупил

Оказывается что не работает и на моем компе
работало из-за того что в shared_roster была настроена группа Everyone, коей не было ни в одном из подопытных компов
В общем придется ковырять код

Вычислил

Вычислил методом тыка - презенсы не тянутся только тем юзерам у кого в sAMAccountName есть большие буквы, те у кого в sAMAccountName только маленькие буквы - видят всех
Если sAMAccountName юзеру переписать маленькими буквами - наступает счастье
Теперь стою перед дилемой - менять sAMAccountName у 150ти юзверей или втулить куда нужно lists:tolower()
Второе пока не очень получается...

Syndicate content