summaryrefslogtreecommitdiff
path: root/res/res_fax.c
diff options
context:
space:
mode:
authorMatthew Jordan <mjordan@digium.com>2013-06-22 22:42:34 +0000
committerMatthew Jordan <mjordan@digium.com>2013-06-22 22:42:34 +0000
commit175b9831f23ef97944398d476180682efa3b9a8b (patch)
treebc030f8b4993c41b1692d601122e8fbafdb2ac36 /res/res_fax.c
parenta330d0867e3155e34ecbfd23a84fe6e7ebf51469 (diff)
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
Diffstat (limited to 'res/res_fax.c')
-rw-r--r--res/res_fax.c50
1 files changed, 40 insertions, 10 deletions
diff --git a/res/res_fax.c b/res/res_fax.c
index f3a794ba9..40a43189c 100644
--- a/res/res_fax.c
+++ b/res/res_fax.c
@@ -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;