Skip to content
Snippets Groups Projects
Commit 2f26512f authored by Richard Mudgett's avatar Richard Mudgett
Browse files

stasis_endpoint.c: Fix contactstatus_to_json().

The roundtrip_usec json member is optional.  If it isn't present then
don't put it into the converted json structure where ast_json_pack()
will choke on it.

Change-Id: I39bb2f86154ef54591270c58bfda8635070f9ea0
parent bc1ff41b
No related branches found
No related tags found
No related merge requests found
......@@ -253,6 +253,7 @@ static struct ast_json *contactstatus_to_json(struct stasis_message *msg, const
struct ast_endpoint_blob *obj = stasis_message_data(msg);
struct ast_json *json_endpoint;
struct ast_json *json_final;
const char *rtt;
const struct timeval *tv = stasis_message_timestamp(msg);
json_endpoint = ast_endpoint_snapshot_to_json(obj->snapshot, NULL);
......@@ -260,15 +261,30 @@ static struct ast_json *contactstatus_to_json(struct stasis_message *msg, const
return NULL;
}
json_final = ast_json_pack("{s: s, s: o, s: o, s: { s: s, s: s, s: s, s: s } } ",
"type", "ContactStatusChange",
"timestamp", ast_json_timeval(*tv, NULL),
"endpoint", json_endpoint,
"contact_info",
"uri", ast_json_string_get(ast_json_object_get(obj->blob, "uri")),
"contact_status", ast_json_string_get(ast_json_object_get(obj->blob, "contact_status")),
"aor", ast_json_string_get(ast_json_object_get(obj->blob, "aor")),
"roundtrip_usec", ast_json_string_get(ast_json_object_get(obj->blob, "roundtrip_usec")));
/* The roundtrip time is optional. */
rtt = ast_json_string_get(ast_json_object_get(obj->blob, "roundtrip_usec"));
if (!ast_strlen_zero(rtt)) {
json_final = ast_json_pack("{s: s, s: o, s: o, s: { s: s, s: s, s: s, s: s } } ",
"type", "ContactStatusChange",
"timestamp", ast_json_timeval(*tv, NULL),
"endpoint", json_endpoint,
"contact_info",
"uri", ast_json_string_get(ast_json_object_get(obj->blob, "uri")),
"contact_status", ast_json_string_get(ast_json_object_get(obj->blob,
"contact_status")),
"aor", ast_json_string_get(ast_json_object_get(obj->blob, "aor")),
"roundtrip_usec", rtt);
} else {
json_final = ast_json_pack("{s: s, s: o, s: o, s: { s: s, s: s, s: s } } ",
"type", "ContactStatusChange",
"timestamp", ast_json_timeval(*tv, NULL),
"endpoint", json_endpoint,
"contact_info",
"uri", ast_json_string_get(ast_json_object_get(obj->blob, "uri")),
"contact_status", ast_json_string_get(ast_json_object_get(obj->blob,
"contact_status")),
"aor", ast_json_string_get(ast_json_object_get(obj->blob, "aor")));
}
if (!json_final) {
ast_json_unref(json_endpoint);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment