Bug 9951 - неприятная бага в xmlrpc (который даже не собран)
Summary: неприятная бага в xmlrpc (который даже не собран)
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: php (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL: http://grundik.livejournal.com/122501...
Keywords:
Depends on:
Blocks:
 
Reported: 2006-09-03 01:43 MSD by Michael Shigorin
Modified: 2006-09-04 12:53 MSD (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Shigorin 2006-09-03 01:43:59 MSD
(см. Url)

Запрашиваем через XMLRPC метод A(string), который должен вернуть этот string
(ну, на самом деле не так, но для простоты пусть будет так).

Если клиент работает под debian, то всё хорошо.
Если клиент работает под ALM, то в случае, если string - это русские букыв,
получаем ошибку "error decoding RPC. reference to invalid character". Если ASCII
- то всё нормально. Кодировка везде UTF-8.

Клиент написан на PHP. На debian PHP собран с xmlrpc из коробки. На ALM я
поддержку xmlrpc делал ручками как extention, потому что в Alt нету xmlrpc для
PHP (как и многих других вещей; впрочем, про приколы alt-овцев с php я уже писал
когда-то; кстати, у них опять репозиторий побился).


Начинаем исследовать баг. Смотрим запрос (тестовый запрос - A("'раз','два'")).
debian:
"'раз','два'"
ALM: "'€°·','´²°'"

Заметили? В ALM как-будто нолики вырезали из первого байта.

Оказывается, это древний баг (http://bugs.php.net/bug.php?id=28597). Но! В
xmlrpc-epi фикса нет, в ALM нету xmlrpc вообще, patch из бага не открывается
(сервер, где он лежал, уже нету). Из debian вытащить исходники не получится, так
как там не отдельно xmlrpc-epi, а в самом бинарнике php.

Еле нашёл патч -
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/libxmlrpc/xml_element.c?r1=1.3.4.2&r2=1.3.4.3
(ещё бы, 2004 год). Естественно, он не наложился бы, потому что исходники
xmlrpc-epi другие, чем xmlrpc в php (а пересобирать весь php мне как-то не
охота). Благо что патч маленький, нашёл нужное место, да поправил руками.

Пересобрал. Работает.
Comment 1 Sir Raorn 2006-09-03 02:31:17 MSD
А что мешает Благородному Дону использовать %patch после cp -pr
%php_extsrcdir/%php_extension/* . ?

P.S. package mismatch?
Comment 2 Alexey Gladkov 2006-09-04 10:45:52 MSD
Миш, ты что-то собрал, ты в этом чём-то нашёл багу ... php тут причём ?
У нас есть модули, которые пакуются отдельно и содержат патчи (например php-dba).
Кроме того (вопрос в сторону), а ты не пробовал собирать этот модуль с системным
libxmlrpc-devel ? 

По поводу баги:  Resolve -> INVALID
Comment 3 Michael Shigorin 2006-09-04 12:36:23 MSD
Лёш, эт не я собирал.  См. url.  Я всего лишь решил закинуть на тот случай, если
тебе результат разборки Руслана будет полезен, поскольку сам бы долго чесал в
затылке при таких искажениях данных.
Comment 4 Alexey Gladkov 2006-09-04 12:53:11 MSD
(In reply to comment #3)
> Лёш, эт не я собирал.

Понял. Большое спасибо. Если вдруг у нас когда-нибудь появится php-xmlrpc, то
буду иметь это ввиду.