FreeSWITCH: Неверное количество попыток с originate_retries - PullRequest
0 голосов
/ 21 апреля 2020

В документации для originate_retries написано

Количество попыток, прежде чем отказаться от исходящего вызова (по умолчанию 0).

Из-за это, я бы ожидал, что:

  • originate_retries=0 = 1 вызов
  • originate_retries=1 = 2 вызова (1 попытка и 1 повтор)
  • originate_retries=2 = 3 вызова (1 попытка и 2 попытки)
  • originate_retries=3 = 4 вызова (1 попытка и 3 попытки)

Но в моем тестировании я получаю:

  • originate_retries=0 = 1 звонок
  • originate_retries=1 = 1 звонок
  • originate_retries=2 = 2 звонка
  • originate_retries=3 = 3 звонка

Моя исходная команда:

originate{originate_timeout=5,originate_retries=<X>,originate_retry_sleep_ms=5000}user/662 &park()

И моя версия FreeSWITCH:

FreeSWITCH Version 1.10.2-release-14-f7bdd3845a~64bit (-release-14-f7bdd3845a 64bit)

Я что-то здесь не так делаю, я правильно понимаю документацию или проблема в документации freeswitch / freeswitch?

1 Ответ

1 голос
/ 23 апреля 2020

В исходном файле Freeswitch switch_ivr_originate. c вы можете увидеть реализацию этого.

Переменная retries инициализируется со значением 1.

Когда вы Исходящий вызов проверит, если значение больше 0 и меньше 101.

if ((var_val = switch_event_get_header(var_event, "originate_retries")) && 
    switch_true(var_val)) {
       int32_t tmp;
       tmp = atoi(var_val);
       /* allow large number of retries if timeout is set */
       if (tmp > 0 && (retry_timelimit_sec > 0 || tmp < 101)) {
           retries = tmp;
       } else {
           switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING,
                      "Invalid originate_retries setting of %d ignored, value must be 
                       between 1 and 100\n", tmp);
    }
}

Так что, если вы установите originate_retries=0, оно будет фактически установлено на 1.

И наконец, он будет выполняться origin l oop retries раз.

for (try = 0; try < retries; try++) {
...
...