Весь лог ошибок rushub_2.1.4:
На дамп хеш-таблицы можно не обращать внимание, это я для проверки вставил.
Почистил тему и жалуюсь дальше... Решил я переделать все-таки веб-сервер под работу с функциями русхаба (а не библиотекой сокетов) и сразу на стадии тестирования ушел в ступор. Вот простенький скрипт, отдающий стучащемуся клиенту простую страницу с формой на его запрос:
Попробуй в событии OnWebData возвращать true.
Хаб принудительно закрывает соединения, если в событии не возвращается true или 1, в противном случае соединение будет закрыто после бездействия клиента некоторое время или после принудительного закрытия соединения со стороны клиента.
Тестировал на XP с оперой 10.51.
Ничего подобного не выявил.
Надо 20 раз подряд грузить страницу или что?
==================
Я понял откуда ноги растут с секундными задержками.
Дело в том, что в ответе на запрос указывается: Connection: close, и, следовательно, браузер ждёт от сервера закрытия соединения.
На хабе баг в событии OnWebData так как в описании сказано, что по умолчанию сервер разъединяет клиента после отработки события, а на практике всё с точностью наоборот. То есть, на деле получается, что если событие OnWebData ничего не возвращает, клиент не разъединяется, если же вернуть true, то будет работать всё как надо.
В следующей версии это будет исправлено, и по умолчанию всё же будет разъединения клиента, а return true в событии OnWebData будет отвечать за удержание коннекта.
Используя фаерфокс с фаербагом я понял почему такие задержки - это получение айпишника для localhost, что вообще как-то глупо, по адресу 127.0.0.1 все работает довольно шустро, хотя скорость работы встроенного веб-сервера (70-200 мсек) все равно ниже чем у того что получилось в работе с библиотекой сокетов (20-40 мсек), я опять же грешу на специфику неблокирующих сокетов.
Из еще того что хотелось бы отметить: при выходе из режима гибернации на вин 7, 32 бита, приложение заканчивает свою работу.
И аналогичная птоке фигня с добавлением таймера только глобальной функции, к примеру OnEvent, но событие из таблицы tGlobalClass.OnEvent (про tGlobalClass:OnEvent вообще молчу т.к. в функцию не передаются параметры) вызвать нельзя, надеюсь понятно объяснил
По поводу веб-сервера хз.
По поводу гибернации, то это будет уже исправлено в следующей версии.
С таймерами да - ищется глобальная функция. Так уж устроено. Я подумаю как сделать для любых функций.
При запуске под XP64 вылетает на неустранимую ошибку и закрывается с предложением отправить отчет. Какая информация еще нужна?
Через LUA-консоль Экзекутора ввожу код:
Предыдущий баг в функции Core.GetGVal пофикшен.
На данный момент существуют серьёзные баги, которые могут возникать при ошибках в событиях скриптов OnExit и OnError.
Баги приводят к падению хаба, при этом ошибки всё же логируются.
Устранение этих багов требует серьёзных изменений способа хранения скриптов в списке.
Постараюсь как можно быстрее исправить эти баги. Пока что для того чтобы эти баги не проявлялись, нужно стараться писать скрипты без ошибок в событиях OnExit и OnError.
Баги с падением хаба, о которых было написано в предыдущем моём посте, в текущей версии lua плагина (1.20) устранены.
Однако, нашел ещё небольшой баг. Заключается он в следующем: в событии OnMyINFO у пользователя НЕ только что присланная на хаб MyINFO строка, а предыдущая. Другими словами, сейчас MyINFO записывается после отработки события OnMyINFO, что является в корне не правильным, так как именно в данном событии по большому счёту и осуществляются различные проверки параметров пользователя.
В следующей версии это будет исправлено.
Плюс в следующей версии наконец таки будет сделан парсинг MyINFO строки и возможность получать в скриптах параметры MyINFO строки.
Некое резюме по поводу события OnMyINFO и парсинга MyINFO строки:
Во-первых, стоит отметить, что в новой версии MyINFO строка будет устанавливаться до вызова события OnMyINFO. То есть в событии OnMyINFO можно будет получить актуальные параметры пользователя.
Во-вторых, в самом событии OnMyINFO (и не только в этом событии) мы можем переустановить (переопределить) MyINFO строку по своему усмотрению. Делается это простым присвоением UID.sMyINFO = "$MyINFO ...". Самое главное в строке придерживаться правильного синтаксиса (по NMDC протоколу). При этом при переустановке будет автоматически произведён парсинг. Чем важен этот пункт? Да тем, что мы одним движением руки можем изменить, например, описание пользователя, которое содержит рекламу. Кстати, в дальнейшем также планируется и более мощное действие: изменение описания пользователя не установкой MyINFO строки с последующим парсингом и, соответственно, изменением описания, а прямое изменение описания, с последующим восстановлением по всем параметрам MyINFO строки
В-третьих, вернув в событии OnMyINFO значение true, мы тем самым запрещаем хабу рассылать всем пользователям только что изменённую строку MyINFO, причём не важно каким образом была изменения эта MyINFO строка. То есть все её изменения сохраняются, он эти изменения не будут отсылаться пользователям хаба. Это действие также можно использовать в скриптах, например, для сокрытия пользователя. Хотя на хабе предусмотрен более мощный механизм сокрытия, который скрывается пользователя из списка для всех, кроме самого этого пользователя.
Последняя версия хаба и луа плагина, попытался от безделья перевести муторский скрипт но при его запуске скрипта
хехе
Данный баг не связан с рус хабом. Это баг в lua.
Проверил на чистом lua - тоже падает.
Баг в функции os.date. В частности баг даёт о себе знать если подставить неверный параметр, например os.date("%s")
Существующие параметры: %A, %a, %B, %b, %c, %d, %H, %I, %j, %m, %M, %p, %S, %U, %W, %w, %X, %x, %Y, %y, %Z, %z, %%
Как видим параметра %s в этом списке нету. Функция будет падать при любом отсутствующем в этом списке параметре если его ставить после процента
Тогда возникает вопрос почему же в птохе не падает? Видимо РРК там что-то подкрутил, так как даже на чистом луа падает
Илья, так и тут бы нам что либо придумать, чтобы хаб вообще не крашился. Ибо нам не к чему это
Надеюь что ты сможешь что либо придумать
решил взять исправленную библиотеку oslib из lua 5.2. Там этот баг исправлен, и если в функции os.date встречается неизвестный параметр, то возникает lua ошибка и скрипт просто останавливается. В логе будет что-то на подобии следующей записи:
Опять стало очень печально, решил перевести ещё GraphPX взял либсу файл gd.dll из пакета Lua-AIO поместил её в корень хаба.
После запуска скрипта проходит буквально секунд 20-30 и возникает крах хаба.
После того как переместил библиотеку в папку libs хаб с виду перестал перестал крошиться, но потом проходит буквально минут 5 и снова крах..
Скрин ошибки:
Ок. Сегодня вечером посмотрю в чём дело.
Спасибо за активное тестирование.
Такс...
Ошибка почти такая же как и уже была, когда хаб падал при добавлении задачи в очередь при процессе прохождения очереди.
Тут тоже самое но со списком таймеров. Ошибка из-за добавления таймера в процессе выполнения другого таймера.
Ошибку постараюсь исправить как можно быстрее. Ставлю себе приоритет бага как critical со сроком выполнения в 2 дня (до четверга)
Кстати, сразу же заметил что также не работает функция удаления таймера при выполнении другого таймера (уже исправил в след. версии).
Отсюда сразу же видны ограничения которые нужно будет ввести для случая намеренного увеличения таймеров. На данный момент таймеры можно добавлять пока не кончится оперативная память - это потенциальная уязвимость хаба. Будет введено ограничение: максимум 100 таймеров на скрипт.
у меня одного ниодин скрипт не работает? (это после перехода на rushub v 2.2.0 lua plugin v 1.23)
наверно
Странно. на чистом русхабе с луа плагином тока FirstRusHubBot закинул - и ничего нет. ниодного скрипта, ни меню. Система виста.
1) где стоит хаб? (там где сама ось?)
2) попробуй зайди в папку plugins, открой scripts.xml и добавь
где стоит хаб? в папке C:\rushub_2.2.0\
Это помогло. русхаб выдает приветствие. а меню так и нету.
так почему же в <script Name="FirstRusHubBot.lua" Enabled="1" /> стояло Enabled="0" ?
и на всех остальных стояло "0" поменял на 1 - все заработало. меню появилось
в хабе убран автозапуск скриптов.
Если же у тебя на С и сама ось стоит, лучше перекидывай на другой системный диск.
На висте и на семёрке стоит запись в системные папки
что интересно - тестировал с самой первой версии рус хаба до 2.1.6 - на этой системе и на этом же диске... нифига подобного не случалось... Странно
Автозапуск скриптов исчез, начиная с версии 2.1.8.
Сделано это для безопасности.
2Saymon: что касается бага: ты случаем не пытаешься подключить птоховскую либу gd.dll, которая выложена на форуме? Для русхаба либу gd нужно брать из lua-aio
Setuper, нет. Я же выше писал, что стоит из lua-aio.
падает сразу после запуска, или спустя некоторое время?
Падает спустя некотророе время. Но, посмотрел я потом повнимательней код скрипта графиков, выяснилось
в первой функции у нас стоит например Core.AddTimer(1, .....)
дальше, удаляем этот таймер таймер Core.DelTimer(1)
Теперь после того как мы удалили первый таймер, мы добавляем новый, с таким же айди Core.AddTimer(1, ....)
ну и случайно, по своей невнимательности мы пишем Core.DelTimer(2), вместо того чтобы тоже написать айди 1
вот в этот момент, как мне показалось, просходит крах хаба. Сейчас же всю ночь работал скрипт графиков, и небыло не одного краха.
Мда, правда, как - то не лепо
ок.
проверю такое поведение (удаление таймера с несуществующим идентификатором), и если подтвердится, то надо будет пофиксить это
Илья, я вот сейчас попробую написать отдельный скрипт маленький, чтобы проверить это. Потом скажу о результате.
Нет, странно, нет краха....... Вчера именно в этом случае казалась ошибка, и крах пропал после того как я исправил в скрипте...... Ни черта не пойму
Разве остаёлся что-то как-то надеяться что поможет скрин вчерашней ошибки, хотя не знаю
Вот и я сомневался что это было из-за не верного id. Видимо причина была в чём-то другом.
похоже на это, но казалось, что именно в этом. Я думаю надо как-то лучше протестировать таймеры...
Скрины с ошибками бестолку давать, так как для того чтобы найти ошибку нужно воспроизвести все условия, которые способствовали её возникновению, а условия не известны
Если у тебя при каких-то условиях упадёт, то сообщи при каких. Я пока что не вижу ничего из-за чего может упасть
Илья, хочу попросить протестировать скрипт этот GraphPX. Всётаки из-за него и были крахи и в новой версии. Сейчас они крах хаба происходит не при запуске скрипта, а примерно спустя 2 - 2 с половиной часа после его запуска. Я вот так не понял, что и почему это.
А хаб потерял способность работать на занятом порту? У меня он закрывался когда работала птока на этих же портах. Версия 2.2.5. Вот лог при уровне логирования 6:
Да, действительно, есть такое дело.
Это происходит вот из-за чего:
когда же будет исправлен косяк с директориями и добавлен мой патч на отключение от консоли
mariner, люди же тут собрались занятые и рабочие, так что думаю торопить никого не стоит и все будет на этих выходных
Последняя версия хаба и луа плагина.
Заметил странность совершенно на пустом хабе (разве был я один, потихоньку тестировал и писал скрипт.)
В скрипте пока не выполняется никаких сложных функций и т.д, но с чего-то переодически начинает выкидывть с хаба (Простое закрытие соединения).
Как это заметил установил уровень логирования 6.
Собственно вот лог в тот переод, когда выкинуло очередной раз с хаба.
Да действительно есть такой баг. Однако он встречается достаточно редко. Возникает он когда клиент отсылает с командой пинга ещё какую-нибудь команду.
Починю в следующей версии.
Не понял почему произошло падение хаба.
Лог:
Были ли запущены какие-то скрипты для веб-сервера?
да, http://mydc.ru/topic3007.html
Setuper, попробуй посмотреть лог. Опять с тем же скриптом упал хаб.
Ох, опять я с репортиком чуть интересным )))
Блин эту инфу я взял из папки куда обновил рус хаб... сорри за то что ввел в заблуждение. Версия на самом деле последняя:
Все развернул под Debian Lenny 5.0.7 Конечно не сразу все гладко пошло, но результаты положительные. Исходники скачал с svn, скомпилил, настроил, запустил, робит. Луа-плагин подключил, скрипты видит, работают. Приступил к установке http://mydc.ru/topic2885.html. Положил ban.lua в папку libs, banManager в папку скриптов и тут выскочил косяк:
С lua плагином идут файлы lua, из которых нужно взять файл luaconf.h и с ним собирать lua, в противном случае, используются стандартные пути
Есть некоторая идея как заставить это работать без каких-либо манипуляций. Но это может быть будет сделано в очередной версии lua плагина
Илья, сильно не бей и не ругай!
Но я опять таки роняю хаб.
Собственно из-за чего оно произошло сказать не могу. Лиш то, что хаб падал даже в момент перезапуска фирструсхаб бота.
Отдельно что я нового пробовал дак работу над маленьким скриптом под хаб своего провайдера, который по плану должен нам заменить
самого фирст бота. Пока в нём нет особо ничего, лиш наброски. Но к тому же я заметил, что на нашем тестовом хабе ничего не падает. Скрипты тестирую на отдельном. Странность в том, что пробовал событие OnError возвращать в true. Хаб падает не каждый раз при перезапуске, а каждые 2-4 раза. Собственно всё что я могу пока сказать.
Прикладываю лог.
Отключился хаб.
Установлен как сервис на Win7 HP x64.
Версия: 2.2.12 + 1.31.
Используется 2 скрипта: "ПервыйRusHubРобот" и Фильтр чата.
Что происходило до этого: был зарегистрирован пользователь администратором через меню со статусом администратор и переподключение пользовтеля, затем все работало, но через некоторое время хаб отключился.
Выдержка из логов:
(error)[Sat Dec 25 15:11:53 2010|304] (0) cConnSelect: Fatal error:
error in operator *()
Item = 00676600
Hash = 476
End = 2048
Спасибо, буду смотреть в чём дело
Setuper, хочу напомнить, с выключенным веб сервером хаб всётаки не падает. Вероятно баг в вебсервере.
По поводу события OnError. У меня не падает.
Проверял вот таким скриптом:
Setuper, странно. Логи ничего не говорят?
Ну лог говорит, что хаб был остановлен
Я как всегда рядом
Не зря Илья добавил лучшее логирование крахов.
Я очень надеюсь, что сейчас оно поможет
О ужас. Я думал 30 строк стека будет достаточно. Оказалось это слишком мало.
В данном стеке вызовов только функции lua интерпретатора, и я не могу сказать из-за чего был крах. Нужно будет увеличить чисто строк стека на порядки.
Перезалил хаб, увеличив глубину стека.
Ну пробуем ещё раз
Баг ни хаба, и ни плагина. Это баг в lua.
По всей видимости в версии lua 5.1.4 он пофикшен (я уже не говорю о версии 5.2):
хорошо, тогда стоит пофиксить что-то в хабе, чтобы далее оно не падало
А можно узнать какой код должен быть чтобы так вот завалить луа? И почему баг не профикшен в луа хаба?
Повторяю, что баг в луа, а не в хабе. Хаб падает потому, что луа интерпретатор работает из-под процесса хаба.
Баг возникает при попытке убрать мусор при закрытии луа состояния (остановка скрипта).Возможное решение - это переход на lua 5.2
Вот из-за чего падает хаб:
В общем буду разбираться
А вот и падает наша бета версия
Рапортую: не работает OnSR, если смотреть через OnAny, то команду видно, а функция OnSR не срабатывает. Проверьте пожалуйста, может это я косячу в чем-то!?..
Потом такой вопрос: слушает ли хаб какие-то udp порты? И зачем это было в птоке? Использовался юдп порт http://mydc.ru/topic4200.html (пытаюсь переделать под русхаб), получающем поисковые ответы напрямую (как активный юзер) на свой юдп порт. И я так понимаю за это отвечает функция UDPSRArrival. Я сделаю поиск пассивным, т.е. юдп порт не обязателен, но скрипт будет работать только если будет работать функция OnSR.
На данный момент функция OnSR должна работать при пассивном поиске, ибо при пассивном поиске результаты поиска проходят через хаб, при активном же поиске результаты поиска поступают напрямую пользователю, который ищет.
Про то, как работает поиск, я знаю. Илья, вот для теста тебе (TTH замени на любой из своей шары):
Всё правильно. Вот в чём загвоздка...
При поиске ты указал ник бота, следовательно результаты поиска будут приходить на ник бота, а хаб пытается найти по нику пользователя, а бот не является пользователем.
В консоли хаб выдал и сообщил о том что умирает:
Спасибо. Исправлю этот баг.
Что касается параметров WebID, то можно получать параметры: UID, sIP, sIPConn, iPort, iPortConn, iEnterTime
Добрый вечер! Не получается запустить RusHub 2.2.14 с ключом -s. При коннекте к хабу - оный падает.
Собственно опять падает хаб.
Из-за чего не понятно. По моему так, пререзапустил скрипт, тот не смог загрузить пару дополнительных файлов (dofile) в итоге падение.... Странно, сам думаю что бред....
Лог таков:
Если это действительно так, то это косяк в Lua, а не в хабе
Я правильно понял, что исправив ошибку в скрипте, теперь всё ок?
Setuper, да.
На этот раз, при старте скрипта у меня была подгрузка 10 файлов
У тебя хаб падает при любой ошибке в скрипте?
Объект Config не уберается сборщиком мусора, и переменная Config по желанию может быть переопределена, и это не должно приводит к падению.
Setuper, нет... но падения прекратились и хаб снова завёлся как исправил именно эту ошибку...
Опять интересно, похоже при тех же ошибках хаб падает если пытатся не запускать, а перезапускать итак остановленный скрипт.
Т.е
1) перезапускаем скрипт, возникает ошибка в коде, скрипт остановлен
2) Правим ошибку в коде, и не запускаем, а презапускаем скрипт.
Тут и падение если я всё правильно понял. Но если не перезапускать, а запускать, то всё нормально.
Мда...
Спасибо, посмотрю
Скачал хаб поиграться, столкнулся с проблемой.
На заметку: имеется роутер, сервер на винде хп сп3.
Если указать в конфиге хаба локальный ип (который выдает роутер), то хаб запускается и работает, но если ввести внешний ип (который выдает провайдер и даже доменное имя которое прописано на внешний ип), то при запуске хаб вылетает\закрывается.
Тогда расскажи как решить проблему!
Проблема в том, что у тебя на компе нет нужного сетевого интерфайса(с внешним айпи), на котором ты хочешь открыть порт хаба. Все, больше нет никаких проблема
Понятно. Этот вопрос можно как-то программно решить вообще?
Например веб и фтп нормально работают и по локалке и по внешке, на том же сервере.
конечно. Прописать в настройках айпи хаба 0.0.0.0
Хм, странно... Вчера так делал не работало, щас заработало Всеже спасибо за помощь
У кого-то была проблема с таймерами под 64 разрядной системой.
Ну так вот, я проверил работу русхаба 2.3.0 с плагином 2.0 на ОС Windows 7 x64.
Таймеры отлично работают!
Привет!
RusHub 2.3.3 x64 на Win7 x64 HP при использовании UID.bInIpList = true -- (Отсылка IP всем) в function OnUserEnter(UID) в скрипте FirstRusHubBot.lua не шлёт все IP всем при входе. Также не шлёт сразу IP всех людей операторам. Шлёт, когда кто-то подключится, только того, кто подключился. Раньше в 2.2.14 (при использовании SetUser) работало нормально - при входе отсылались IP всех участников.
Да, это баг.
Выпущу версию 2.3.3a с исправлениями данного бага.
Залил версию 2.3.3a с исправленной проблемой отсылки ip адресов (http://mydc.ru/topic2378.html)
Баг был в хабе, поэтому плагин тот же остался (v2.3)
В связи с увеличением производительности русхаба было увеличено максимальное число файловых дескрипторов до 32768.
Однако оказалось, что 64 разрядная сборка крешилась из-за этого.
Я пересобрал 64 разрядную сборку с уменьшенных числом файловых дескрипторов (до 16384).
Что это означает? Это означает, что максимально доступно 16384 сокетов (соединений). Это касается только windows x64!
Имеем:
unix: нет ограничений
windows x32: 32768
windows x64: 16384
RusHub 2.3.5 x64 с параметром iMaxLevel отличным от нуля падает в lua.dll
если удалить lua.dll, то работает
вот все, что есть(.pdb есть, но ничего от них нет):
Возможно криво собралось, хотя у меня на windows 7 x64 работает нормально.
Я пересобрал. Попробуй: http://mydc.ru/topic2378.html
вот теперь не падает и скрипты работают tnx
запустил - будем наблюдать
ну вот я снова тут и о25 про x64
в 64х битных версиях 2.3.5/2.5 и 2.3.4/2.4 к большинству пользователей не проходят ЛС (закономерности к кому приходят, а к кому нет - не обнаружил)
в 2.3.3a/2.3 и в 32х битных вроде нормально...
по логам отличий между версиями нет, но сообщения просто не доходят...
пока все... вечером еще поковыряю...
если какие логи нужны - выдам
Действительно есть такая ошибка.
И действительно она возникает только на 64 разрядной машине.
Ошибка достаточно серьёзная. Из-за неё не работает не только личка, но и многие другие функции такие как поиск и тд.
Исправил этот баг.
Выложил версию 2.3.6[beta]_win64 (http://mydc.ru/topic2378.html)
поставил... пока работает
будем тестить дальше
RusHub почему-то два раза отсылает $hello :(
Спасибо за найденную ошибку.
Исправлено.
День добрый.
Заметил давиче одну такую странную штуку...
Имеем зарегистрированного пользователя Angel. Живет он на хабе долго и счастливо, до тех пор, пока на хаб не заходит unreg с логином angel - пользователя Angel выкидывает и при попытке повторно зайти "какбэ намекает", что "Ваш логин используется..."
Пришлось зарегистрировать логин angel абыкаким паролем и кикнуть несчастного пользователя, что б он догадался сменить ник.
Если просто кикнуть unreg-а angel, что б смог зайти Angel - при реконнекте unreg весьма успешно выкидывает reg-а снова...
Ага. Действительно ошибка.
Исправил.
Линуксоиды могут пересобрать из svn.
Те кто на винде - ждите следующий релиз.
Илья, что-то в последней версии начал проявлятся небольшой баг (Или это фича)
Примерно такой цикл в скрипте
Раньше выставлялся 0, если шары нет.
По всей видимости для nmdc протокола это правильно, однако для adc протокола параметр шары может отсутствовать, то есть равен nil.
Поэтому в предверии внедрения adc баг перешёл в фичу.
Вопрос по Autotools:
Мне одному скрипт ./configure в rushub_2.3.7_src.rar не достался?
Нет, всем. Потому, что надо в директории сурцов выполнить autoreconf -i
Илья посчитал, что не нужно включать файлы, которые получаются автогенерированием. Это его политика.
под freebsd прокатит?)) пока не тестил
Кто мешает попробовать?
Заметил такой баг, перезапускаю русхаб и аптайм равен 3 часам, потом просто перезашел на хаб и аптайм 8 часов ...
Решил сообщить..
Время на серваке не менялось?
нет, ничего не менялось ...
я такое уже 3 раз замечаю ... забавно конечно, до каких пор он будет прибавлять все ))
А каким образом ты перезапускаешь его?
Для багов есть отдельная тема: "Ошибки текущей версии хаба"
sudo service rushub restart
это скрипт в /etc/init.d/rushub
Хм... странно. Может это из-за того что изменился lang файл. Попробуй удалить его. Я подозреваю, что у тебя вместо мин. выводится ч.
да, когда хаб запустил там было 3 часа )))) может минуты на самом деле...
перезапускать не буду, не хочу дергать пользователей...
ммм, кстати, надо бы реализовать команду перезагрузку конфига как-то ... ато неудобно порой перезагружать для применения изменений
А зачем, если почти все настройки можно менять на лету?
ты сам ответил на свой вопрос, почти все )
А вот перезагрузку языковых файлов не помешало бы сделать ... ато чуточку подправил содержимое и перезагрузка ...
Ты каждый день по 100 раз чтоли правишь?
Подскажите пожалуйста вариации для этого параметра: iCompressionType
Дефолтное значение при сборке хаба - 0, если я правильно понял это активация zlib ??
0 - отключено, 1 - Использование ZPipe
Благодарю, Денис, но у меня клиент при включении этой опции не заходит...
решил под freebsd 9.0 x64 собрать версию хаба 2 3 10
выскакивают такие ошибки
fixed in revision 838
Эта ошибка уже исправлена в ревизии 838.
Вообще сейчас в транке стабильная версия, возможно стоит слить оттуда.
Russian.xml
а если заменить эту 302 строку на:
На гуглокоде затишье, скопирую сюда.
По поводу пункта 2 могу сразу ответить, по поводу остальных буду проверять.
Итак, по поводу пункта 2.
Такое поведение получается из-за отложенной отсылки команды $Quit. Отложенная отсылка сделана для того, чтобы не оббегать список пользователей 2 и более раз с целью разослать все публичные команды.
Существует буфер публичных команд, в котором в течение определенного времени (1-2 сек) накапливаются команды, которые необходимо отправить всем пользователям хаба. Таким образом, массовая рассылка происходит 1 раз в 1-2 секунды (как повезёт). Если же мы представим, что на хаб постоянно заходят и постоянно выходят десятки пользователей в секунду, то вместо того чтобы оббегать список пользователей десятки раз в секунду, мы будем оббегать его 1 раз, и отсылать сразу за этот раз несколько команд, тем самым значительно снижая нагрузку на хаб.
Поэтому при переподключении к хабу мы можем иногда наблюдать описанную картину, если выход и вход произошли в течение накопления команд в буфер.
1. Если имеется факт отсылки на хаб команды $Quit от клиента, то все вызывается. Вот скрипт для проверки:
хм... Странно у меня прекрасно отработал твой скрипт:
В релизной версии? Если нет, то реквестирую багфикс-релиз.
А каким именно образом ты отсылаешь raw-команду?
Да, в релизной.
Ты вообще отправляешь на хаб команду $Quit <ник> ?
Блин, моя ошибка ведь... это же не клиентская команда... ;(
Приношу извинения за ложную тревогу и ввод в заблуждение.
Получается, что через OnAny не узнать о выходе пользователя с хаба?
Возможны ты неправильно понимаешь суть команды.
Меня что-то переклинило на названии команды и на отсутствии других подходящих отлавливаемых OnAny команд. А так я в курсе команды и её назначения =)
Проверил, отослал клиентом команду $Quit и везде всё поймалось и клиент выкинуло с хаба. Всё правильно.
OnAny ловит все команды протокола NMDC (протокола высокого уровня), в том числе и пустую команду протокола, которая является командой пинга в современных DC клиентах.
Пустая команда (FIN) - имелось ввиду в протоколе TCP.
В 2.3.10 сломан приём $SR по UDP или я что-то делаю неправильно?
Проверил на 2.4.0[beta], у меня все работает. Главное чтобы у клиента был файл, который ищем.
Напомню, что через хаб (по TCP) проходят только результаты пассивного поиска, результаты же активного поиска идут между клиентами напрямую по UDP протоколу. Для того чтобы ловить активные поисковые запросы хаб прикидывается клиентом и рассылает всем клиентам команду активного поиска, а при помощи UDP сервера принимает от этих пользователей результаты поиска.
Настройка sAddresses из Lua не меняется:
Да, некоторые настройки пока не меняются налету, и адрес в их числе. Даже на вики этот момент описан.