Support expansion variable for hi-res timestamp (bug 1172).
[users/heiko/exim.git] / src / util / ratelimit.pl
index a30cfb60a36f8ace22d13888d7b354fc8d73754e..749125c4f80f5a3b13d423eaae70bfd9a8ba5394 100644 (file)
@@ -1,6 +1,4 @@
 #!/usr/bin/perl -wT
 #!/usr/bin/perl -wT
-#
-# $Cambridge: exim/src/util/ratelimit.pl,v 1.1 2005/09/13 17:51:06 fanf2 Exp $
 
 use strict;
 
 
 use strict;
 
@@ -14,8 +12,8 @@ ACL condition. This is so that you can get an idea of a reasonable
 limit setting before you deploy the restrictions.
 
 This script isn't perfectly accurate, because the time stamps in
 limit setting before you deploy the restrictions.
 
 This script isn't perfectly accurate, because the time stamps in
-Exim's log files are only accurate to a seond whereas internally Exim
-computes sender rates to the accuracy of your computer's clock
+Exim's log files are only accurate to a second whereas internally
+Exim computes sender rates to the accuracy of your computer's clock
 (typically 10ms).
 
 The log files to be processed can be specified on the command line
 (typically 10ms).
 
 The log files to be processed can be specified on the command line
@@ -118,9 +116,9 @@ while (<>) {
   }
   # see acl_ratelimit() for details of the following
   my $interval = $time - $time{$key};
   }
   # see acl_ratelimit() for details of the following
   my $interval = $time - $time{$key};
+  $interval = 1e-9 if $interval <= 0.0;
   my $i_over_p = $interval / $period;
   my $a = exp(-$i_over_p);
   my $i_over_p = $interval / $period;
   my $a = exp(-$i_over_p);
-  $i_over_p = 1e-9 if $i_over_p <= 0.0;
   $time{$key} = $time;
   $rate{$key} = $size * (1.0 - $a) / $i_over_p + $a * $rate{$key};
   $max{$key} = $rate{$key} if $rate{$key} > $max{$key};
   $time{$key} = $time;
   $rate{$key} = $size * (1.0 - $a) / $i_over_p + $a * $rate{$key};
   $max{$key} = $rate{$key} if $rate{$key} > $max{$key};