From 17bd11b8aada4827580aec9d41abc5b8d0a836cc Mon Sep 17 00:00:00 2001
From: Tilghman Lesher <tilghman@meg.abyt.es>
Date: Mon, 7 Jun 2010 19:52:39 +0000
Subject: [PATCH] Seems strange (and the code backs up) that if the max and min
 of a statistic is expressed as a double, the last value would not also need
 to be a double.

(closes issue #15807)
 Reported by: klaus3000


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@268773 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_sip.c               | 2 +-
 channels/sip/dialplan_functions.c | 6 +++---
 include/asterisk/rtp_engine.h     | 6 +++---
 main/rtp_engine.c                 | 2 +-
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 31eaaaba91..d7b6c180b6 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -15977,7 +15977,7 @@ static char *sip_unregister(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
 static int show_chanstats_cb(void *__cur, void *__arg, int flags)
 {
 #define FORMAT2 "%-15.15s  %-11.11s  %-8.8s %-10.10s  %-10.10s (     %%) %-6.6s %-10.10s  %-10.10s (     %%) %-6.6s\n"
-#define FORMAT  "%-15.15s  %-11.11s  %-8.8s %-10.10u%-1.1s %-10.10u (%5.2f%%) %-6.6u %-10.10u%-1.1s %-10.10u (%5.2f%%) %-6.6u\n"
+#define FORMAT  "%-15.15s  %-11.11s  %-8.8s %-10.10u%-1.1s %-10.10u (%5.2f%%) %-6.4lf %-10.10u%-1.1s %-10.10u (%5.2f%%) %-6.4lf\n"
 	struct sip_pvt *cur = __cur;
 	struct ast_rtp_instance_stats stats;
 	char durbuf[10];
diff --git a/channels/sip/dialplan_functions.c b/channels/sip/dialplan_functions.c
index bbc846fe92..23e70c1e8f 100644
--- a/channels/sip/dialplan_functions.c
+++ b/channels/sip/dialplan_functions.c
@@ -167,8 +167,8 @@ int sip_acf_channel_read(struct ast_channel *chan, const char *funcname, char *p
 			} lookup[] = {
 				{ "txcount",               INT, { .i4 = &stats.txcount, }, },
 				{ "rxcount",               INT, { .i4 = &stats.rxcount, }, },
-				{ "txjitter",              INT, { .i4 = &stats.txjitter, }, },
-				{ "rxjitter",              INT, { .i4 = &stats.rxjitter, }, },
+				{ "txjitter",              DBL, { .d8 = &stats.txjitter, }, },
+				{ "rxjitter",              DBL, { .d8 = &stats.rxjitter, }, },
 				{ "remote_maxjitter",      DBL, { .d8 = &stats.remote_maxjitter, }, },
 				{ "remote_minjitter",      DBL, { .d8 = &stats.remote_minjitter, }, },
 				{ "remote_normdevjitter",  DBL, { .d8 = &stats.remote_normdevjitter, }, },
@@ -187,7 +187,7 @@ int sip_acf_channel_read(struct ast_channel *chan, const char *funcname, char *p
 				{ "local_minrxploss",      DBL, { .d8 = &stats.local_minrxploss, }, },
 				{ "local_normdevrxploss",  DBL, { .d8 = &stats.local_normdevrxploss, }, },
 				{ "local_stdevrxploss",    DBL, { .d8 = &stats.local_stdevrxploss, }, },
-				{ "rtt",                   INT, { .i4 = &stats.rtt, }, },
+				{ "rtt",                   DBL, { .d8 = &stats.rtt, }, },
 				{ "maxrtt",                DBL, { .d8 = &stats.maxrtt, }, },
 				{ "minrtt",                DBL, { .d8 = &stats.minrtt, }, },
 				{ "normdevrtt",            DBL, { .d8 = &stats.normdevrtt, }, },
diff --git a/include/asterisk/rtp_engine.h b/include/asterisk/rtp_engine.h
index e7b809d4ca..c7b4339723 100644
--- a/include/asterisk/rtp_engine.h
+++ b/include/asterisk/rtp_engine.h
@@ -235,9 +235,9 @@ struct ast_rtp_instance_stats {
 	/*! Number of packets received */
 	unsigned int rxcount;
 	/*! Jitter on transmitted packets */
-	unsigned int txjitter;
+	double txjitter;
 	/*! Jitter on received packets */
-	unsigned int rxjitter;
+	double rxjitter;
 	/*! Maximum jitter on remote side */
 	double remote_maxjitter;
 	/*! Minimum jitter on remote side */
@@ -275,7 +275,7 @@ struct ast_rtp_instance_stats {
 	/*! Standard deviation packets lost on local side */
 	double local_stdevrxploss;
 	/*! Total round trip time */
-	unsigned int rtt;
+	double rtt;
 	/*! Maximum round trip time */
 	double maxrtt;
 	/*! Minimum round trip time */
diff --git a/main/rtp_engine.c b/main/rtp_engine.c
index 0027b04eef..26881be804 100644
--- a/main/rtp_engine.c
+++ b/main/rtp_engine.c
@@ -1518,7 +1518,7 @@ char *ast_rtp_instance_get_quality(struct ast_rtp_instance *instance, enum ast_r
 
 	/* Now actually fill the buffer with the good information */
 	if (field == AST_RTP_INSTANCE_STAT_FIELD_QUALITY) {
-		snprintf(buf, size, "ssrc=%i;themssrc=%u;lp=%u;rxjitter=%u;rxcount=%u;txjitter=%u;txcount=%u;rlp=%u;rtt=%u",
+		snprintf(buf, size, "ssrc=%i;themssrc=%u;lp=%u;rxjitter=%f;rxcount=%u;txjitter=%f;txcount=%u;rlp=%u;rtt=%f",
 			 stats.local_ssrc, stats.remote_ssrc, stats.rxploss, stats.txjitter, stats.rxcount, stats.rxjitter, stats.txcount, stats.txploss, stats.rtt);
 	} else if (field == AST_RTP_INSTANCE_STAT_FIELD_QUALITY_JITTER) {
 		snprintf(buf, size, "minrxjitter=%f;maxrxjitter=%f;avgrxjitter=%f;stdevrxjitter=%f;reported_minjitter=%f;reported_maxjitter=%f;reported_avgjitter=%f;reported_stdevjitter=%f;",
-- 
GitLab