Материал из Wiki.VDSPlanet.ru.
Касается только Kernel 2.6* и версии psyBNC 2.3.2-7
За psybnc 2.3.2-7 были замечены следующее странное поведение:
Зависание, процесс висит в IRC/и/или отлетает по ping timeout и не приходит назад; невозможно соединиться с psybnc и решить такое возможно было только перезапуском самого psyBNC.
Решение найдено, решений два, но во-первый суть проблемы: данная версия psybnc просто не приспособлена для работы с kernel 2.6** и старше.
Далее решения.
1. Короткое:
Создаем bash скрипт и кладем его в psybnc папку на сервере. : cd psybnc : touch psybnc.sh : chmod +x psybnc.sh Открываем psybnc.sh своим любимым текстовым редактором и вносим следующюю строку: env LD_ASSUME_KERNEL=2.4.1 ./psybnc Сохраняем. И отныне запускаем не ./psybnc , а ./psybnc.sh
2. Длинное:
Входим в дирректорию psybnc и создаем там файл любой: : cd psybnc : touch patch.txt Открываем patch.txt своим любимым текстовым редактором и вносим следующее:
--- src/p_client.c 2005-06-04 18:22:45.000000000 +0000
+++ src/p_client.c.new 2008-10-01 06:38:26.000000000 +0000
@@ -2522,9 +2522,9 @@
{
/* needs to send back a server pong (for some evil irc-scripts) */
if(user(usern)->server[0]==0)
- ssnprintf(user(usern)->insock,lngtxt(273),user(usern)->nick);
+ ssnprintf(user(usern)->insock,lngtxt(273),irccontent);
else
- ssnprintf(user(usern)->insock,lngtxt(274),user(usern)->server,user(usern)->server,user(usern)->nick);
+ ssnprintf(user(usern)->insock,lngtxt(274),user(usern)->server,user(usern)->server,irccontent);
return 0x0;
}
Сохраняем. Собственно применяем патч: patch -p0 < patch.txt Далее по стандарту: Собираем psyBNC и используем. : make ...............
Или Воспользуйтесь следущим патчем.
Положите текст в файл: touch get-bnc & vi get-bnc Дайте права на запуск: chmod +x get-bnc Файл должен лежать внутри папки psybnc. Не пересобирайте psyBNC.
Далее идет именно patch.
#!/bin/sh
DONE=no
echo "#####################################################################"
echo "# #"
echo "# PSYBNC PATCH #"
echo "# #"
echo "# Script Created By: #"
echo "# Shannon S (From S2IS) #"
echo "# #"
echo "# Patch code Supplied by: #"
echo "# nomad (From FDCservers foruums) #"
echo "# v.1 #"
echo "# #"
echo "# #"
echo "#####################################################################"
while [ $DONE = no ]
do
echo -n "Do you want to install psyBNC patch? Valid Entrys are [yes/no]: "
read ENTRY # Read the variable ENTRY from the user
case $ENTRY in
yes|Yes)
echo "Checking if psyBNC has already been patched"
if [ -f $HOME/psybnc/.psybnc ]
then
echo "This BNC has been patched"
DONE=yes
exit 0
else
cd $HOME/psybnc
mv psybnc .psybnc
echo "env LD_ASSUME_KERNEL=2.4.1 ./.psybnc" >>psybnc
echo "#####################################################################" >>psybnc
echo "# #" >>psybnc
echo "# This psyBNC has been patched! #" >>psybnc
echo "# #" >>psybnc
echo "#####################################################################" >>psybnc
echo "exit 0" >>psybnc
chmod +x $HOME/psybnc/psybnc
echo "#####################################################################"
echo "# #"
echo "# WARNING WARNING WARNING #"
echo "# #"
echo "# DO NOT RECOMPILE AS IT WILL MAKE THE BNC UNSTABLE!!!! #"
echo "# #"
echo "#####################################################################"
echo "Booting BNC"
./psybnc
DONE=yes
exit 0
fi
;;
no|No)
echo "Why did you run me then????........ Exitting!!!"
DONE=yes
exit 0
;;
*)
echo $ENTRY is an unrecognized command.
;;
esac
done

