Resolve assumptions that bridge snapshots would be non-NULL for transfer stasis events.

Attempting to transfer an unbridged call would result in crashes in either CEL code or
in the conversion to AMI messages.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@397921 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Michelson
2013-08-29 15:42:10 +00:00
parent 948934fb76
commit 70ffc1550c
3 changed files with 31 additions and 7 deletions

View File

@@ -585,11 +585,17 @@ static struct ast_manager_event_blob *blind_transfer_to_ami(struct stasis_messag
}
channel_state = ast_manager_build_channel_state_string_prefix(blob->channel, "Transferer");
bridge_state = ast_manager_build_bridge_state_string(blob->bridge);
if (!channel_state || !bridge_state) {
if (!channel_state) {
return NULL;
}
if (blob->bridge) {
bridge_state = ast_manager_build_bridge_state_string(blob->bridge);
if (!bridge_state) {
return NULL;
}
}
exten = ast_json_string_get(ast_json_object_get(blob->blob, "exten"));
context = ast_json_string_get(ast_json_object_get(blob->blob, "context"));
result = ast_json_integer_get(ast_json_object_get(blob->blob, "result"));
@@ -604,7 +610,7 @@ static struct ast_manager_event_blob *blind_transfer_to_ami(struct stasis_messag
"Extension: %s\r\n",
result_strs[result],
ast_str_buffer(channel_state),
ast_str_buffer(bridge_state),
bridge_state ? ast_str_buffer(bridge_state) : "",
is_external ? "Yes" : "No",
context,
exten);