Ruslan Kosolapov (grundik) wrote,
Ruslan Kosolapov
grundik

Category:

Для памяти про баг с apirpc на Alt Linux и tHelper

Запрашиваем через 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 мне как-то не охота). Благо что патч маленький, нашёл нужное место, да поправил руками.

Пересобрал. Работает.

В принципе ничего страшного или сложного во всём этом нету (хотя в прошлый раз я за день не смог это пофиксить, видимо, голова хреново работала; хотя с другой стороны, в прошлый раз проблему локализовал (так как проблема могла быть и в сервере, и в прохождении от клиента к выводу, и ещё хоть где), так что сегодня было много легче), но сука раздражает. Вот какого хрена в Alt нету xmlrpc для PHP ни в каком виде (ну, вообще-то там есть php-devel, где есть какие-то .h и .c файлы, может их даже собрать можно, но там ни makefile нет, ни ещё чего, а xmlrpc-php без libxmlrpc работать не будет, а её в php-devel нету)? Что, тем, кто выбирает Alt, xmlrpc в php не нужен (как и mod_php для apache2)? Пиздец какой-то...

Кстати, судя по количеству патчей на xmlrpc в cvs PHP, есть вероятность ещё что-нибудь cловить непонятное. Ну хоть буду знать, где сначала искать.

PS: и ещё - C как язык - это пиздец. Почитайте баг, посмотрите патч. Как на этом можно писать? Сука машинный код, натурально.
Subscribe

  • Бердские Скалы (Зверобой)

    Предыдущие поездки по НСО: Коен 2017 Сузун 2017 Сузун (и немного Караканского Бора) Суенгинские водопады (пороги) Караканский бор…

  • Сибирский Огонь 2018

    Предыдущий Сибирский Огонь: https://grundik.livejournal.com/631017.html С большим запозданием выкладываю таки фотки :)…

  • Напролом 2018

    Посетил на днях этап чемпионата НСО по трофи-рейдам «Напролом 2018». Мероприятие агонь, мне очень понравилось, хотя и заняло это практически весь…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 18 comments

  • Бердские Скалы (Зверобой)

    Предыдущие поездки по НСО: Коен 2017 Сузун 2017 Сузун (и немного Караканского Бора) Суенгинские водопады (пороги) Караканский бор…

  • Сибирский Огонь 2018

    Предыдущий Сибирский Огонь: https://grundik.livejournal.com/631017.html С большим запозданием выкладываю таки фотки :)…

  • Напролом 2018

    Посетил на днях этап чемпионата НСО по трофи-рейдам «Напролом 2018». Мероприятие агонь, мне очень понравилось, хотя и заняло это практически весь…