Properly extract channel variables for the SendFAX/ReceiveFAX Stasis messages

By the time something extracts the pointers from ast_json_pack, the channels
will already be disposed of. This patch properly pulls the information out of
the variables and packs them into the JSON blob.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@392607 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Matthew Jordan
2013-06-22 22:42:34 +00:00
parent a330d0867e
commit 175b9831f2

View File

@@ -1783,18 +1783,33 @@ static int report_receive_fax_status(struct ast_channel *chan, const char *filen
SCOPED_CHANNELLOCK(lock, chan);
remote_station_id = S_OR(pbx_builtin_getvar_helper(chan, "REMOTESTATIONID"), "");
if (!ast_strlen_zero(remote_station_id)) {
remote_station_id = ast_strdupa(remote_station_id);
}
local_station_id = S_OR(pbx_builtin_getvar_helper(chan, "LOCALSTATIONID"), "");
if (!ast_strlen_zero(local_station_id)) {
local_station_id = ast_strdupa(local_station_id);
}
fax_pages = S_OR(pbx_builtin_getvar_helper(chan, "FAXPAGES"), "");
if (!ast_strlen_zero(fax_pages)) {
fax_pages = ast_strdupa(fax_pages);
}
fax_resolution = S_OR(pbx_builtin_getvar_helper(chan, "FAXRESOLUTION"), "");
if (!ast_strlen_zero(fax_resolution)) {
fax_resolution = ast_strdupa(fax_resolution);
}
fax_bitrate = S_OR(pbx_builtin_getvar_helper(chan, "FAXBITRATE"), "");
if (!ast_strlen_zero(fax_bitrate)) {
fax_bitrate = ast_strdupa(fax_bitrate);
}
json_object = ast_json_pack("{s: s, s: s, s: s, s: s, s: s, s: s, s: O}",
"type", "receive",
"remote_station_id", remote_station_id,
"local_station_id", local_station_id,
"fax_pages", fax_pages,
"fax_resolution", fax_resolution,
"fax_bitrate", fax_bitrate,
"remote_station_id", S_OR(remote_station_id, ""),
"local_station_id", S_OR(local_station_id, ""),
"fax_pages", S_OR(fax_pages, ""),
"fax_resolution", S_OR(fax_resolution, ""),
"fax_bitrate", S_OR(fax_bitrate, ""),
"filenames", json_array);
if (!json_object) {
return -1;
@@ -2274,18 +2289,33 @@ static int report_send_fax_status(struct ast_channel *chan, struct ast_fax_sessi
SCOPED_CHANNELLOCK(lock, chan);
remote_station_id = S_OR(pbx_builtin_getvar_helper(chan, "REMOTESTATIONID"), "");
if (!ast_strlen_zero(remote_station_id)) {
remote_station_id = ast_strdupa(remote_station_id);
}
local_station_id = S_OR(pbx_builtin_getvar_helper(chan, "LOCALSTATIONID"), "");
if (!ast_strlen_zero(local_station_id)) {
local_station_id = ast_strdupa(local_station_id);
}
fax_pages = S_OR(pbx_builtin_getvar_helper(chan, "FAXPAGES"), "");
if (!ast_strlen_zero(fax_pages)) {
fax_pages = ast_strdupa(fax_pages);
}
fax_resolution = S_OR(pbx_builtin_getvar_helper(chan, "FAXRESOLUTION"), "");
if (!ast_strlen_zero(fax_resolution)) {
fax_resolution = ast_strdupa(fax_resolution);
}
fax_bitrate = S_OR(pbx_builtin_getvar_helper(chan, "FAXBITRATE"), "");
if (!ast_strlen_zero(fax_bitrate)) {
fax_bitrate = ast_strdupa(fax_bitrate);
}
json_obj = ast_json_pack("{s: s, s: s, s: s, s: s, s: s, s: s, s: o}",
"type", "send"
"remote_station_id", remote_station_id,
"local_station_id", local_station_id,
"fax_pages", fax_pages,
"fax_resolution", fax_resolution,
"fax_bitrate", fax_bitrate,
"remote_station_id", S_OR(remote_station_id, ""),
"local_station_id", S_OR(local_station_id, ""),
"fax_pages", S_OR(fax_pages, ""),
"fax_resolution", S_OR(fax_resolution, ""),
"fax_bitrate", S_OR(fax_bitrate, ""),
"filenames", json_filenames);
if (!json_obj) {
return -1;