aboutsummaryrefslogtreecommitdiffstats
path: root/sharkd_session.c
diff options
context:
space:
mode:
authorZach Chadwick <zachad@qacafe.com>2023-02-28 15:16:26 -0500
committerGilbert Ramirez <gilbertr@gmail.com>2023-03-04 22:54:55 +0000
commitac28130c76d93329c0019f4a420166164c02e916 (patch)
tree1d6827a6781ca0614bbfc0e3c343be89bb5a61df /sharkd_session.c
parentc7823a14ec27d1ac72f1d6c0d3ec5eb72aa661e6 (diff)
Sharkd: show RTP ssrc as hex and improve errors
The token format used by rtp-analyse and rtp-download expect the SSRC field to be a hex string parsable by `ws_hexstrtou32()` as seen in sharkd_session.c:760. The output from tap:rtp-streams was displaying it as an unsigned integer. For consistency, this field is now displayed as a hex string in the output. If the call to download an RTP stream did not match any payloads, Sharkd would not return any information at all. This now returns an error message indicating that there is no RTP data available. Adds three new selftests and sample pcap.
Diffstat (limited to 'sharkd_session.c')
-rw-r--r--sharkd_session.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sharkd_session.c b/sharkd_session.c
index 7faef005f6..3fe071de43 100644
--- a/sharkd_session.c
+++ b/sharkd_session.c
@@ -2032,7 +2032,7 @@ sharkd_session_process_tap_rtp_analyse_cb(void *tapdata)
sharkd_json_value_string("tap", rtp_req->tap_name);
sharkd_json_value_string("type", "rtp-analyse");
- sharkd_json_value_anyf("ssrc", "%u", rtp_req->id.ssrc);
+ sharkd_json_value_stringf("ssrc", "0x%x", rtp_req->id.ssrc);
sharkd_json_value_anyf("max_delta", "%f", statinfo->max_delta);
sharkd_json_value_anyf("max_delta_nr", "%u", statinfo->max_nr);
@@ -2739,7 +2739,7 @@ sharkd_session_process_tap_rtp_cb(void *arg)
json_dumper_begin_object(&dumper);
- sharkd_json_value_anyf("ssrc", "%u", calc.ssrc);
+ sharkd_json_value_stringf("ssrc", "0x%x", calc.ssrc);
sharkd_json_value_string("payload", calc.all_payload_type_names);
sharkd_json_value_string("saddr", calc.src_addr_str);
@@ -4968,6 +4968,13 @@ sharkd_session_process_download(char *buf, const jsmntok_t *tokens, int count)
g_slist_free_full(rtp_req.packets, sharkd_rtp_download_free_items);
}
+ else
+ {
+ sharkd_json_error(
+ rpcid, -10003, NULL,
+ "no rtp data available"
+ );
+ }
}
}