Browse Source

MT#55283 use signed integers to prevent underflows

Change-Id: I971d1e01f0c8340684a61481b61bf96b7af1f489
pull/1592/head
Richard Fuchs 3 years ago
parent
commit
819f1a0104
1 changed files with 8 additions and 7 deletions
  1. +8
    -7
      daemon/mqtt.c

+ 8
- 7
daemon/mqtt.c View File

@ -198,7 +198,7 @@ static void mqtt_ssrc_stats(struct ssrc_ctx *ssrc, JsonBuilder *json, struct cal
json_builder_begin_object(json);
// copy out values
uint64_t packets, octets, packets_lost, duplicates;
int64_t packets, octets, packets_lost, duplicates;
packets = atomic64_get(&ssrc->packets);
octets = atomic64_get(&ssrc->octets);
packets_lost = sc->packets_lost;
@ -206,7 +206,8 @@ static void mqtt_ssrc_stats(struct ssrc_ctx *ssrc, JsonBuilder *json, struct cal
// process per-second stats
uint64_t cur_ts = ssrc_timeval_to_ts(&rtpe_now);
uint64_t last_sample, sample_packets, sample_octets, sample_packets_lost, sample_duplicates;
uint64_t last_sample;
int64_t sample_packets, sample_octets, sample_packets_lost, sample_duplicates;
// sample values
last_sample = atomic64_get_set(&ssrc->last_sample, cur_ts);
@ -230,7 +231,7 @@ static void mqtt_ssrc_stats(struct ssrc_ctx *ssrc, JsonBuilder *json, struct cal
if (last_sample && last_sample != cur_ts) {
// calc sample rates with primitive math
struct timeval last_sample_ts = ssrc_ts_to_timeval(last_sample);
uint64_t usecs_diff = timeval_diff(&rtpe_now, &last_sample_ts);
double usecs_diff = (double) timeval_diff(&rtpe_now, &last_sample_ts);
// adjust samples
packets -= sample_packets;
@ -239,16 +240,16 @@ static void mqtt_ssrc_stats(struct ssrc_ctx *ssrc, JsonBuilder *json, struct cal
duplicates -= sample_duplicates;
json_builder_set_member_name(json, "packets_per_second");
json_builder_add_double_value(json, (double) packets * 1000000.0 / (double) usecs_diff);
json_builder_add_double_value(json, (double) packets * 1000000.0 / usecs_diff);
json_builder_set_member_name(json, "bytes_per_second");
json_builder_add_double_value(json, (double) octets * 1000000.0 / (double) usecs_diff);
json_builder_add_double_value(json, (double) octets * 1000000.0 / usecs_diff);
json_builder_set_member_name(json, "lost_per_second");
json_builder_add_double_value(json, (double) packets_lost * 1000000.0 / (double) usecs_diff);
json_builder_add_double_value(json, (double) packets_lost * 1000000.0 / usecs_diff);
json_builder_set_member_name(json, "duplicates_per_second");
json_builder_add_double_value(json, (double) duplicates * 1000000.0 / (double) usecs_diff);
json_builder_add_double_value(json, (double) duplicates * 1000000.0 / usecs_diff);
}
mutex_lock(&sc->h.lock);


Loading…
Cancel
Save