Перейти до

Patch Stg_ip_erase_after_error.patch


Рекомендованные сообщения

Данный патч исправляет баг описанный тут 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)

Ссылка на сообщение
Поделиться на других сайтах
  • 1 month later...

Хм, а что делает этот код ?

+        map<uint32_t, IA_USER>::iterator itNext = ++it;
+        ip2user.erase(--it);
+        it = itNext;

 

не проше ли было ?

+        ip2user.erase(it);

Ссылка на сообщение
Поделиться на других сайтах
Сразу скажу что C++ не мой родной язык, так что на абсолютную правльность не претендует.

 

...

 

Если у кого-то есть идеи по более правильному решению этой ошибки будет хорошо

2platerx:

Человек сразу написал, что не претендует на оптимальность.

Поэтому, если есть идеи, поделитесь)

Ссылка на сообщение
Поделиться на других сайтах

Вообщем могу отписать что патч рождает после себя глюки с не отключаемыми пользователями при переходе из месяца в месяц, который мне непонятен, в дебаг режиме его так и не ловил.

Ссылка на сообщение
Поделиться на других сайтах
  • 3 weeks later...

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...