VDSPlanet.ru Making the difference in VDS Hosting
Зависает psyBNC 2.3.2-7?

Материал из 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