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: Thu, 19 Apr 2007 13:32:56 +0000

CVSROOT:        /sources/mldonkey
Module name:    mldonkey
Changes by:     spiralvoice <spiralvoice>       07/04/19 13:32:56

Modified files:
        distrib        : ChangeLog 
        src/daemon/common: commonSwarming.ml 
        src/networks/donkey: donkeyClient.ml donkeyComplexOptions.ml 
                             donkeyGlobals.ml donkeyShare.ml 
                             donkeyShare.mli 

Log message:
        patch #5869

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.1233&r2=1.1234
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonSwarming.ml?cvsroot=mldonkey&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyClient.ml?cvsroot=mldonkey&r1=1.122&r2=1.123
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyComplexOptions.ml?cvsroot=mldonkey&r1=1.63&r2=1.64
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyGlobals.ml?cvsroot=mldonkey&r1=1.116&r2=1.117
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyShare.ml?cvsroot=mldonkey&r1=1.58&r2=1.59
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyShare.mli?cvsroot=mldonkey&r1=1.3&r2=1.4

Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.1233
retrieving revision 1.1234
diff -u -b -r1.1233 -r1.1234
--- distrib/ChangeLog   19 Apr 2007 13:25:57 -0000      1.1233
+++ distrib/ChangeLog   19 Apr 2007 13:32:56 -0000      1.1234
@@ -15,6 +15,11 @@
 =========
 
 2007/04/19
+5869: EDK/Swarmer: Try harder to read corrupt files.ini
+- reset chunk table to missing after re-creating a missing temp file
+- discard swarmers without files entry in files.ini instead of stopping
+- check that partial hashes file_md4s match with file_md4 when reading 
files.ini
+
 5870: Updated distrib/mldonkey_submit, it now uses command dllink instead of 
dd,
       it also supports http and sig2dat links (atordo)
 

Index: src/daemon/common/commonSwarming.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonSwarming.ml,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- src/daemon/common/commonSwarming.ml 18 Feb 2007 00:13:08 -0000      1.59
+++ src/daemon/common/commonSwarming.ml 19 Apr 2007 13:32:56 -0000      1.60
@@ -3274,7 +3274,7 @@
 let check_swarmer s =
   try
     match s.s_networks with
-    | [] -> assert false
+    | [] -> lprintf_nl "found unused swarmer %s, discarding" s.s_filename;
     | tprim :: tail ->
         assert(tprim.t_primary);
 

Index: src/networks/donkey/donkeyClient.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyClient.ml,v
retrieving revision 1.122
retrieving revision 1.123
diff -u -b -r1.122 -r1.123
--- src/networks/donkey/donkeyClient.ml 18 Feb 2007 00:13:09 -0000      1.122
+++ src/networks/donkey/donkeyClient.ml 19 Apr 2007 13:32:56 -0000      1.123
@@ -1541,7 +1541,7 @@
               end else begin
 (* We should check the correctness of the Md4 array *)
                let md4s = t.Q.chunks in
-               let md4 = DonkeyShare.md4_of_array md4s in
+               let md4 = md4_of_array md4s in
                if md4 <> file.file_md4 then begin
                  lprintf_nl "[ERROR] Chunks md4s do not match file_md4 for 
%s(%s) from %s"
                     (file_best_name file) 

Index: src/networks/donkey/donkeyComplexOptions.ml
===================================================================
RCS file: 
/sources/mldonkey/mldonkey/src/networks/donkey/donkeyComplexOptions.ml,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -b -r1.63 -r1.64
--- src/networks/donkey/donkeyComplexOptions.ml 18 Feb 2007 00:13:09 -0000      
1.63
+++ src/networks/donkey/donkeyComplexOptions.ml 19 Apr 2007 13:32:56 -0000      
1.64
@@ -37,6 +37,8 @@
 open DonkeyOptions
 open DonkeyGlobals
 
+module VB = VerificationBitmap
+
 let shared_files_ini = create_options_file "shared_files_new.ini"
 
 let file_sources_ini = create_options_file "file_sources.ini"
@@ -230,7 +232,7 @@
       get_value "file_md4" value_to_string
     with _ -> failwith "Bad file_md4"
   in
-  let file_diskname =
+  let file_diskname, empty =
     let filename =
       try
         get_value "file_diskname" value_to_string
@@ -256,12 +258,15 @@
                 ( file_string_of_uid ( Ed2k (Md4.of_string file_md4) ) )
           end
     in
-    if not (Sys.file_exists filename) then
+    let file_exists filename = Sys.file_exists filename in
+    if not (file_exists filename) then
       (* I think we should die here, to prevent any corruption. *)
-      lprintf_nl "ERROR ED2K-TEMP-FILE %s DOES NOT EXIST, THIS WILL PERHAPS 
LEAD TO CORRUPTION IN THAT DOWNLOAD!"
-        filename;
-    if !verbose && (not !CommonGlobals.is_startup_phase) then lprintf_nl 
"ed2k-temp-file %s used." filename;
-    filename
+      lprintf_nl "Error: temp file %s not found, re-creating empty one" 
filename;
+
+    if !verbose && (not !CommonGlobals.is_startup_phase) then
+      lprintf_nl "ed2k-temp-file %s used." filename;
+
+    filename, not (file_exists filename)
   in
 
   let file = DonkeyGlobals.new_file file_diskname file_state
@@ -275,7 +280,15 @@
   let md4s = try get_value "file_md4s" (value_to_array value_to_md4) 
     with _ -> [||] in
   
-  if md4s <> [||] then file.file_computed_md4s <- md4s;
+  if md4s <> [||] then
+    begin
+      if md4_of_array md4s <> (Md4.of_string file_md4) ||
+        Array.length md4s <> file.file_nchunk_hashes then
+        lprintf_nl "discarding partial chunks hashes, computed hash is wrong 
for %s"
+          (file_best_name file)
+      else
+        file.file_computed_md4s <- md4s
+    end;
   
   (match file.file_swarmer with
       None -> ()
@@ -285,7 +298,14 @@
             VerificationNotAvailable
           else
             Verification
-            (Array.map (fun md4 -> Ed2k md4) md4s))
+            (Array.map (fun md4 -> Ed2k md4) md4s));
+        if empty then
+          begin
+            lprintf_nl "re-created missing temp file of %s , resetting chunk 
status to missing"
+              (file_best_name file);
+            let ver_str = String.make (Array.length md4s) (VB.state_to_char 
VB.State_missing) in
+            CommonSwarming.set_chunks_verified_bitmap swarmer (VB.of_string 
ver_str);
+          end
   );
   as_file file
   

Index: src/networks/donkey/donkeyGlobals.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyGlobals.ml,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -b -r1.116 -r1.117
--- src/networks/donkey/donkeyGlobals.ml        18 Feb 2007 00:13:09 -0000      
1.116
+++ src/networks/donkey/donkeyGlobals.ml        19 Apr 2007 13:32:56 -0000      
1.117
@@ -299,6 +299,13 @@
     None -> failwith "No UDP socket"
   | Some sock -> sock
 
+let md4_of_array md4s =
+  let s = String.create ((Array.length md4s) * 16) in
+  Array.iteri (fun i v -> 
+    String.blit (Md4.direct_to_string v) 0 s (i*16) 16
+  ) md4s;
+  Md4.string s
+
 (* compute the name used to save the file *)
 
 let update_best_name file =

Index: src/networks/donkey/donkeyShare.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyShare.ml,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -b -r1.58 -r1.59
--- src/networks/donkey/donkeyShare.ml  28 Jan 2007 20:26:46 -0000      1.58
+++ src/networks/donkey/donkeyShare.ml  19 Apr 2007 13:32:56 -0000      1.59
@@ -66,16 +66,6 @@
         None -> update_shared_num impl
       | Some old_impl -> replace_shared old_impl impl
 
-
-let md4_of_array md4s =
-  let len = Array.length md4s in
-  let s = String.create (len * 16) in
-  for i = 0 to len-1 do
-    let md4 = Md4.direct_to_string md4s.(i) in
-    String.blit md4 0 s (i*16) 16;
-  done;
-  Md4.string s
-
 let new_file_to_share sh codedname old_impl =
   try
 (* How do we compute the total MD4 of the file ? *)

Index: src/networks/donkey/donkeyShare.mli
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyShare.mli,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- src/networks/donkey/donkeyShare.mli 8 Aug 2005 16:47:31 -0000       1.3
+++ src/networks/donkey/donkeyShare.mli 19 Apr 2007 13:32:56 -0000      1.4
@@ -24,4 +24,3 @@
 val all_shared : unit -> DonkeyTypes.file list
 val send_new_shared : unit -> unit
 val remember_shared_info : DonkeyTypes.file -> string -> unit
-val md4_of_array : Md4.Md4.t array -> Md4.Md4.t




reply via email to

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