/[mldonkey]/mldonkey/src/networks/donkey/donkeyServers.ml
ViewVC logotype

Diff of /mldonkey/src/networks/donkey/donkeyServers.ml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.34 by spiralvoice, Thu Jul 14 14:05:25 2005 UTC revision 1.35 by spiralvoice, Fri Jul 22 10:58:55 2005 UTC
# Line 46  open DonkeyGlobals Line 46  open DonkeyGlobals
46    
47  module Udp = DonkeyProtoUdp  module Udp = DonkeyProtoUdp
48    
49    let lprintf_nl () =
50      lprintf "%s[EDK]: "
51      (log_time ()); lprintf_nl2
52    
53  (* Constants *)  (* Constants *)
54  let udp_requests_new  = 5  let udp_requests_new  = 5
55  let udp_requests_old  = 3  let udp_requests_old  = 3
# Line 122  let query_locations_timer () = Line 126  let query_locations_timer () =
126                List.iter (                List.iter (
127                  fun file ->                  fun file ->
128                    if !verbose_location then                    if !verbose_location then
129                      lprintf "donkeyServers: TCP: Query Location of %s\n"                      lprintf_nl () "TCP: Query Location of %s"
130                        (file_best_name file);                        (file_best_name file);
131                    let module M = DonkeyProtoServer in                    let module M = DonkeyProtoServer in
132                    server_send sock ( M.QueryLocationReq file.file_md4  )                    server_send sock ( M.QueryLocationReq file.file_md4  )
# Line 173  let udp_query_sources () = Line 177  let udp_query_sources () =
177      ()      ()
178    done;    done;
179    if !verbose_location then    if !verbose_location then
180      lprintf "donkeyServers: udp_query_source to: %2d old %2d new servers\n"      lprintf_nl () "udp_query_source to: %2d old %2d new servers"
181        (List.length !old_servers) (List.length !new_servers);        (List.length !old_servers) (List.length !new_servers);
182    
183    try    try
# Line 201  let udp_query_sources () = Line 205  let udp_query_sources () =
205      ) !old_servers;      ) !old_servers;
206    
207    with e ->    with e ->
208      lprintf "udp_query_sources: %s\n" (Printexc2.to_string e)      lprintf_nl () "udp_query_sources: %s" (Printexc2.to_string e)
209    
210    
211                
# Line 255  let client_to_server s t sock = Line 259  let client_to_server s t sock =
259    s.server_last_message <- last_time ();    s.server_last_message <- last_time ();
260        
261    if !verbose_msg_servers then begin    if !verbose_msg_servers then begin
262      lprintf "Message from server:\n";      lprintf_nl () "Message from server:";
263      DonkeyProtoServer.print t; lprintf "\n"      DonkeyProtoServer.print t; lprint_newline ()
264    end;    end;
265        
266    match t with    match t with
# Line 294  let client_to_server s t sock = Line 298  let client_to_server s t sock =
298        CommonEvent.add_event (Console_message_event msg)        CommonEvent.add_event (Console_message_event msg)
299        
300    | M.ServerListReq l ->    | M.ServerListReq l ->
301        if !verbose then lprintf "donkeyServers: Received serverlist\n";        if !verbose then lprintf_nl () "donkeyServers: Received serverlist";
302        if !!update_server_list_server then        if !!update_server_list_server then
303          let module Q = M.ServerList in          let module Q = M.ServerList in
304          List.iter (fun s ->          List.iter (fun s ->
# Line 335  let client_to_server s t sock = Line 339  let client_to_server s t sock =
339        s.server_nfiles <- Int64.of_int files;        s.server_nfiles <- Int64.of_int files;
340        if (users < !!min_users_on_server && not s.server_preferred) then        if (users < !!min_users_on_server && not s.server_preferred) then
341          begin          begin
342            lprintf "%s:%d remove server min_users_on_server limit hit!\n"            lprintf_nl () "%s:%d remove server min_users_on_server limit hit!"
343              (Ip.to_string s.server_ip) s.server_port;              (Ip.to_string s.server_ip) s.server_port;
344                        
345            disconnect_server s Closed_for_timeout;            disconnect_server s Closed_for_timeout;
# Line 347  let client_to_server s t sock = Line 351  let client_to_server s t sock =
351        (* This can either be a reply to a QueryID or a indirect request for        (* This can either be a reply to a QueryID or a indirect request for
352           connection from another client. In this case, we should immediatly           connection from another client. In this case, we should immediatly
353           connect. *)           connect. *)
354        if !verbose then lprintf "donkeyServers: QueryIDReplyReq: received\n";        if !verbose then lprintf_nl () "QueryIDReplyReq: received";
355        let module Q = M.QueryIDReply in        let module Q = M.QueryIDReply in
356        if Ip.valid t.Q.ip && ip_reachable t.Q.ip then begin        if Ip.valid t.Q.ip && ip_reachable t.Q.ip then begin
357          try          try
# Line 355  let client_to_server s t sock = Line 359  let client_to_server s t sock =
359                None -> raise Not_found                None -> raise Not_found
360              | Some file ->              | Some file ->
361                  if !verbose then                  if !verbose then
362                    lprintf "donkeyServers: QueryIDReplyReq: This was a QueryID reply !?\n";                    lprintf_nl () "QueryIDReplyReq: This was a QueryID reply !?";
363                  let s = DonkeySources.find_source_by_uid                  let s = DonkeySources.find_source_by_uid
364                    (Direct_address (t.Q.ip, t.Q.port)) in                    (Direct_address (t.Q.ip, t.Q.port)) in
365                  DonkeySources.set_request_result s file.file_sources                  DonkeySources.set_request_result s file.file_sources
366                    File_new_source                    File_new_source
367          with _ ->          with _ ->
368            if !verbose then            if !verbose then
369              lprintf "donkeyServers: QueryIDReplyReq: Calling back to %s:%d\n"              lprintf_nl () "QueryIDReplyReq: Calling back to %s:%d"
370                (Ip.to_string t.Q.ip) t.Q.port;                (Ip.to_string t.Q.ip) t.Q.port;
371            let c = new_client (Direct_address (t.Q.ip, t.Q.port)) in            let c = new_client (Direct_address (t.Q.ip, t.Q.port)) in
372            DonkeyClient.reconnect_client c;            DonkeyClient.reconnect_client c;
# Line 370  let client_to_server s t sock = Line 374  let client_to_server s t sock =
374    
375    | M.QueryIDFailedReq t ->    | M.QueryIDFailedReq t ->
376        if !verbose then        if !verbose then
377          lprintf "donkeyServers: QueryIDFailedReq:\n";          lprintf_nl () "QueryIDFailedReq:";
378        ignore (Fifo.take s.server_id_requests)        ignore (Fifo.take s.server_id_requests)
379                    
380    | M.QueryReplyReq t ->    | M.QueryReplyReq t ->
# Line 521  let rec connect_one_server restart = Line 525  let rec connect_one_server restart =
525              if !servers_list = [] then begin              if !servers_list = [] then begin
526                if !print_empty_list then begin                if !print_empty_list then begin
527                  print_empty_list := false;                  print_empty_list := false;
528                  lprintf "Looks like you have no servers in your servers.ini\n";                  lprintf_nl () "Looks like you have no servers in your servers.ini";
529                  lprintf "You should either use the one provided with mldonkey\n";                  lprintf_nl () "You should either use the one provided with mldonkey";
530                  lprintf "or import one from the WEB\n";                  lprintf_nl () "or import one from the WEB";
531                end;                end;
532                                    
533                raise Not_found;                raise Not_found;
# Line 578  let rec check_server_connections () = Line 582  let rec check_server_connections () =
582   * clean serverlist   * clean serverlist
583   *)   *)
584  let remove_old_servers () =  let remove_old_servers () =
585    if !verbose then lprintf "REMOVE OLD SERVERS\n";      if !verbose then lprintf_nl () "REMOVE OLD SERVERS";
586    let t1 = Unix.gettimeofday () in    let t1 = Unix.gettimeofday () in
587  (*  (*
588  The new tactic: we sort the servers (the more recently connected first,  The new tactic: we sort the servers (the more recently connected first,
# Line 598  position to the min_left_servers positio Line 602  position to the min_left_servers positio
602            (connection_last_conn s.server_connection_control, s) :: !to_keep            (connection_last_conn s.server_connection_control, s) :: !to_keep
603    ) servers_by_key;    ) servers_by_key;
604    let t2 = Unix.gettimeofday () in    let t2 = Unix.gettimeofday () in
605    if !verbose then lprintf "Delay to detect black-listed servers: %2.2f\n" (t2 -. t1);    if !verbose then lprintf_nl () "Delay to detect black-listed servers: %2.2f" (t2 -. t1);
606        
607    if List.length !to_keep > !!min_left_servers then begin    if List.length !to_keep > !!min_left_servers then begin
608    let array = Array.of_list !to_keep in    let array = Array.of_list !to_keep in
# Line 609  position to the min_left_servers positio Line 613  position to the min_left_servers positio
613    if !verbose then    if !verbose then
614      for i = 0 to Array.length array - 1 do      for i = 0 to Array.length array - 1 do
615        let ls, s = array.(i) in        let ls, s = array.(i) in
616        lprintf "server %d last_conn %d\n" (server_num s) ls;        lprintf_nl () "server %d last_conn %d" (server_num s) ls;
617                
618      done;      done;
619    
# Line 620  position to the min_left_servers positio Line 624  position to the min_left_servers positio
624          if ls < min_last_conn && s.server_sock = NoConnection          if ls < min_last_conn && s.server_sock = NoConnection
625            && not s.server_preferred then begin            && not s.server_preferred then begin
626          if !verbose then begin          if !verbose then begin
627              lprintf "Server too old: %s:%d\n"              lprintf_nl () "Server too old: %s:%d"
628                (Ip.to_string s.server_ip) s.server_port;                (Ip.to_string s.server_ip) s.server_port;
629                            
630            end;            end;
# Line 629  position to the min_left_servers positio Line 633  position to the min_left_servers positio
633    done;    done;
634    end;    end;
635    let t3 = Unix.gettimeofday () in    let t3 = Unix.gettimeofday () in
636    if !verbose then lprintf "Delay to detect old servers: %2.2f\n" (t3 -. t2);    if !verbose then lprintf_nl () "Delay to detect old servers: %2.2f" (t3 -. t2);
637    
638    List.iter (fun s ->    List.iter (fun s ->
639      remove_server s.server_ip s.server_port      remove_server s.server_ip s.server_port
640    ) !to_remove;    ) !to_remove;
641    
642    let t4 = Unix.gettimeofday () in    let t4 = Unix.gettimeofday () in
643    if !verbose then lprintf "Delay to finally remove servers: %2.2f\n" (t4 -. t3);      if !verbose then lprintf_nl () "Delay to finally remove servers: %2.2f" (t4 -. t3);
644    if (List.length !to_remove) > 0 || !verbose then    if (List.length !to_remove) > 0 || !verbose then
645      lprintf "Removed %d old edonkey servers.\n" (List.length !to_remove)      lprintf_nl () "Removed %d old edonkey servers." (List.length !to_remove)
646    
647        
648  (* Keep connecting to servers in the background. Don't stay connected to  (* Keep connecting to servers in the background. Don't stay connected to
# Line 679  let walker_timer () = Line 683  let walker_timer () =
683                    if connection_can_try s.server_connection_control then                    if connection_can_try s.server_connection_control then
684                      begin                      begin
685                        if !verbose then                        if !verbose then
686                          lprintf "WALKER: try connect %s\n"                          lprintf_nl () "WALKER: try connect %s"
687                            (Ip.to_string s.server_ip);                            (Ip.to_string s.server_ip);
688                        connect_server s                        connect_server s
689                      end                      end
# Line 687  let walker_timer () = Line 691  let walker_timer () =
691                      begin                      begin
692                        delayed_list := s :: !delayed_list;                        delayed_list := s :: !delayed_list;
693                        if !verbose then                        if !verbose then
694                          lprintf "WALKER: connect %s delayed\n"                          lprintf_nl () "WALKER: connect %s delayed"
695                            (Ip.to_string s.server_ip);                            (Ip.to_string s.server_ip);
696                      end                      end
697                | _ -> ()                | _ -> ()
# Line 738  let update_master_servers _ = Line 742  let update_master_servers _ =
742          match s.server_sock with          match s.server_sock with
743          | Connection _ ->          | Connection _ ->
744              if !verbose then begin              if !verbose then begin
745                  lprintf "MASTER: OLD MASTER %s\n" (Ip.to_string s.server_ip);                  lprintf_nl () "MASTER: OLD MASTER %s" (Ip.to_string s.server_ip);
746                end;                end;
747              masters := s :: !masters              masters := s :: !masters
748          | _ -> s.server_master <- false          | _ -> s.server_master <- false
749    ) server_list;    ) server_list;
750    let nmasters = ref (List.length !masters) in    let nmasters = ref (List.length !masters) in
751        
752    if !verbose then begin    if !verbose then
753        lprintf "MASTER: nmaster %d\n\n" !nmasters;      lprintf_nl () "MASTER: nmaster %d" !nmasters;
     end;  
754        
755    let make_master s =    let make_master s =
756      (* normal servers don't have our SHARE, so send list if it becomes a master *)      (* normal servers don't have our SHARE, so send list if it becomes a master *)
757      do_if_connected s.server_sock (fun sock ->      do_if_connected s.server_sock (fun sock ->
758          if !verbose then begin          if !verbose then
759              lprintf "   MASTER: %s\n" (Ip.to_string s.server_ip);            lprintf_nl () "   MASTER: %s" (Ip.to_string s.server_ip);
           end;  
760          s.server_master <- true;          s.server_master <- true;
761          incr nmasters;          incr nmasters;
762                
# Line 776  let update_master_servers _ = Line 778  let update_master_servers _ =
778      if !nconnected_servers > max_allowed_connected_servers then      if !nconnected_servers > max_allowed_connected_servers then
779        begin        begin
780          if !verbose then          if !verbose then
781              lprintf "MASTER: DISCONNECT %s\n" (Ip.to_string s.server_ip);              lprintf_nl () "MASTER: DISCONNECT %s" (Ip.to_string s.server_ip);
782          nconnected_servers := !nconnected_servers - 3;          nconnected_servers := !nconnected_servers - 3;
783          do_if_connected  s.server_sock (fun sock ->          do_if_connected  s.server_sock (fun sock ->
784              (* We will disconnect from this server.              (* We will disconnect from this server.
# Line 795  let update_master_servers _ = Line 797  let update_master_servers _ =
797              - connection_last_conn s.server_connection_control              - connection_last_conn s.server_connection_control
798            in            in
799            if !verbose then            if !verbose then
800                lprintf "MASTER: Checking ip:%s ct:%d\n" (Ip.to_string s.server_ip) connection_time;                lprintf_nl () "MASTER: Checking ip:%s ct:%d" (Ip.to_string s.server_ip) connection_time;
801            if not s.server_master            if not s.server_master
802              && (s.server_preferred              && (s.server_preferred
803                   || connection_time > !!become_master_delay                   || connection_time > !!become_master_delay
# Line 806  let update_master_servers _ = Line 808  let update_master_servers _ =
808                  if (!nmasters < max_allowed_connected_servers) then                  if (!nmasters < max_allowed_connected_servers) then
809                    begin                    begin
810                      if !verbose then                      if !verbose then
811                          lprintf "   MASTER: RAISING %s (%Ld)\n"                          lprintf_nl () "   MASTER: RAISING %s (%Ld)"
812                                    (Ip.to_string s.server_ip) s.server_nusers;                                    (Ip.to_string s.server_ip) s.server_nusers;
813                      make_master s                      make_master s
814                    end                    end
# Line 825  let update_master_servers _ = Line 827  let update_master_servers _ =
827                            then                            then
828                              begin                              begin
829                                if !verbose then                                if !verbose then
830                                  lprintf                                  lprintf_nl ()
831                                    "   MASTER: RAISING %s (%Ld) instead of %s (%Ld)\n"                                    "   MASTER: RAISING %s (%Ld) instead of %s (%Ld)"
832                                    (Ip.to_string s.server_ip) s.server_nusers                                    (Ip.to_string s.server_ip) s.server_nusers
833                                    (Ip.to_string ss.server_ip) ss.server_nusers;                                    (Ip.to_string ss.server_ip) ss.server_nusers;
834                                ss.server_master <- false;                                ss.server_master <- false;
# Line 840  let update_master_servers _ = Line 842  let update_master_servers _ =
842          )          )
843      ) server_list;      ) server_list;
844    if !verbose then    if !verbose then
845        lprintf "MASTER: clean %d connected %d masters\n"        lprintf_nl () "MASTER: clean %d connected %d masters"
846          !nconnected_servers !nmasters          !nconnected_servers !nmasters
847    
848    

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.35

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26