mldonkey-commits
[Top][All Lists]
Advanced

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

[Mldonkey-commits] mldonkey distrib/ChangeLog src/networks/bittorr...


From: mldonkey-commits
Subject: [Mldonkey-commits] mldonkey distrib/ChangeLog src/networks/bittorr...
Date: Fri, 16 Dec 2005 20:59:42 +0000

CVSROOT:        /sources/mldonkey
Module name:    mldonkey
Branch:         
Changes by:     spiralvoice <address@hidden>    05/12/16 20:59:42

Modified files:
        distrib        : ChangeLog 
        src/networks/bittorrent: bTClients.ml bTComplexOptions.ml 
                                 bTGlobals.ml bTInteractive.ml 
                                 bTTypes.ml 

Log message:
        patch #4703

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/distrib/ChangeLog.diff?tr1=1.622&tr2=1.623&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/bittorrent/bTClients.ml.diff?tr1=1.59&tr2=1.60&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/bittorrent/bTComplexOptions.ml.diff?tr1=1.29&tr2=1.30&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/bittorrent/bTGlobals.ml.diff?tr1=1.45&tr2=1.46&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/bittorrent/bTInteractive.ml.diff?tr1=1.71&tr2=1.72&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/bittorrent/bTTypes.ml.diff?tr1=1.29&tr2=1.30&r1=text&r2=text

Patches:
Index: mldonkey/distrib/ChangeLog
diff -u mldonkey/distrib/ChangeLog:1.622 mldonkey/distrib/ChangeLog:1.623
--- mldonkey/distrib/ChangeLog:1.622    Fri Dec 16 20:57:57 2005
+++ mldonkey/distrib/ChangeLog  Fri Dec 16 20:59:42 2005
@@ -12,6 +12,8 @@
 http://mldonkey.berlios.de/modules.php?name=Wiki&pagename=Windows
 
 2005/12/16
+4703: BT: Deactivate dead trackers,
+      re-enable them if no active trackers are found (pango)
 4708: HTML upstats: Enable preview for shared files
 4652: dllink: reject EDK files > 4GB, print access errors for .torrent files
 
Index: mldonkey/src/networks/bittorrent/bTClients.ml
diff -u mldonkey/src/networks/bittorrent/bTClients.ml:1.59 
mldonkey/src/networks/bittorrent/bTClients.ml:1.60
--- mldonkey/src/networks/bittorrent/bTClients.ml:1.59  Wed Dec 14 21:17:46 2005
+++ mldonkey/src/networks/bittorrent/bTClients.ml       Fri Dec 16 20:59:42 2005
@@ -138,6 +138,17 @@
       ("ip", Ip.to_string !!set_client_ip) :: args else args
   in
 
+  let enabled_trackers =
+    let enabled_trackers = List.filter (fun t -> t.tracker_enabled) 
file.file_trackers in
+    if enabled_trackers <> [] then enabled_trackers
+    else begin
+      (* if there is no tracker left, do something ? *)
+      if !verbose_msg_servers then
+       lprintf_nl () "No trackers left, reenabling all of them...";
+      List.iter (fun t -> t.tracker_enabled <- true) file.file_trackers;
+      file.file_trackers
+    end in
+
   List.iter (fun t ->
 
       (* if we have too few sources we may ask the tracker before the interval 
*)
@@ -156,8 +167,9 @@
           if file.file_tracker_connected && t.tracker_last_clients_num = 0 &&
             t.tracker_last_conn < 1 then begin
               if !verbose_msg_servers then
-                lprintf_nl () "Request error from tracker: removing %s" 
t.tracker_url;
-              remove_tracker t.tracker_url file
+                lprintf_nl () "Request error from tracker: disabling %s" 
t.tracker_url;
+             t.tracker_enabled <- false;
+              (* remove_tracker t.tracker_url file *)
             end
           (* Send request to tracker *)
           else begin
@@ -199,11 +211,7 @@
         if !verbose_msg_servers then
           lprintf_nl () "Request NOT sent to tracker %s - next request in %ds 
for file: %s"
             t.tracker_url (t.tracker_interval - (last_time () - 
t.tracker_last_conn)) file.file_name
-  ) file.file_trackers;
-  (* if there is no tracker left, do something ? *)
-  if List.length file.file_trackers = 0 then
-    if !verbose_msg_servers then
-      lprintf_nl () "No trackers left ..."
+  ) enabled_trackers
 
 (** In this function we decide which peers will be
   uploaders. We send a choke message to current uploaders
@@ -1330,8 +1338,9 @@
             match (key, value) with
             | String "failure reason", String failure ->
                 (* On failure, remove the faulty tracker from 
file.file_trackers list *)
-    remove_tracker t.tracker_url file;
-                lprintf_nl () "Failure from Tracker %s in file: %s Reason: 
%s\nBT: Tracker %s removed for failure"
+               t.tracker_enabled <- false;
+               (* remove_tracker t.tracker_url file; *)
+                lprintf_nl () "Failure from Tracker %s in file: %s Reason: 
%s\nBT: Tracker %s disabled for failure"
                   t.tracker_url file.file_name failure t.tracker_url
             | String "warning message", String warning ->
                 lprintf_nl () "Warning from Tracker %s in file: %s Reason: %s" 
t.tracker_url file.file_name warning
Index: mldonkey/src/networks/bittorrent/bTComplexOptions.ml
diff -u mldonkey/src/networks/bittorrent/bTComplexOptions.ml:1.29 
mldonkey/src/networks/bittorrent/bTComplexOptions.ml:1.30
--- mldonkey/src/networks/bittorrent/bTComplexOptions.ml:1.29   Wed Dec 14 
21:17:46 2005
+++ mldonkey/src/networks/bittorrent/bTComplexOptions.ml        Fri Dec 16 
20:59:42 2005
@@ -182,11 +182,9 @@
             torrent_nodes = file_nodes;
 *)
             torrent_announce =
-            (
-              try
-                (List.hd file_trackers)
-              with _ -> ""
-            );
+            (match file_trackers with
+             | h::q -> h
+             | [] -> "");
             torrent_announce_list = file_trackers;
           } in
         let torrent_diskname = Filename.concat downloads_directory
Index: mldonkey/src/networks/bittorrent/bTGlobals.ml
diff -u mldonkey/src/networks/bittorrent/bTGlobals.ml:1.45 
mldonkey/src/networks/bittorrent/bTGlobals.ml:1.46
--- mldonkey/src/networks/bittorrent/bTGlobals.ml:1.45  Tue Dec  6 19:04:29 2005
+++ mldonkey/src/networks/bittorrent/bTGlobals.ml       Fri Dec 16 20:59:42 2005
@@ -162,9 +162,7 @@
       end
 
 let add_torrent_infos file trackers =
-  List.iter (fun tracker ->
-      file.file_trackers <- tracker :: file.file_trackers
-  ) trackers
+  file.file_trackers <- trackers @ file.file_trackers
 
 let create_temp_file file_temp file_files =
   if !CommonOptions.verbose_files then lprintf_nl () "create_temp_file %s" 
file_temp;
@@ -196,6 +194,7 @@
           tracker_torrent_last_dl_req = 0;
           tracker_id = "";
           tracker_key = "";
+         tracker_enabled = true
         } ) file_trackers) @ file.file_trackers
 
 let new_file file_id t torrent_diskname file_temp file_state =
@@ -236,7 +235,7 @@
           impl_file_best_name = t.torrent_name;
         }
       in
-      if List.length t.torrent_announce_list > 1 then
+      if t.torrent_announce_list <> [] then
         set_trackers file t.torrent_announce_list
       else
         set_trackers file [t.torrent_announce];
Index: mldonkey/src/networks/bittorrent/bTInteractive.ml
diff -u mldonkey/src/networks/bittorrent/bTInteractive.ml:1.71 
mldonkey/src/networks/bittorrent/bTInteractive.ml:1.72
--- mldonkey/src/networks/bittorrent/bTInteractive.ml:1.71      Fri Dec 16 
20:56:31 2005
+++ mldonkey/src/networks/bittorrent/bTInteractive.ml   Fri Dec 16 20:59:42 2005
@@ -142,7 +142,8 @@
     ("", "sr",
       (let tracker_string = ref "" in
        List.iter (fun tracker ->
-        tracker_string := !tracker_string ^ (shorten tracker.tracker_url 
!!max_name_len) ^ " "
+         tracker_string := (if tracker.tracker_enabled then "" else "*") ^ 
+          !tracker_string ^ (shorten tracker.tracker_url !!max_name_len) ^ " "
       ) file.file_trackers;
       Printf.sprintf "%s" !tracker_string)) ];
 
@@ -186,77 +187,82 @@
         "" -> "-"
       | _ -> file.file_encoding) ];
 
-  match file.file_trackers with
-      [] -> ()
-    | t :: _ ->
-      Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-      html_mods_td buf [
-        ("Last Connect", "sr br", "Last Connect");
-        ("", "sr", string_of_date t.tracker_last_conn) ];
-
-      Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-      html_mods_td buf [
-        ("Connect Interval", "sr br", "Con Interval");
-        ("", "sr", Printf.sprintf "%d" t.tracker_interval) ];
-
-      Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-      html_mods_td buf [
-        ("Connect Min Interval", "sr br", "Con Min Interval");
-        ("", "sr", Printf.sprintf "%d" t.tracker_min_interval) ];
-      (* show only interesting answers*)
-      if t.tracker_torrent_downloaded > 0 then begin
-          Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-          html_mods_td buf [
-            ("Downloaded", "sr br", "Downloaded");
-            ("", "sr", Printf.sprintf "%d" t.tracker_torrent_downloaded) ]
-        end;
-      if t.tracker_torrent_complete > 0 then begin
-          Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-          html_mods_td buf [
-            ("Complete (seeds)", "sr br", "Complete");
-            ("", "sr", Printf.sprintf "%d" t.tracker_torrent_complete) ]
-        end;
-      if t.tracker_torrent_incomplete > 0 then begin
-          Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-          html_mods_td buf [
-            ("Incomplete (peers)", "sr br", "Incomplete");
-            ("", "sr", Printf.sprintf "%d" t.tracker_torrent_incomplete) ]
-        end;
-      if t.tracker_torrent_total_clients_count > 0 then begin
-          Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-          html_mods_td buf [
-            ("Total client count", "sr br", "All clients");
-            ("", "sr", Printf.sprintf "%d" 
t.tracker_torrent_total_clients_count) ]
-        end;
-      if t.tracker_torrent_last_dl_req > 0 then begin
-          Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-          html_mods_td buf [
-            ("Latest torrent request", "sr br", "Latest request");
-            ("", "sr", Printf.sprintf "%ds" t.tracker_torrent_last_dl_req) ]
-        end;
-      if String.length t.tracker_id > 0 then begin
-          Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-          html_mods_td buf [
-           ("Tracker id", "sr br", "Tracker id");
-           ("", "sr", Printf.sprintf "%s" t.tracker_id) ]
-        end;
-      if String.length t.tracker_key > 0 then begin
-          Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-          html_mods_td buf [
-           ("Tracker key", "sr br", "Tracker key");
-           ("", "sr", Printf.sprintf "%s" t.tracker_key) ]
-        end;
-
-      let cntr = ref 0 in
-      List.iter (fun (filename, size) ->
-          Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
-          let fs = Printf.sprintf "File %d" !cntr in
-          html_mods_td buf [
-           (fs, "sr br", fs);
-           ("", "sr", (Printf.sprintf "%s (%Ld bytes)" filename size)) 
-          ];
-          incr cntr;
-      ) file.file_files
+  let rec print_first_tracker l =
+    match l with
+      | [] -> ()
+      | t :: q ->
+         if not t.tracker_enabled then print_first_tracker q
+         else begin
+           Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+           html_mods_td buf [
+              ("Last Connect", "sr br", "Last Connect");
+              ("", "sr", string_of_date t.tracker_last_conn) ];
+
+           Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+           html_mods_td buf [
+              ("Connect Interval", "sr br", "Con Interval");
+              ("", "sr", Printf.sprintf "%d" t.tracker_interval) ];
+
+           Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+           html_mods_td buf [
+              ("Connect Min Interval", "sr br", "Con Min Interval");
+              ("", "sr", Printf.sprintf "%d" t.tracker_min_interval) ];
+           (* show only interesting answers*)
+           if t.tracker_torrent_downloaded > 0 then begin
+              Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+              html_mods_td buf [
+               ("Downloaded", "sr br", "Downloaded");
+               ("", "sr", Printf.sprintf "%d" t.tracker_torrent_downloaded) ]
+            end;
+           if t.tracker_torrent_complete > 0 then begin
+              Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+              html_mods_td buf [
+               ("Complete (seeds)", "sr br", "Complete");
+               ("", "sr", Printf.sprintf "%d" t.tracker_torrent_complete) ]
+            end;
+           if t.tracker_torrent_incomplete > 0 then begin
+              Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+              html_mods_td buf [
+               ("Incomplete (peers)", "sr br", "Incomplete");
+               ("", "sr", Printf.sprintf "%d" t.tracker_torrent_incomplete) ]
+            end;
+           if t.tracker_torrent_total_clients_count > 0 then begin
+              Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+              html_mods_td buf [
+               ("Total client count", "sr br", "All clients");
+               ("", "sr", Printf.sprintf "%d" 
t.tracker_torrent_total_clients_count) ]
+            end;
+           if t.tracker_torrent_last_dl_req > 0 then begin
+              Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+              html_mods_td buf [
+               ("Latest torrent request", "sr br", "Latest request");
+               ("", "sr", Printf.sprintf "%ds" t.tracker_torrent_last_dl_req) ]
+            end;
+           if String.length t.tracker_id > 0 then begin
+              Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+              html_mods_td buf [
+               ("Tracker id", "sr br", "Tracker id");
+               ("", "sr", Printf.sprintf "%s" t.tracker_id) ]
+            end;
+           if String.length t.tracker_key > 0 then begin
+              Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
+              html_mods_td buf [
+               ("Tracker key", "sr br", "Tracker key");
+               ("", "sr", Printf.sprintf "%s" t.tracker_key) ]
+           end 
+         end in
+  print_first_tracker file.file_trackers;
+
+  let cntr = ref 0 in
+  List.iter (fun (filename, size) ->
+    Printf.bprintf buf "\\</tr\\>\\<tr class=\\\"dl-%d\\\"\\>" (html_mods_cntr 
());
+    let fs = Printf.sprintf "File %d" !cntr in
+    html_mods_td buf [
+      (fs, "sr br", fs);
+      ("", "sr", (Printf.sprintf "%s (%Ld bytes)" filename size)) 
+    ];
+    incr cntr;
+  ) file.file_files
 
 let op_file_print_sources_html file buf =
 
Index: mldonkey/src/networks/bittorrent/bTTypes.ml
diff -u mldonkey/src/networks/bittorrent/bTTypes.ml:1.29 
mldonkey/src/networks/bittorrent/bTTypes.ml:1.30
--- mldonkey/src/networks/bittorrent/bTTypes.ml:1.29    Tue Nov 22 17:57:56 2005
+++ mldonkey/src/networks/bittorrent/bTTypes.ml Fri Dec 16 20:59:42 2005
@@ -217,6 +217,7 @@
     mutable tracker_torrent_last_dl_req : int;
     mutable tracker_id : string;
     mutable tracker_key : string;
+    mutable tracker_enabled : bool;
   }
 
 and file = {




reply via email to

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