/[mldonkey]/mldonkey/src/networks/bittorrent/bTTracker.ml
ViewVC logotype

Diff of /mldonkey/src/networks/bittorrent/bTTracker.ml

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

revision 1.14 by spiralvoice, Sun Jul 10 23:19:16 2005 UTC revision 1.15 by spiralvoice, Fri Jul 22 14:32:12 2005 UTC
# Line 57  torrents/: for BitTorrent Line 57  torrents/: for BitTorrent
57    
58    *)    *)
59    
60    (* prints a new logline with date, module and starts newline *)
61    let lprintf_nl () =
62      lprintf "%s[bTTrack] "
63        (log_time ()); lprintf_nl2
64          
65  open Http_server  open Http_server
66    
67  type tracker_peer = {  type tracker_peer = {
# Line 95  let int64_of_string v = Line 100  let int64_of_string v =
100    try    try
101      Int64.of_string v      Int64.of_string v
102    with e ->    with e ->
103        lprintf "Exception %s in int64_of_string [%s]\n"        lprintf_nl () "Exception %s in int64_of_string [%s]"
104          (Printexc2.to_string e) v;          (Printexc2.to_string e) v;
105        raise e        raise e
106    
# Line 103  let int_of_string v = Line 108  let int_of_string v =
108    try    try
109      int_of_string v      int_of_string v
110    with e ->    with e ->
111        lprintf "Exception %s in int_of_string [%s]\n"        lprintf_nl () "Exception %s in int_of_string [%s]"
112          (Printexc2.to_string e) v;          (Printexc2.to_string e) v;
113        raise e        raise e
114    
# Line 116  let void_message = Bencode.encode ( Line 121  let void_message = Bencode.encode (
121    
122  let reply_has_tracker r info_hash peer_id peer_port peer_event =  let reply_has_tracker r info_hash peer_id peer_port peer_event =
123    
124    lprintf_nl "[BT]: tracker contacted for %s" (Sha1.to_string info_hash);    lprintf_nl () "tracker contacted for %s" (Sha1.to_string info_hash);
125    let tracker = try    let tracker = try
126        Hashtbl.find tracked_files info_hash        Hashtbl.find tracked_files info_hash
127      with Not_found ->      with Not_found ->
128          lprintf_nl "[BT]: Need new tracker";          lprintf_nl () "Need new tracker";
129          if !ntracked_files < !!max_tracked_files then          if !ntracked_files < !!max_tracked_files then
130            let tracker = {            let tracker = {
131                tracker_id = info_hash;                tracker_id = info_hash;
# Line 133  let reply_has_tracker r info_hash peer_i Line 138  let reply_has_tracker r info_hash peer_i
138            Hashtbl.add tracked_files info_hash tracker;            Hashtbl.add tracked_files info_hash tracker;
139            tracker            tracker
140          else          else
141            failwith "BT]: Too many tracked files"            failwith "[BT] Too many tracked files"
142    in    in
143    
144    let peer =    let peer =
# Line 153  let reply_has_tracker r info_hash peer_i Line 158  let reply_has_tracker r info_hash peer_i
158              peer_port = peer_port;              peer_port = peer_port;
159              peer_active = last_time ();              peer_active = last_time ();
160            } in            } in
161          lprintf_nl "BT]: adding new peer";          lprintf_nl () "adding new peer";
162          Hashtbl.add tracker.tracker_table peer_id peer;          Hashtbl.add tracker.tracker_table peer_id peer;
163          Fifo.put tracker.tracker_peers peer;          Fifo.put tracker.tracker_peers peer;
164          peer          peer
# Line 173  let reply_has_tracker r info_hash peer_i Line 178  let reply_has_tracker r info_hash peer_i
178          if tracker.tracker_message_time < last_time () then          if tracker.tracker_message_time < last_time () then
179    
180            let list = ref [] in            let list = ref [] in
181            lprintf_nl "BT]: Tracker collecting peers:";            lprintf_nl () "Tracker collecting peers:";
182            (try            (try
183                for i = 1 to !!max_tracker_reply do                for i = 1 to !!max_tracker_reply do
184                  let peer = Fifo.take tracker.tracker_peers in                  let peer = Fifo.take tracker.tracker_peers in
185                  lprintf_nl "   %s:%d" (Ip.to_string peer.peer_ip)peer.peer_port;                  lprintf_nl () "   %s:%d" (Ip.to_string peer.peer_ip)peer.peer_port;
186                  list := peer :: !list                  list := peer :: !list
187                done                done
188              with _ -> ());              with _ -> ());
189    
190            lprintf "Tracker sending %d peers\n" (List.length !list);            lprintf_nl () "Tracker sending %d peers" (List.length !list);
191            List.iter (fun p ->            List.iter (fun p ->
192                lprintf "Tracker send: %s:%d\n"                lprintf_nl () "Tracker send: %s:%d"
193                  (Ip.to_string p.peer_ip) p.peer_port;                  (Ip.to_string p.peer_ip) p.peer_port;
194                Fifo.put tracker.tracker_peers p                Fifo.put tracker.tracker_peers p
195            ) !list;            ) !list;
# Line 246  let http_handler t r = Line 251  let http_handler t r =
251              | "downloaded" -> downloaded := int64_of_string arg              | "downloaded" -> downloaded := int64_of_string arg
252              | "left" -> left := int64_of_string arg              | "left" -> left := int64_of_string arg
253              | "event" -> event := arg              | "event" -> event := arg
254              | _ -> lprintf_nl "BT]: BTTracker: Unexpected [%s=%s]" name arg              | _ -> lprintf_nl () "Unexpected [%s=%s]" name arg
255          ) args;          ) args;
256    
257          lprintf_nl "[BT]: Connection received by tracker:";          lprintf_nl () "Connection received by tracker:";
258          lprintf_nl "    info_hash: %s" (Sha1.to_string !info_hash);          lprintf_nl () "    info_hash: %s" (Sha1.to_string !info_hash);
259          lprintf_nl "    event: %s" !event;          lprintf_nl () "    event: %s" !event;
260          lprintf_nl "    downloaded: %d" (Int64.to_int !downloaded);          lprintf_nl () "    downloaded: %d" (Int64.to_int !downloaded);
261          lprintf_nl "    uploaded: %d" (Int64.to_int !uploaded);          lprintf_nl () "    uploaded: %d" (Int64.to_int !uploaded);
262    
263          reply_has_tracker r !info_hash !peer_id !port !event          reply_has_tracker r !info_hash !peer_id !port !event
264    
265      | filename ->      | filename ->
266    
267          lprintf_nl "BT]: Request for .torrent [%s]" filename;          lprintf_nl () "Request for .torrent [%s]" filename;
268          if (Filename2.last_extension filename <> ".torrent") then          if (Filename2.last_extension filename <> ".torrent") then
269            failwith "Incorrect filename 1";            failwith "Incorrect filename 1";
270          for i = 1 to String.length filename - 1 do          for i = 1 to String.length filename - 1 do
# Line 290  in sub-directories in former versions. * Line 295  in sub-directories in former versions. *
295          r.reply_content <- File.to_string filename          r.reply_content <- File.to_string filename
296    
297    with e ->    with e ->
298        lprintf_nl "[BT]: Tracker: for request [%s] exception %s"        lprintf_nl () "for request [%s] exception %s"
299          (Url.to_string r.get_url) (Printexc2.to_string e);          (Url.to_string r.get_url) (Printexc2.to_string e);
300    
301        r.reply_head <- "404 Not Found"        r.reply_head <- "404 Not Found"
# Line 353  let clean_tracker_timer () = Line 358  let clean_tracker_timer () =
358    let time_threshold = last_time () - 3600 in    let time_threshold = last_time () - 3600 in
359    let trackers = ref [] in    let trackers = ref [] in
360    
361    if !verbose_msg_servers then lprintf_nl "[BT]: clean_tracker_timer";    if !verbose_msg_servers then lprintf_nl () "clean_tracker_timer";
362    Hashtbl.iter (fun _ tracker ->    Hashtbl.iter (fun _ tracker ->
363        let list = ref [] in        let list = ref [] in
364        let old_peers = ref [] in        let old_peers = ref [] in

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15

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