[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Mldonkey-commits] Changes to mldonkey/src/networks/fasttrack/fasttrackH
From: |
mldonkey-commits |
Subject: |
[Mldonkey-commits] Changes to mldonkey/src/networks/fasttrack/fasttrackHandler.ml |
Date: |
Sun, 07 Aug 2005 08:57:31 -0400 |
Index: mldonkey/src/networks/fasttrack/fasttrackHandler.ml
diff -u mldonkey/src/networks/fasttrack/fasttrackHandler.ml:1.15
mldonkey/src/networks/fasttrack/fasttrackHandler.ml:1.16
--- mldonkey/src/networks/fasttrack/fasttrackHandler.ml:1.15 Mon Nov 1
11:23:01 2004
+++ mldonkey/src/networks/fasttrack/fasttrackHandler.ml Sun Aug 7 12:57:22 2005
@@ -26,7 +26,7 @@
open CommonHosts
open CommonResult
-open CommonDownloads
+open CommonDownloads
open CommonUploads
open CommonOptions
open CommonSearch
@@ -45,8 +45,7 @@
open FasttrackComplexOptions
open FasttrackProto
-
-let declare_shared s sh info hash =
+let declare_shared s sh info hash =
let num = info.shared_id in
if not (Intset.mem num s.server_shared) then begin
s.server_shared <- Intset.add num s.server_shared;
@@ -54,7 +53,7 @@
let sh = {
M.shared_type = 0;
M.shared_hash = hash;
- M.shared_checksum =
+ M.shared_checksum =
Int64.of_int (fst_hash_checksum (Md5Ext.direct_to_string hash));
M.shared_size = info.shared_size;
M.shared_tags = [
@@ -63,9 +62,8 @@
} in
server_send s M.DirectPacket (M.ShareFileReq sh)
end
-
-
-let update_shared_files () =
+
+let update_shared_files () =
CommonUploads.iter (fun sh ->
let info = IndexedSharedFiles.get_result sh.shared_info in
let uids = info.shared_uids in
@@ -77,9 +75,9 @@
) !connected_servers
| _ -> ()
) uids
- )
-
-let declare_shared_files s =
+ )
+
+let declare_shared_files s =
CommonUploads.iter (fun sh ->
let info = IndexedSharedFiles.get_result sh.shared_info in
let uids = info.shared_uids in
@@ -89,28 +87,27 @@
declare_shared s sh info hash
| _ -> ()
) uids
- )
-
-
-let udp_packet_handler ip port msg =
+ )
+
+let udp_packet_handler ip port msg =
let h = H.new_host ip port Ultrapeer in
H.host_queue_add active_udp_queue h (last_time ());
H.connected h;
(* if !verbose_udp then
- lprintf "Received UDP packet from %s:%d: \n%s\n"
+ lprintf "Received UDP packet from %s:%d: \n%s\n"
(Ip.to_string ip) port (Print.print msg);*)
let s = new_server ip port in
s.server_connected <- int64_time ()
let tcp_node_handler_hook = ref None
-
+
let server_msg_handler sock s addr t =
(* lprintf "Message received: %d len %d\n" msg_type (String.length m); *)
let module M = TcpMessages in
if !verbose_msg_servers then begin
- lprintf "\nRECEIVED from supernode %s:%d: %s\n%s\n"
+ lprintf "\nRECEIVED from supernode %s:%d: %s\n%s\n"
(Ip.string_of_addr s.server_host.host_addr)
- s.server_host.host_port
+ s.server_host.host_port
(M.string_of_path addr) (M.to_string t);
end;
(match !tcp_node_handler_hook with
@@ -119,43 +116,43 @@
(* Here, we only take care of Supernode -> Node messages *)
if addr = M.DirectPacket then
match t with
-
- | M.NodeListReq list ->
+
+ | M.NodeListReq list ->
set_rtimeout sock half_day;
set_server_state s (Connected (-1));
- s.server_connected <- int64_time ();
+ s.server_connected <- int64_time ();
if not (List.memq s !connected_servers) then
connected_servers := s :: !connected_servers;
-
+
List.iter (fun (ip,port,seen,slots) ->
try
let (h : host) = H.new_host (Ip.addr_of_ip ip) port Ultrapeer in
()
with Not_found -> ()
) list;
-
+
if s.server_host.host_kind = IndexServer then
close sock Closed_by_user
else begin
List.iter (fun file ->
- List.iter (fun ss ->
+ List.iter (fun ss ->
Fifo.put s.server_searches ss) file.file_searches
) !current_files;
end
-
- | M.DeclareNeighbours list ->
+
+ | M.DeclareNeighbours list ->
(* Hum... receiving this messages means that we are connected to a supernode
AS A SUPERNODE, which is not good at this point, since we want to
be connected only AS A NODE. We should transfer this connection to
the FasttrackSupernode module, and get rid of it. *)
-
+
set_rtimeout sock half_day;
set_server_state s (Connected (-1));
- s.server_connected <- int64_time ();
+ s.server_connected <- int64_time ();
if not (List.memq s !connected_servers) then
connected_servers := s :: !connected_servers;
-
+
List.iter (fun n ->
try
let ip = n.M.neighbour_ip in
@@ -164,69 +161,68 @@
()
with Not_found -> ()
) list;
-
+
if s.server_host.host_kind = IndexServer then
close sock Closed_by_user
else begin
List.iter (fun file ->
- List.iter (fun ss ->
+ List.iter (fun ss ->
Fifo.put s.server_searches ss) file.file_searches
) !current_files;
end
-
+
| M.QueryReplyReq ( (s_ip, s_port), id, results) ->
-
+
let s = Hashtbl.find searches_by_uid id in
-
+
List.iter (fun (user, meta) ->
let user = new_user (Known_location (
user.M.user_ip, user.M.user_port)) in
(*
- let url = Printf.sprintf
+ let url = Printf.sprintf
"FastTrack://%s:%d/.hash=%s" (Ip.to_string user_ip)
user_port (Md5Ext.to_string_case false result_hash) in *)
-(* let url = Printf.sprintf
+(* let url = Printf.sprintf
"/.hash=%s" (Md5Ext.to_string_case false result_hash) in *)
-
+
let result_name = M.get_filename meta.M.meta_tags in
-
+
begin
match s.search_search with
UserSearch (sss, _,_) ->
-
- let rs = new_result
- result_name
- meta.M.meta_size
+
+ let rs = new_result
+ result_name
+ meta.M.meta_size
meta.M.meta_tags [meta.M.meta_hash] [] in
let r = IndexedResults.get_result rs in
add_source rs user;
CommonInteractive.search_add_result false sss rs
-
+
| FileUidSearch (file, file_hash) -> ()
(*
let c = new_client user.user_kind in
add_download file c ()(* (FileByUrl url) *);
-
- if not (List.mem_assoc result_name file.file_filenames) then
+
+ if not (List.mem_assoc result_name file.file_filenames) then
file.file_filenames <- file.file_filenames @ [
result_name, GuiTypes.noips()] ;
-*)
+*)
end;
-
+
try
let file = Hashtbl.find files_by_uid meta.M.meta_hash in
let c = new_client user.user_kind in
add_download file c ()(* (FileByUrl url) *);
-
- if not (List.mem_assoc result_name file.file_filenames) then
+
+ if not (List.mem_assoc result_name file.file_filenames) then
file.file_filenames <- file.file_filenames @ [
result_name, GuiTypes.noips()] ;
-
+
with _ -> ()
) results
-
+
| M.NetworkStatsReq (stats, netname, nusers) ->
-
begin
match stats with
[] -> ()
@@ -235,13 +231,14 @@
s.server_nfiles <- stats.TcpMessages.nfiles;
s.server_nkb <- stats.TcpMessages.nkb;
end
+
| M.NetworkNameReq netname ->
server_send s M.DirectPacket (M.NetworkNameReq network_name)
-
+
| M.PingReq ->
server_send s M.DirectPacket M.PongReq
-
- | M.Unknown_03 ->
+
+ | M.Unknown_03 ->
declare_shared_files s;
| M.NetworkGlobalStats _
@@ -263,14 +260,14 @@
| M.ProtocolVersionReq _
| M.PongReq
| M.QueryReplyEndReq _ -> ()
-
+
let udp_node_handler_hook = ref None
-
+
let udp_client_handler ip port p =
let module M = UdpMessages in
let t = M.parse p in
- if !verbose_udp then
- lprintf "UDP PACKET FROM %s:%d:\n %s\n"
+ if !verbose_udp then
+ lprintf "UDP PACKET FROM %s:%d:\n %s\n"
(Ip.to_string ip) port
(M.to_string t);
match !udp_node_handler_hook with
@@ -279,15 +276,14 @@
match t with
| M.PingReq (min_enc_type, _, netname) -> ()
(* udp_send ip port (M.NodePongReq (min_enc_type, netname)) *)
- | M.SupernodePongReq (min_enc_type, _, netname) ->
+ | M.SupernodePongReq (min_enc_type, _, netname) ->
UdpSocket.declare_pong ip
- | M.NodePongReq (min_enc_type, _) ->
+ | M.NodePongReq (min_enc_type, _) ->
UdpSocket.declare_pong ip
| M.UnknownReq _ -> ()
-
let declare_word _ = ()
-
+
(* media type
MEDIA_TYPE_UNKNOWN = 0x00,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Mldonkey-commits] Changes to mldonkey/src/networks/fasttrack/fasttrackHandler.ml,
mldonkey-commits <=