Разобрался с патчем http://developer.berlios.de/patch/?func=detailpatch&patch_id=2377&group_id=4482 который без должного анализа подтвердил Нораген...
Собственно патч возвращал работу с паролями ICQ назад к std::string...
То что оно начало работать, это конечно хорошо... но линия партии заключалось в переводе всего на QString и ему подобные...
Так вот... дело было вот в чем:
Перед отправкой пароль ксорится определенной последовательнстью байт.
При этом может так статься, что один из символов после поксора станет нулем...
Для случая std::string -- все работало нормально...
std::string s= "";
s+='c';
s+=(char)0;
s+='d';
s.length(); будет равен трем, а s.c_str вернет всю последовательность байт
Но для QСString все не работает...
QCString qs= "";
qs+='c';
qs+=(char)0;
qs+='d';
Оно просто пропустит нулевой байт, и в строке будет всего два байта... И как результат нас не пустят в сеть...
Щас уеду, и завтра наверное буду понимать, какой QByteArray вместо QCString тут будет кашерно использовать...
Собственно патч возвращал работу с паролями ICQ назад к std::string...
То что оно начало работать, это конечно хорошо... но линия партии заключалось в переводе всего на QString и ему подобные...
Так вот... дело было вот в чем:
Перед отправкой пароль ксорится определенной последовательнстью байт.
При этом может так статься, что один из символов после поксора станет нулем...
Для случая std::string -- все работало нормально...
std::string s= "";
s+='c';
s+=(char)0;
s+='d';
s.length(); будет равен трем, а s.c_str вернет всю последовательность байт
Но для QСString все не работает...
QCString qs= "";
qs+='c';
qs+=(char)0;
qs+='d';
Оно просто пропустит нулевой байт, и в строке будет всего два байта... И как результат нас не пустят в сеть...
Щас уеду, и завтра наверное буду понимать, какой QByteArray вместо QCString тут будет кашерно использовать...
no subject
Date: 2008-04-26 07:58 pm (UTC)