BITERP / PinkRabbitMQ

Внешняя Native API компонента для взаимодействия с RabbitMQ из 1С
MIT License
264 stars 107 forks source link

Падение рабочих процессов 1С в linux при [неправильной] работе с компонентой #24

Open ovcharenko-di opened 4 years ago

ovcharenko-di commented 4 years ago

Дано: Компонента версии 1.8 Ubuntu 18.04, платформа 1С 8.3.13-16

При вызове метода Connect("server", "5672", "admin", "1234", "/") падает рабочий процесс сервера 1С.

Ожидаемое поведение: Как и в Windows, должно выводиться сообщение о том, что в параметре 1 передано значение неправильного типа. В примере "5672" - это Строка, а должно быть 5672 - Число.

antonwantstosleep commented 4 years ago

Я не знаю, важно ли это, но в файле PinkRabbitMQLinux/src/AddInNative.cpp есть такой кусок:

bool AddInNative::CallAsProc(const long lMethodNum, tVariant* paParams, const long lSizeArray)
{
    if (!validateInputParameters(paParams, lMethodNum, lSizeArray))
        return false;

    switch (lMethodNum)
    {
        case eMethConnect:
        {
            std::string host = inputParamToStr(paParams, 0);
            std::string login = inputParamToStr(paParams, 2);
            std::string pwd = inputParamToStr(paParams, 3);
            std::string vhost = inputParamToStr(paParams, 4);
            return client.connect(host, 5672, login, pwd, vhost);
        }
        ...

Как я понимаю, компонента вообще не позволяет переопределять порт?

ovcharenko-di commented 4 years ago

@antonwantstosleep судя по этому фрагменту да, но у меня поведение системы отличается в зависимости от значения этого параметра. Значит, он обрабатывается или переопределяется где-то еще. Или же параметр обрабатывается где-то до этого фрагмента и там как раз и есть ошибка.