Genius Posted June 16, 2007 Posted June 16, 2007 Данный патч исправляет баг описанный тут http://local.com.ua/forum/index.php?showto...indpost&p=54300 Сразу скажу что C++ не мой родной язык, так что на абсолютную правльность не претендует. В процессе изучения бага в DEBUG режиме было выяснено что он происходит в любом случае когда одному пользователю с данного IP ответило ошибкой, то с этого IP не сможет зайти ни один другой пользователь до тех пор пока не войдет первый или ребута биллинга. Это связано с неудалением ip из массива пользователей. Если у кого-то есть идеи по более правильному решению этой ошибки будет хорошо, надеюсь что автор или уважаемые патчеписатели обратят внимание на эту проблему. --- projects/stargazer/plugins/authorization/inetaccess/inetaccess.cpp.old 2007-01-20 14:47:05.000000000 +0300 +++ projects/stargazer/plugins/authorization/inetaccess/inetaccess.cpp 2007-06-16 17:40:12.000000000 +0400 @@ -957,8 +957,21 @@ printfd(__FILE__, "SendError_8 %d bytes sent\n", res); break; } + map<uint32_t, IA_USER>::iterator it; + it = ip2user.find(ip); + + if (it != ip2user.end()) + { + map<uint32_t, IA_USER>::iterator itNext = ++it; + ip2user.erase(--it); + it = itNext; + printfd(__FILE__, "User %s erased\n", inet_ntostr(ip)); + } + else + printfd(__FILE__, "User %s NOT erased, not found in map\n", inet_ntostr(ip)); + return 0; } //----------------------------------------------------------------------------- int AUTH_IA::Send(uint32_t ip, const char * buffer, int len)
platerx Posted August 8, 2007 Posted August 8, 2007 Хм, а что делает этот код ? + map<uint32_t, IA_USER>::iterator itNext = ++it; + ip2user.erase(--it); + it = itNext; не проше ли было ? + ip2user.erase(it);
XoRe Posted August 11, 2007 Posted August 11, 2007 Сразу скажу что C++ не мой родной язык, так что на абсолютную правльность не претендует. ... Если у кого-то есть идеи по более правильному решению этой ошибки будет хорошо 2platerx: Человек сразу написал, что не претендует на оптимальность. Поэтому, если есть идеи, поделитесь)
Genius Posted August 16, 2007 Author Posted August 16, 2007 Вообщем могу отписать что патч рождает после себя глюки с не отключаемыми пользователями при переходе из месяца в месяц, который мне непонятен, в дебаг режиме его так и не ловил.
Genius Posted August 23, 2007 Author Posted August 23, 2007 Патч более неактуален, ошибка поправлена в новой сборке СТГ http://local.com.ua/forum/index.php?showtopic=9355 Спасибо автору.
Alferov Posted September 11, 2007 Posted September 11, 2007 Еще как актуален! Ничего там не поправлено.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now