mldonkey-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...


From: mldonkey-commits
Subject: [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...
Date: Fri, 16 Jul 2010 13:57:39 +0000

CVSROOT:        /sources/mldonkey
Module name:    mldonkey
Changes by:     spiralvoice <spiralvoice>       10/07/16 13:57:39

Modified files:
        distrib        : ChangeLog 
        src/daemon/common: commonUploads.ml 

Log message:
        patch #7210

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.1440&r2=1.1441
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonUploads.ml?cvsroot=mldonkey&r1=1.56&r2=1.57

Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.1440
retrieving revision 1.1441
diff -u -b -r1.1440 -r1.1441
--- distrib/ChangeLog   16 Jul 2010 13:56:35 -0000      1.1440
+++ distrib/ChangeLog   16 Jul 2010 13:57:38 -0000      1.1441
@@ -15,6 +15,7 @@
 =========
 
 2010/07/16
+7210: upload scheduler: correctly handle clock jumps (ygrek)
 7219: fsync rename options files (ygrek)
 
 2010/07/15

Index: src/daemon/common/commonUploads.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonUploads.ml,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -b -r1.56 -r1.57
--- src/daemon/common/commonUploads.ml  18 Mar 2008 08:24:37 -0000      1.56
+++ src/daemon/common/commonUploads.ml  16 Jul 2010 13:57:39 -0000      1.57
@@ -782,12 +782,22 @@
       lprintf "streaming_left %d\n" !streaming_left;
     end; *)
   (* buffer empties with time... *)
+  (* FIXME wall-clock time is not needed here and causes problems when clock 
jumps *)
   let new_streaming_time = BasicSocket.current_time () in
-  let deltat = (match !streaming_time with
+  let deltat' = (match !streaming_time with
     | None -> 0.
     | Some t -> new_streaming_time -. t) in
-  streaming_left := !streaming_left + 
-    (int_of_float (!CommonGlobals.payload_bandwidth *. deltat));
+  (* stay sane no matter what *)
+  let deltat = min 10. (max 0. deltat') in
+  if abs_float (deltat -. deltat') > epsilon_float then
+    lprintf_nl "Detected clock jump. deltat %f adjusted to %f" deltat' deltat;
+  (* do not overflow *)
+  let deltab = !CommonGlobals.payload_bandwidth *. deltat in
+  if deltab > float max_int then
+    lprintf_nl "OVERFLOW deltab %f, ignored" deltab
+  else
+    streaming_left := !streaming_left + (int_of_float deltab);
+(*   lprintf_nl "next_uploads %f %f %d %d %d" new_streaming_time deltat 
!streaming_left (streaming_amount()) (Fifo.length upload_clients); *)
   streaming_left := min !streaming_left (streaming_amount ());
   streaming_time := Some new_streaming_time;
   next_uploads_aux ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]