FreeSWITCH:originate_retries 的尝试次数错误
FreeSWITCH: Wrong number of tries with originate_retries
The documentation 对于 originate_retries 说
Number of retries before giving up on originating a call (default is 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 文档有问题?
在 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。
最后,它会执行 originate 循环 retries
次。
for (try = 0; try < retries; try++) {
...
The documentation 对于 originate_retries 说
Number of retries before giving up on originating a call (default is 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 文档有问题?
在 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。
最后,它会执行 originate 循环 retries
次。
for (try = 0; try < retries; try++) {
...