提交 d355a572 authored 作者: Brian West's avatar Brian West 提交者: Andrey Volk

FS-10634 [mod_spandsp]: txfax failing with 488 Not Acceptable Here race

上级 38f0f066
...@@ -101,6 +101,9 @@ SWITCH_DECLARE(void) switch_channel_wait_for_state_timeout(switch_channel_t *oth ...@@ -101,6 +101,9 @@ SWITCH_DECLARE(void) switch_channel_wait_for_state_timeout(switch_channel_t *oth
SWITCH_DECLARE(switch_status_t) switch_channel_wait_for_flag(switch_channel_t *channel, SWITCH_DECLARE(switch_status_t) switch_channel_wait_for_flag(switch_channel_t *channel,
switch_channel_flag_t want_flag, switch_channel_flag_t want_flag,
switch_bool_t pres, uint32_t to, switch_channel_t *super_channel); switch_bool_t pres, uint32_t to, switch_channel_t *super_channel);
SWITCH_DECLARE(switch_status_t) switch_channel_wait_for_app_flag(switch_channel_t *channel,
uint32_t app_flag,
const char *key, switch_bool_t pres, uint32_t to);
SWITCH_DECLARE(switch_channel_state_t) switch_channel_perform_set_state(switch_channel_t *channel, SWITCH_DECLARE(switch_channel_state_t) switch_channel_perform_set_state(switch_channel_t *channel,
const char *file, const char *func, int line, switch_channel_state_t state); const char *file, const char *func, int line, switch_channel_state_t state);
......
...@@ -1748,6 +1748,39 @@ SWITCH_DECLARE(switch_status_t) switch_channel_wait_for_flag(switch_channel_t *c ...@@ -1748,6 +1748,39 @@ SWITCH_DECLARE(switch_status_t) switch_channel_wait_for_flag(switch_channel_t *c
return SWITCH_STATUS_SUCCESS; return SWITCH_STATUS_SUCCESS;
} }
SWITCH_DECLARE(switch_status_t) switch_channel_wait_for_app_flag(switch_channel_t *channel,
uint32_t app_flag,
const char *key, switch_bool_t pres, uint32_t to)
{
if (to) {
to++;
}
for (;;) {
if (pres) {
if (switch_channel_test_app_flag_key(key, channel, app_flag)) {
break;
}
} else {
if (!switch_channel_test_app_flag_key(key, channel, app_flag)) {
break;
}
}
switch_cond_next();
if (switch_channel_down(channel)) {
return SWITCH_STATUS_FALSE;
}
if (to && !--to) {
return SWITCH_STATUS_FALSE;
}
}
return SWITCH_STATUS_SUCCESS;
}
SWITCH_DECLARE(void) switch_channel_set_cap_value(switch_channel_t *channel, switch_channel_cap_t cap, uint32_t value) SWITCH_DECLARE(void) switch_channel_set_cap_value(switch_channel_t *channel, switch_channel_cap_t cap, uint32_t value)
{ {
......
...@@ -5223,9 +5223,8 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s ...@@ -5223,9 +5223,8 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s
} }
} }
/* do nothing here, mod_fax will trigger a response (if it's listening =/) */ /* do nothing here, mod_fax will trigger a response (if it's listening =/) */
if (switch_channel_test_app_flag_key("T38", channel, CF_APP_T38_POSSIBLE)) { if (switch_channel_wait_for_app_flag(channel, CF_APP_T38_POSSIBLE, "T38", SWITCH_TRUE, 2000)) {
fmatch = 1; fmatch = 1;
} else { } else {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论