diff options
author | Zach Chadwick <zachad@qacafe.com> | 2023-02-28 15:16:26 -0500 |
---|---|---|
committer | Gilbert Ramirez <gilbertr@gmail.com> | 2023-03-04 22:54:55 +0000 |
commit | ac28130c76d93329c0019f4a420166164c02e916 (patch) | |
tree | 1d6827a6781ca0614bbfc0e3c343be89bb5a61df /sharkd_session.c | |
parent | c7823a14ec27d1ac72f1d6c0d3ec5eb72aa661e6 (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.c | 11 |
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" + ); + } } } |