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, 12 Jan 2006 09:03:12 +0000

CVSROOT:        /sources/mldonkey
Module name:    mldonkey
Branch:         
Changes by:     spiralvoice <address@hidden>    06/01/12 09:03:11

Modified files:
        distrib        : ChangeLog 
        src/daemon/common: commonComplexOptions.ml commonOptions.ml 
        src/daemon/driver: driverCommands.ml 
        src/networks/donkey: donkeyClient.ml donkeyGlobals.ml 
                             donkeyServers.ml 

Log message:
        patch #4776

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/distrib/ChangeLog.diff?tr1=1.670&tr2=1.671&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/common/commonComplexOptions.ml.diff?tr1=1.45&tr2=1.46&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/common/commonOptions.ml.diff?tr1=1.119&tr2=1.120&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/driver/driverCommands.ml.diff?tr1=1.114&tr2=1.115&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/donkey/donkeyClient.ml.diff?tr1=1.79&tr2=1.80&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/donkey/donkeyGlobals.ml.diff?tr1=1.70&tr2=1.71&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/donkey/donkeyServers.ml.diff?tr1=1.48&tr2=1.49&r1=text&r2=text

Patches:
Index: mldonkey/distrib/ChangeLog
diff -u mldonkey/distrib/ChangeLog:1.670 mldonkey/distrib/ChangeLog:1.671
--- mldonkey/distrib/ChangeLog:1.670    Thu Jan 12 08:57:58 2006
+++ mldonkey/distrib/ChangeLog  Thu Jan 12 09:03:11 2006
@@ -15,6 +15,7 @@
 =========
 
 2006/01/12
+4776: EDK: Avoid LowID if max_indirect_connections is reached (thx to zet)
 4787: EDK: Show server version (ported from Mulus - thx to Knocker),
       disconnect blocked server after loading IP blocklist
 
Index: mldonkey/src/daemon/common/commonComplexOptions.ml
diff -u mldonkey/src/daemon/common/commonComplexOptions.ml:1.45 
mldonkey/src/daemon/common/commonComplexOptions.ml:1.46
--- mldonkey/src/daemon/common/commonComplexOptions.ml:1.45     Thu Jan 12 
08:57:58 2006
+++ mldonkey/src/daemon/common/commonComplexOptions.ml  Thu Jan 12 09:03:11 2006
@@ -1333,5 +1333,6 @@
   TcpBufferedSocket.set_max_opened_connections
     (fun _ -> !!max_opened_connections);
 
-  Unix32.max_cache_size := total_files - 20
+  Unix32.max_cache_size := total_files - 20;
+  calc_real_max_indirect_connections ()
 )
Index: mldonkey/src/daemon/common/commonOptions.ml
diff -u mldonkey/src/daemon/common/commonOptions.ml:1.119 
mldonkey/src/daemon/common/commonOptions.ml:1.120
--- mldonkey/src/daemon/common/commonOptions.ml:1.119   Thu Jan 12 08:57:58 2006
+++ mldonkey/src/daemon/common/commonOptions.ml Thu Jan 12 09:03:11 2006
@@ -442,7 +442,7 @@
   up : some upload warnings
   unk : unknown messages
   ov : overnet
-  loc : debug source research
+  loc : debug source research/master servers
   share: debug sharing
   md4 : md4 computation
   connect : debug connections
@@ -483,7 +483,7 @@
 
 let max_indirect_connections = define_option current_section
     ["max_indirect_connections"]
-  "Amount of indirect connections in percent (max 50) of 
max_opened_connections, additional to max_opened_connections"
+  "Amount of indirect connections in percent (min 30, max 70) of 
max_opened_connections"
   int_option 20
 
 let max_upload_slots = define_option current_section ["max_upload_slots"]
@@ -1558,7 +1558,20 @@
 Instead use the kill command in Telnet or HTML,
 the kill function of a GUI or CTRL+C.\n\n"
 
+let real_max_indirect_connections = ref 0
+
+let calc_real_max_indirect_connections () =
+  real_max_indirect_connections :=
+    !!max_opened_connections * !!max_indirect_connections / 100
+
 let _ =
+  option_hook max_indirect_connections (fun _ ->
+    begin
+      if !!max_indirect_connections > 70 then max_indirect_connections =:= 70
+      else if !!max_indirect_connections < 30 then max_indirect_connections 
=:= 30
+    end;
+    calc_real_max_indirect_connections ()
+  );
   option_hook global_login (fun _ ->
       let len = String.length !!global_login in
       let prefix = "mldonkey_" in
Index: mldonkey/src/daemon/driver/driverCommands.ml
diff -u mldonkey/src/daemon/driver/driverCommands.ml:1.114 
mldonkey/src/daemon/driver/driverCommands.ml:1.115
--- mldonkey/src/daemon/driver/driverCommands.ml:1.114  Thu Jan 12 08:57:58 2006
+++ mldonkey/src/daemon/driver/driverCommands.ml        Thu Jan 12 09:03:11 2006
@@ -1644,6 +1644,7 @@
                        strings_of_option max_hard_upload_rate;
                        strings_of_option max_hard_download_rate;
                        strings_of_option max_opened_connections;
+                       strings_of_option max_indirect_connections;
                        strings_of_option max_connections_per_second;
                        strings_of_option max_concurrent_downloads;
                       ]
Index: mldonkey/src/networks/donkey/donkeyClient.ml
diff -u mldonkey/src/networks/donkey/donkeyClient.ml:1.79 
mldonkey/src/networks/donkey/donkeyClient.ml:1.80
--- mldonkey/src/networks/donkey/donkeyClient.ml:1.79   Mon Jan  9 00:22:35 2006
+++ mldonkey/src/networks/donkey/donkeyClient.ml        Thu Jan 12 09:03:11 2006
@@ -2395,31 +2395,65 @@
     ) t.Q.locs;
   with Not_found -> ()
       
+let rec matches_3 l ip =
+  let rec iter l (a,b,c,d) =
+    match l with
+      [] -> Ip.null
+    | ip :: _ when 
+      let (w,x,y,z) = Ip.to_ints ip in
+      w=a && x=b && y=c -> ip
+    | _ :: t -> iter t (a,b,c,d)
+  in
+  iter l (Ip.to_ints ip)
+
 let client_connection_handler overnet t event =
-(*  lprintf "[REMOTE CONN]\n"; *)
   match event with
     TcpServerSocket.CONNECTION (s, Unix.ADDR_INET (from_ip, from_port)) ->
-      let from_ip = (Ip.of_inet_addr from_ip) in
-      if !DonkeySources.indirect_connections <
-         !!max_opened_connections * !!max_indirect_connections / 100 &&
-        (match Ip_set.match_ip !Ip_set.bl from_ip with
-                   None -> true
-                 | Some br ->
-                     if !verbose_connect then
-                       lprintf "DKOV: %s:%d blocked: %s\n"
-                         (Ip.to_string from_ip) from_port 
br.blocking_description;
-                     false) then
+      let from_ip = Ip.of_inet_addr from_ip in
+      let s_from_ip = Ip.to_string from_ip in
+      let is_ip_blocked = Ip_set.ip_blocked from_ip in
+      let too_many_indirect_connections =
+        !DonkeySources.indirect_connections >
+        !real_max_indirect_connections
+      in
+
+      let connecting_server = matches_3 (connecting_server_ips()) from_ip in
+      let is_connecting_server = connecting_server <> Ip.null in
+
+      let accept_connection = not is_ip_blocked 
+        && (not too_many_indirect_connections || is_connecting_server)
+      in
+
+      if !verbose_connect || (!verbose && (too_many_indirect_connections || 
is_connecting_server)) then
+        lprintf_nl () "incoming connection from %s:%d %s: (%d/%d)%s"
+          s_from_ip from_port
+          (if accept_connection then "accepted" else
+            if is_ip_blocked then "blocked" else "denied")
+          !DonkeySources.indirect_connections 
+          !real_max_indirect_connections
+          (if is_connecting_server then
+            ( try 
+                let s = Hashtbl.find servers_by_key from_ip in
+                Printf.sprintf " %s (%s)" s.server_name (Ip.to_string 
s.server_ip)
+              with _ ->
+               try 
+                  let s = Hashtbl.find servers_by_key connecting_server in
+                  Printf.sprintf " %s (%s)" s.server_name (Ip.to_string 
s.server_ip)
+                with _ -> "Unknown server"
+            )
+           else ""
+          );
+
+      if accept_connection then
+
         begin
-(*          lprintf "+++++++++++++++++++++++++++++++++++++++++++++++\n"; *)
           (try
               let c = ref None in
               incr DonkeySources.indirect_connections;
-(*              lprintf "INDIRECT CONNECTION.........\n"; *)
               let token = create_token connection_manager in
               let sock = 
                 TcpBufferedSocket.create token "donkey client connection" s 
                   (client_handler2 c) 
-(*client_msg_to_string*)
               in
               init_connection sock from_ip;
               accept_connection_bandwidth sock;
@@ -2434,7 +2468,6 @@
                   90.
               );
               (try
-                  
                   set_reader sock 
                     (DonkeyProtoCom.client_handler2 c (read_first_message 
overnet)
                     (client_to_client []));
@@ -2447,11 +2480,8 @@
                   (Printexc2.to_string e);
                 Unix.close s)
         end     
-      
-      else begin
-          (* lprintf "***** CONNECTION PREVENTED by limitations *****\n"; *)
+      else
           Unix.close s
-        end;
   | _ -> 
       ()      
 
Index: mldonkey/src/networks/donkey/donkeyGlobals.ml
diff -u mldonkey/src/networks/donkey/donkeyGlobals.ml:1.70 
mldonkey/src/networks/donkey/donkeyGlobals.ml:1.71
--- mldonkey/src/networks/donkey/donkeyGlobals.ml:1.70  Thu Jan 12 08:57:58 2006
+++ mldonkey/src/networks/donkey/donkeyGlobals.ml       Thu Jan 12 09:03:11 2006
@@ -182,6 +182,7 @@
 let current_files = ref ([] : file list)
 let xs_servers_list = ref ([] : server list)
 let connected_server_list = ref ([]  : server list)
+let connecting_server_list = ref ([] : server list)
 
 let (banned_ips : (Ip.t, int) Hashtbl.t) = Hashtbl.create 113
 let (old_requests : (int * int, request_record) Hashtbl.t) =
@@ -246,6 +247,15 @@
       Hashtbl.remove table key
   with _ -> ()
 
+let add_connecting_server c =
+  connecting_server_list := c :: !connecting_server_list
+
+let remove_connecting_server c =
+  connecting_server_list := List2.removeq c !connecting_server_list
+
+let connecting_server_ips () =
+  List.rev_map (fun s -> s.server_ip) !connecting_server_list
+
 let add_connected_server c =
   connected_server_list := c :: !connected_server_list
 
@@ -775,6 +785,7 @@
   Printf.bprintf buf "  servers_list: %d\n" (List.length !servers_list);
   Printf.bprintf buf "  xs_servers_list: %d\n" (List.length !xs_servers_list);
   Printf.bprintf buf "  connected_server_list: %d\n" (List.length 
!connected_server_list);
+  Printf.bprintf buf "  connecting_server_list: %d\n" (List.length 
!connecting_server_list);
   Printf.bprintf buf "  udp_servers_list: %d\n" (List.length 
!udp_servers_list);
   Printf.bprintf buf "  interesting_clients: %d\n" (List.length 
!interesting_clients);
   Printf.bprintf buf "  shared_files: %d\n" (List.length !shared_files);
Index: mldonkey/src/networks/donkey/donkeyServers.ml
diff -u mldonkey/src/networks/donkey/donkeyServers.ml:1.48 
mldonkey/src/networks/donkey/donkeyServers.ml:1.49
--- mldonkey/src/networks/donkey/donkeyServers.ml:1.48  Thu Jan 12 08:57:58 2006
+++ mldonkey/src/networks/donkey/donkeyServers.ml       Thu Jan 12 09:03:11 2006
@@ -241,6 +241,7 @@
           | _ -> ());
         s.server_banner <- "";
         s.server_sent_all_queries <- false;
+        remove_connecting_server s;
         remove_connected_server s
 
 
@@ -276,6 +277,7 @@
           (* disconnect after (connected_server_timeout) seconds of silence *)
           set_rtimeout sock !!connected_server_timeout;
           set_server_state s Connected_initiating;
+          remove_connecting_server s;
           s.server_score <- s.server_score + 5;
           connection_ok (s.server_connection_control);
 
@@ -510,13 +512,9 @@
                     C.tags = !client_to_server_tags;
                   }
                 );
+                add_connecting_server s;
                 add_connected_server s;
               with e ->
-                (*
-                  lprintf "%s:%d IMMEDIAT DISCONNECT \n"
-                  (Ip.to_string s.server_ip) s.server_port;
-                  lprintf "DISCONNECTED IMMEDIATLY\n";
-                 *)
                 disconnect_server s (Closed_for_exception e)
           )
           in
@@ -746,7 +744,7 @@
 
 (* check connected servers *)
 let update_master_servers _ =
-  if !verbose then
+  if !verbose_location then
     lprintf_nl () "master servers: start re-computing";
   let server_list = List.sort compare_servers (connected_servers ()) in
   let masters = ref [] in
@@ -757,7 +755,7 @@
       if s.server_master then
         match s.server_sock with
         | Connection _ ->
-            if !verbose then begin
+            if !verbose_location then begin
              if !tag2 then begin
                 lprintf_n () "master servers (old):";
                tag1 := false;
@@ -794,7 +792,7 @@
        connections *)
     if !nconnected_servers > max_allowed_connected_servers then
       begin
-        if !verbose then
+        if !verbose_location then
             lprintf_nl () "master servers: disconnect %s" (Ip.to_string 
s.server_ip);
         nconnected_servers := !nconnected_servers - 3;
         do_if_connected  s.server_sock (fun sock ->
@@ -813,7 +811,7 @@
             last_time ()
             - connection_last_conn s.server_connection_control
           in
-          if !verbose then
+          if !verbose_location then
               lprintf_nl () "master servers: Checking ip:%s, users: %Ld, ct:%d"
                (Ip.to_string s.server_ip) s.server_nusers connection_time;
           if not s.server_master
@@ -825,7 +823,7 @@
               begin
                 if (!nmasters < max_allowed_connected_servers) then
                   begin
-                    if !verbose then
+                    if !verbose_location then
                         lprintf_nl () "master servers: raising  %s"
                                   (Ip.to_string s.server_ip);
                     make_master s
@@ -844,7 +842,7 @@
                              )
                           then
                             begin
-                              if !verbose then
+                              if !verbose_location then
                                 lprintf_nl ()
                                   "master servers: raising %s, disconnected %s"
                                   (Ip.to_string s.server_ip) (Ip.to_string 
ss.server_ip);
@@ -858,7 +856,7 @@
               end
         )
     ) server_list;
-  if !verbose then
+  if !verbose_location then
       lprintf_nl () "master servers: %d connected %d masters - re-computing 
completed"
         !nconnected_servers !nmasters
 




reply via email to

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