mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-05-09 09:05:51 +00:00
wait for cdr to be generated in failed cdr_x
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13253 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
f8537537a5
commit
4619f83a40
@ -82,6 +82,7 @@ SWITCH_DECLARE(int) switch_channel_test_ready(switch_channel_t *channel, switch_
|
|||||||
#define switch_channel_down(_channel) (switch_channel_get_state(_channel) >= CS_HANGUP)
|
#define switch_channel_down(_channel) (switch_channel_get_state(_channel) >= CS_HANGUP)
|
||||||
|
|
||||||
SWITCH_DECLARE(void) switch_channel_wait_for_state(switch_channel_t *channel, switch_channel_t *other_channel, switch_channel_state_t want_state);
|
SWITCH_DECLARE(void) switch_channel_wait_for_state(switch_channel_t *channel, switch_channel_t *other_channel, switch_channel_state_t want_state);
|
||||||
|
SWITCH_DECLARE(void) switch_channel_wait_for_state_timeout(switch_channel_t *other_channel, switch_channel_state_t want_state, uint32_t timeout);
|
||||||
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,
|
switch_bool_t pres,
|
||||||
|
@ -771,6 +771,25 @@ SWITCH_DECLARE(void) switch_channel_wait_for_state(switch_channel_t *channel, sw
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWITCH_DECLARE(void) switch_channel_wait_for_state_timeout(switch_channel_t *other_channel, switch_channel_state_t want_state, uint32_t timeout)
|
||||||
|
{
|
||||||
|
switch_channel_state_t state;
|
||||||
|
uint32_t count = 0;
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
state = switch_channel_get_running_state(other_channel);
|
||||||
|
|
||||||
|
if (state >= want_state) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch_cond_next();
|
||||||
|
if (++count >= timeout) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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,
|
switch_bool_t pres,
|
||||||
|
@ -2052,7 +2052,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_channel_wait_for_state(caller_channel, switch_core_session_get_channel(originate_status[i].peer_session), CS_DESTROY);
|
switch_channel_wait_for_state_timeout(switch_core_session_get_channel(originate_status[i].peer_session), CS_DESTROY, 5000);
|
||||||
|
|
||||||
if (switch_ivr_generate_xml_cdr(originate_status[i].peer_session, &cdr) == SWITCH_STATUS_SUCCESS) {
|
if (switch_ivr_generate_xml_cdr(originate_status[i].peer_session, &cdr) == SWITCH_STATUS_SUCCESS) {
|
||||||
if ((xml_text = switch_xml_toxml(cdr, SWITCH_FALSE))) {
|
if ((xml_text = switch_xml_toxml(cdr, SWITCH_FALSE))) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user