Simm

Simm
Рейтинг
60
Регистрация
11.03.2007
Должность
Ruby on Rails developer
Интересы
SEO, Ruby on Rails

Ставку вынужден снять по личным причинам, приношу извинения.

Пусть будет 340

Стартую, 300

Присоединяюсь, мне тоже билетик, пожалуйста.

Некоторые мои соображения.

проблема в строке 1458 файла pyicqt-0.8.1.5/src/tlib/oscar.py, в этой функции:

def oscar_01_10(self,snac):
skip = struct.unpack('!H',snac[5][:2])[0]
newLevel = struct.unpack('!H',snac[5][2+skip:4+skip])[0]/10
if len(snac[5])>4+skip:
by = self.parseUser(snac[5][4+skip:])
else:
by = None
self.receiveWarning(newLevel, by)

Сама функция - один из методов класса BOSConnection.

Идем выше, на строчку 811 в функцию класса SNACBased, который является родителем класса BOSConnection.

Функция oscar_Data:

def oscar_Data(self,data):
<...>
func=getattr(self,'oscar_%02X_%02X'%(snac[0],snac[1]),None)
if not func:
self.oscar_unknown(snac)
else:
func(snac)
return "Data"

И еще выше в класс OscarConnection в функцию dataReceived:

def dataReceived(self,data):
<...>
func=getattr(self,"oscar_%s"%self.state,None)
if not func:
log.msg("no func for state: %s" % self.state)
return
<...>

Т.о. в log.msg, которая является частью библиотеки twisted нужно передать сообщение "no func for state: %s". Но атрибут state связан с другими классами, так или иначе дело доходит до функции oscar_Data, в которой переменной func передается атрибут-функция, выбор которого определяет snac (некий параметр получаемый извне). Этот атрибут в нашем случае -- функция oscar_01_10. Т.о. вызов func(snac), который мы увидим позже -- и есть вызов функции oscar_01_10, в котором и произошла ошибка. А ошибка чисто структурная, из модуля struct. В результате - log.msg не может принять нужный параметр, поэтому в вершине иерархии трейса - библиотека twisted.

Как-то так. Если кто в чем поправит, буду благодарен.

Чтобы надежно пофиксить, нужно глубже повкуривать код.

Поймать ошибку можно с помощью

exception struct.error, err:

print str(err)

Мне тоже URL, будьте добры.

Всего: 95