freetdm: Fixes for native signaling bridge (now tested, and works for basic call flows)

- Fix typo when unlocking channel that resulted in deadlock
         - Defer clearing of the peer data until it is completely safe (next call)
This commit is contained in:
Moises Silva
2012-01-26 23:31:29 -05:00
parent 23a328389b
commit f2cdb8c6c7
2 changed files with 14 additions and 15 deletions

View File

@@ -263,6 +263,9 @@ static ftdm_status_t ftdm_core_set_state(const char *file, const char *func, int
}
}
if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_NATIVE_SIGBRIDGE)) {
goto perform_state_change;
}
if (ftdmchan->span->state_map) {
ok = ftdm_parse_state_map(ftdmchan, state, ftdmchan->span->state_map);
@@ -354,6 +357,8 @@ end:
goto done;
}
perform_state_change:
ftdm_log_chan_ex(ftdmchan, file, func, line, FTDM_LOG_LEVEL_DEBUG, "Changed state from %s to %s\n", ftdm_channel_state2str(ftdmchan->state), ftdm_channel_state2str(state));
ftdmchan->last_state = ftdmchan->state;
ftdmchan->state = state;