[Top][All Lists]
[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: |
Wed, 17 May 2006 08:52:44 +0000 |
CVSROOT: /sources/mldonkey
Module name: mldonkey
Branch:
Changes by: spiralvoice <address@hidden> 06/05/17 08:52:44
Modified files:
distrib : ChangeLog
src/daemon/common: commonResult.ml commonTypes.ml guiDecoding.ml
guiEncoding.ml
src/daemon/driver: driverControlers.ml driverInteractive.ml
driverInterface.ml
src/networks/donkey: donkeyComplexOptions.ml
donkeyInteractive.ml
src/networks/fasttrack: fasttrackGlobals.ml fasttrackProtocol.ml
src/networks/gnutella: gnutellaFunctions.ml gnutellaGlobals.ml
gnutellaHandler.ml gnutellaInteractive.ml
gnutellaMain.ml gnutellaProto.ml
gnutellaProtocol.ml gnutellaServers.ml
gnutellaTypes.ml
src/networks/gnutella2: g2Handler.ml g2Network.ml g2Proto.ml
g2Redirector.ml g2Supernode.ml
src/utils/cdk : printf2.ml
src/utils/net : anyEndian.ml basicSocket.ml ip.ml
Log message:
patch #5101
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/distrib/ChangeLog.diff?tr1=1.830&tr2=1.831&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/common/commonResult.ml.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/common/commonTypes.ml.diff?tr1=1.50&tr2=1.51&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/common/guiDecoding.ml.diff?tr1=1.54&tr2=1.55&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/common/guiEncoding.ml.diff?tr1=1.52&tr2=1.53&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/driver/driverControlers.ml.diff?tr1=1.66&tr2=1.67&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/driver/driverInteractive.ml.diff?tr1=1.73&tr2=1.74&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/driver/driverInterface.ml.diff?tr1=1.42&tr2=1.43&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/donkey/donkeyComplexOptions.ml.diff?tr1=1.46&tr2=1.47&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/donkey/donkeyInteractive.ml.diff?tr1=1.104&tr2=1.105&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/fasttrack/fasttrackGlobals.ml.diff?tr1=1.36&tr2=1.37&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/fasttrack/fasttrackProtocol.ml.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella/gnutellaFunctions.ml.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella/gnutellaGlobals.ml.diff?tr1=1.37&tr2=1.38&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella/gnutellaHandler.ml.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella/gnutellaInteractive.ml.diff?tr1=1.52&tr2=1.53&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella/gnutellaMain.ml.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella/gnutellaProto.ml.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella/gnutellaProtocol.ml.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella/gnutellaServers.ml.diff?tr1=1.26&tr2=1.27&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella/gnutellaTypes.ml.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella2/g2Handler.ml.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella2/g2Network.ml.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella2/g2Proto.ml.diff?tr1=1.15&tr2=1.16&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella2/g2Redirector.ml.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/gnutella2/g2Supernode.ml.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/utils/cdk/printf2.ml.diff?tr1=1.15&tr2=1.16&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/utils/net/anyEndian.ml.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/utils/net/basicSocket.ml.diff?tr1=1.29&tr2=1.30&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/utils/net/ip.ml.diff?tr1=1.21&tr2=1.22&r1=text&r2=text
Patches:
Index: mldonkey/distrib/ChangeLog
diff -u mldonkey/distrib/ChangeLog:1.830 mldonkey/distrib/ChangeLog:1.831
--- mldonkey/distrib/ChangeLog:1.830 Tue May 16 22:02:54 2006
+++ mldonkey/distrib/ChangeLog Wed May 17 08:52:43 2006
@@ -15,6 +15,10 @@
=========
2006/05/17
+5101: G2: Gnutella2 fixes/log updates (zet)
+- Gnutella2 (G2) is working again
+- Re-enables search result networks
+- Log logged-in users
5098: EDK: Update option description for initial_score
2006/05/15
Index: mldonkey/src/daemon/common/commonResult.ml
diff -u mldonkey/src/daemon/common/commonResult.ml:1.8
mldonkey/src/daemon/common/commonResult.ml:1.9
--- mldonkey/src/daemon/common/commonResult.ml:1.8 Fri May 12 21:02:38 2006
+++ mldonkey/src/daemon/common/commonResult.ml Wed May 17 08:52:43 2006
@@ -139,12 +139,15 @@
result_size = zero;
result_modified = true;
result_time = BasicSocket.last_time ();
+ result_source_network = 0;
}
let result_download rs names force =
let r = IndexedResults.get_result rs in
let files = ref [] in
CommonNetwork.networks_iter (fun n ->
+ (* Temporarily download results only from the network that returned the
result *)
+ if (n.network_num = r.result_source_network) then
files := (n.op_network_download r) :: !files
);
!files
Index: mldonkey/src/daemon/common/commonTypes.ml
diff -u mldonkey/src/daemon/common/commonTypes.ml:1.50
mldonkey/src/daemon/common/commonTypes.ml:1.51
--- mldonkey/src/daemon/common/commonTypes.ml:1.50 Wed Mar 29 14:22:08 2006
+++ mldonkey/src/daemon/common/commonTypes.ml Wed May 17 08:52:43 2006
@@ -401,6 +401,7 @@
mutable result_time : int;
mutable result_modified : bool;
+ mutable result_source_network : int;
}
type result = {
Index: mldonkey/src/daemon/common/guiDecoding.ml
diff -u mldonkey/src/daemon/common/guiDecoding.ml:1.54
mldonkey/src/daemon/common/guiDecoding.ml:1.55
--- mldonkey/src/daemon/common/guiDecoding.ml:1.54 Fri May 12 21:08:30 2006
+++ mldonkey/src/daemon/common/guiDecoding.ml Wed May 17 08:52:43 2006
@@ -453,6 +453,7 @@
result_modified = false;
result_force = false;
result_time = time;
+ result_source_network = 0;
}, pos+1
let get_message s pos =
Index: mldonkey/src/daemon/common/guiEncoding.ml
diff -u mldonkey/src/daemon/common/guiEncoding.ml:1.52
mldonkey/src/daemon/common/guiEncoding.ml:1.53
--- mldonkey/src/daemon/common/guiEncoding.ml:1.52 Fri May 12 21:08:30 2006
+++ mldonkey/src/daemon/common/guiEncoding.ml Wed May 17 08:52:43 2006
@@ -255,7 +255,7 @@
let buf_result proto buf r =
buf_int buf r.result_num;
- buf_int buf 0;
+ buf_int buf r.result_source_network;
buf_list buf buf_string r.result_names;
if proto < 27 then
buf_md4 buf Md4.null
Index: mldonkey/src/daemon/driver/driverControlers.ml
diff -u mldonkey/src/daemon/driver/driverControlers.ml:1.66
mldonkey/src/daemon/driver/driverControlers.ml:1.67
--- mldonkey/src/daemon/driver/driverControlers.ml:1.66 Sat May 13 12:44:16 2006
+++ mldonkey/src/daemon/driver/driverControlers.ml Wed May 17 08:52:43 2006
@@ -317,6 +317,7 @@
if valid_password user pass then begin
auth := true;
o.conn_user <- find_ui_user user;
+ lprintf_nl () "Authenticated user: %s" user;
let module M = CommonMessages in
Buffer.add_string buf M.full_access
end else
@@ -572,6 +573,7 @@
match event with
TcpServerSocket.CONNECTION (s, Unix.ADDR_INET (from_ip, from_port)) ->
let from_ip = Ip.of_inet_addr from_ip in
+ lprintf_nl () "Telnet connection from %s" (Ip.to_string from_ip);
let token = create_token unlimited_connection_manager in
let sock = TcpBufferedSocket.create_simple token
"telnet connection"
Index: mldonkey/src/daemon/driver/driverInteractive.ml
diff -u mldonkey/src/daemon/driver/driverInteractive.ml:1.73
mldonkey/src/daemon/driver/driverInteractive.ml:1.74
--- mldonkey/src/daemon/driver/driverInteractive.ml:1.73 Fri May 12
21:08:30 2006
+++ mldonkey/src/daemon/driver/driverInteractive.ml Wed May 17 08:52:43 2006
@@ -1129,18 +1129,16 @@
end;
user.ui_last_results <- (!counter, rs) :: user.ui_last_results;
- if use_html_mods o then Printf.bprintf buf "\\<td
class=\\\"sr\\\"\\>%s\\</td\\>"
- (
-(* TODO RESULT: use the uids to display from which networks it is downloadable
- let n = network_find_by_num r.result_network in
- n.network_name *) "--")
- else Printf.bprintf buf "[%5d] %s "
- !counter
-
-(* TODO RESULT:
- (let n = network_find_by_num r.result_network in
- n.network_name) *)
- "--";
+ let network_name =
+ try
+ let n = network_find_by_num r.result_source_network in
+ n.network_name
+ with _ -> "Unknown"
+ in
+
+ if use_html_mods o
+ then Printf.bprintf buf "\\<td
class=\\\"sr\\\"\\>%s\\</td\\>" network_name
+ else Printf.bprintf buf "[%5d] %s " !counter network_name;
if o.conn_output = HTML then begin
if !!html_mods then
Index: mldonkey/src/daemon/driver/driverInterface.ml
diff -u mldonkey/src/daemon/driver/driverInterface.ml:1.42
mldonkey/src/daemon/driver/driverInterface.ml:1.43
--- mldonkey/src/daemon/driver/driverInterface.ml:1.42 Fri May 5 22:08:00 2006
+++ mldonkey/src/daemon/driver/driverInterface.ml Wed May 17 08:52:43 2006
@@ -565,11 +565,12 @@
| P.Password (user, pass) ->
begin
+ lprintf_nl () "GUI connection from user %s" user;
match gui.gui_sock with
Some sock when not (valid_password user pass) ->
gui_send gui BadPassword;
set_lifetime sock 5.;
- lprintf "BAD PASSWORD\n";
+ lprintf_nl () "GUI connection BAD PASSWORD for user %s" user;
TcpBufferedSocket.close sock (Closed_for_error "Bad Password")
| _ ->
Index: mldonkey/src/networks/donkey/donkeyComplexOptions.ml
diff -u mldonkey/src/networks/donkey/donkeyComplexOptions.ml:1.46
mldonkey/src/networks/donkey/donkeyComplexOptions.ml:1.47
--- mldonkey/src/networks/donkey/donkeyComplexOptions.ml:1.46 Sun Apr 9
00:27:03 2006
+++ mldonkey/src/networks/donkey/donkeyComplexOptions.ml Wed May 17
08:52:43 2006
@@ -571,6 +571,7 @@
let rec r = { dummy_result with
result_uids = [Uid.create (Ed2k md4)];
result_done = (List.mem md4 !!old_files) || (Hashtbl.mem files_by_md4
md4);
+ result_source_network = network.network_num;
} in
List.iter (fun tag ->
match tag with
Index: mldonkey/src/networks/donkey/donkeyInteractive.ml
diff -u mldonkey/src/networks/donkey/donkeyInteractive.ml:1.104
mldonkey/src/networks/donkey/donkeyInteractive.ml:1.105
--- mldonkey/src/networks/donkey/donkeyInteractive.ml:1.104 Sun May 14
19:09:21 2006
+++ mldonkey/src/networks/donkey/donkeyInteractive.ml Wed May 17 08:52:43 2006
@@ -333,19 +333,13 @@
begin
if List.mem md4 !!old_files then begin
(* copy file info into result for later usage in force_download *)
- let r = {
- result_num = 0;
+ let r = { dummy_result with
result_uids = [Uid.create (Ed2k md4)];
result_names = filenames;
result_size = size;
- result_tags = [];
- result_type = "";
- result_format = "";
- result_comment = "";
- result_done = false;
result_force = true; (* marker for force_download *)
- result_time = 0;
result_modified = false;
+ result_source_network = network.network_num;
} in
forceable_download := [r];
raise already_done
Index: mldonkey/src/networks/fasttrack/fasttrackGlobals.ml
diff -u mldonkey/src/networks/fasttrack/fasttrackGlobals.ml:1.36
mldonkey/src/networks/fasttrack/fasttrackGlobals.ml:1.37
--- mldonkey/src/networks/fasttrack/fasttrackGlobals.ml:1.36 Fri May 12
21:02:38 2006
+++ mldonkey/src/networks/fasttrack/fasttrackGlobals.ml Wed May 17 08:52:43 2006
@@ -109,6 +109,7 @@
CommonClient.set_client_state (as_client client) state
let set_client_disconnected client =
CommonClient.set_client_disconnected (as_client client)
+let client_must_update client = client_must_update (as_client client)
(*************************************************************************)
(* *)
@@ -201,8 +202,10 @@
server_sock = NoConnection;
server_ciphers = None;
server_agent = "<unknown>";
+ server_description = "";
server_nfiles = Int64.zero;
server_nusers = Int64.zero;
+ server_maxnusers = 0L;
server_nkb = 0;
server_need_qrt = true;
@@ -210,6 +213,7 @@
server_nfiles_last = zero;
server_nkb_last = 0;
server_vendor = "";
+ server_last_lni = 0;
server_connected = zero;
server_query_key = ();
@@ -253,6 +257,7 @@
result_size = file_size;
result_tags = tags;
result_uids = [Uid.create (Md5Ext hash)];
+ result_source_network = network.network_num;
}
in
let r = update_result_num r in
@@ -364,6 +369,7 @@
(* user_files = []; *)
user_speed = 0;
user_vendor = "";
+ user_software = "";
user_nick = "";
} and user_impl = {
dummy_user_impl with
Index: mldonkey/src/networks/fasttrack/fasttrackProtocol.ml
diff -u mldonkey/src/networks/fasttrack/fasttrackProtocol.ml:1.13
mldonkey/src/networks/fasttrack/fasttrackProtocol.ml:1.14
--- mldonkey/src/networks/fasttrack/fasttrackProtocol.ml:1.13 Fri May 12
21:02:38 2006
+++ mldonkey/src/networks/fasttrack/fasttrackProtocol.ml Wed May 17
08:52:44 2006
@@ -157,7 +157,8 @@
begin
try
let (server,_) = List.assoc "server" headers in
- c.client_user.user_vendor <- server;
+ c.client_user.user_software <- server;
+ client_must_update c;
with Not_found -> ()
end;
@@ -165,6 +166,7 @@
try
let (username,_) = List.assoc "x-kazaa-username" headers in
c.client_user.user_nick <- username;
+ client_must_update c;
with Not_found -> ()
end;
Index: mldonkey/src/networks/gnutella/gnutellaFunctions.ml
diff -u mldonkey/src/networks/gnutella/gnutellaFunctions.ml:1.4
mldonkey/src/networks/gnutella/gnutellaFunctions.ml:1.5
--- mldonkey/src/networks/gnutella/gnutellaFunctions.ml:1.4 Sun Dec 18
14:50:38 2005
+++ mldonkey/src/networks/gnutella/gnutellaFunctions.ml Wed May 17 08:52:44 2006
@@ -111,7 +111,7 @@
let rec iter_read sock nread =
let b = TcpBufferedSocket.buf sock in
if monitored sock || !verbose_msg_raw then
- lprintf "iter_read %d/%d\n%s\n" nread b.len
+ lprintf "iter_read %s :%d/%d\n%s\n" (Ip.to_string (peer_ip sock)) nread
b.len
(String.escaped (String.sub b.buf b.pos b.len));
if b.len > 0 then
match gconn.gconn_handler with
Index: mldonkey/src/networks/gnutella/gnutellaGlobals.ml
diff -u mldonkey/src/networks/gnutella/gnutellaGlobals.ml:1.37
mldonkey/src/networks/gnutella/gnutellaGlobals.ml:1.38
--- mldonkey/src/networks/gnutella/gnutellaGlobals.ml:1.37 Fri May 12
21:02:38 2006
+++ mldonkey/src/networks/gnutella/gnutellaGlobals.ml Wed May 17 08:52:44 2006
@@ -93,6 +93,7 @@
let file_state file = file_state (as_file file)
let file_num file = file_num (as_file file)
let file_must_update file = file_must_update (as_file file)
+let client_must_update client = client_must_update (as_client client)
let current_files = ref ([] : GnutellaTypes.file list)
@@ -179,6 +180,12 @@
let max_peers = max_known_peers
end)
+let find_server ip port =
+ try
+ let h = Hashtbl.find H.hosts_by_key (ip,port) in
+ h.host_server
+ with _ -> None
+
let new_server ip port =
let h = H.new_host ip port Ultrapeer in
match h.host_server with
@@ -190,11 +197,14 @@
server_host = h;
server_sock = NoConnection;
server_agent = "<unknown>";
+ server_description = "";
server_nfiles = Int64.zero;
server_nkb = 0;
server_nusers = Int64.zero;
+ server_maxnusers = 0L;
server_need_qrt = true;
server_ping_last = Md4.random ();
+ server_last_lni = 0;
server_nfiles_last = Int64.zero;
server_nkb_last = 0;
server_vendor = "";
@@ -268,6 +278,7 @@
result_size = file_size;
result_tags = tags;
result_uids = uids;
+ result_source_network = network.network_num;
}
in
let rs = update_result_num r in
@@ -328,7 +339,7 @@
}
in
if !verbose then
- lprintf "SET SIZE : %Ld\n" file_size;
+ lprintf_nl () "SET SIZE : %Ld\n" file_size;
let kernel = CommonSwarming.create_swarmer file_temp file_size
(Int64.of_int (256 * 1024)) in
let swarmer = CommonSwarming.create kernel (as_file file) megabyte in
@@ -393,6 +404,7 @@
user_speed = 0;
user_vendor = "";
(* user_gnutella2 = false; *)
+ user_software = "";
user_nick = "";
} and user_impl = {
dummy_user_impl with
@@ -530,6 +542,8 @@
(match sock with Connection sock -> Some sock | _ -> None)
let disconnect_from_server s r =
+ if !verbose then
+ lprintf_nl () "disconnect_from_server %s" (string_of_reason r);
match s.server_sock with
| Connection sock ->
let h = s.server_host in
@@ -538,9 +552,9 @@
let connection_time = Int64.to_int (
Int64.sub (int64_time ()) s.server_connected) in
if !verbose then
- lprintf "DISCONNECT FROM SERVER %s:%d after %d seconds\n"
+ lprintf_nl () "disconnect_from_connected_server %s:%d after %d
seconds (%s)\n"
(Ip.string_of_addr h.host_addr) h.host_port
- connection_time
+ connection_time (string_of_reason r)
;
| _ -> ()
);
Index: mldonkey/src/networks/gnutella/gnutellaHandler.ml
diff -u mldonkey/src/networks/gnutella/gnutellaHandler.ml:1.12
mldonkey/src/networks/gnutella/gnutellaHandler.ml:1.13
--- mldonkey/src/networks/gnutella/gnutellaHandler.ml:1.12 Fri May 12
21:02:38 2006
+++ mldonkey/src/networks/gnutella/gnutellaHandler.ml Wed May 17 08:52:44 2006
@@ -87,6 +87,8 @@
lprintf "RECEIVED server_to_client:\n";
print p;
end;
+
+try
match p.pkt_payload with
| PingReq t ->
if p.pkt_hops <= 3 then
@@ -124,7 +126,7 @@
s.server_nkb_last <- s.server_nkb_last + t.P.nkb;
s.server_nfiles <- (Int64.of_int t.P.nfiles);
s.server_nkb <- t.P.nkb;
- server_must_update (as_server s.server_server)
+ server_must_update (as_server s.server_server);
end
| QueryReq t ->
@@ -319,6 +321,10 @@
) t.Q.files;
| _ -> ()
+with e ->
+ if !verbose then
+ lprintf_nl () "server_to_client exception %s" (Printexc2.to_string e)
+
(*************************************************************************)
(* *)
(* init *)
Index: mldonkey/src/networks/gnutella/gnutellaInteractive.ml
diff -u mldonkey/src/networks/gnutella/gnutellaInteractive.ml:1.52
mldonkey/src/networks/gnutella/gnutellaInteractive.ml:1.53
--- mldonkey/src/networks/gnutella/gnutellaInteractive.ml:1.52 Fri May 12
21:02:38 2006
+++ mldonkey/src/networks/gnutella/gnutellaInteractive.ml Wed May 17
08:52:44 2006
@@ -94,11 +94,17 @@
let result_download r =
if !verbose then
- lprintf ".............. result_download ..............\n";
+ lprintf_nl () "result_download";
let rec iter uids =
match uids with
[] -> raise IgnoreNetwork
| uid :: tail ->
+ if !verbose then lprintf_nl () "UID: %s Accept(BP: %B ED2K: %B MD5:
%B)"
+ (Uid.to_string uid)
+ GnutellaNetwork.accept_bitprint
+ GnutellaNetwork.accept_ed2kuid
+ GnutellaNetwork.accept_md5ext;
+
match Uid.to_uid uid with
Sha1 _ | Bitprint _ when GnutellaNetwork.accept_bitprint ->
download_file r
@@ -109,45 +115,49 @@
| _ -> iter tail
in
if !verbose then
- lprintf "%d uids\n" (List.length r.result_uids);
+ lprintf_nl () "%d uids" (List.length r.result_uids);
iter r.result_uids
let declare_file _ = should_update_shared_files := true
let ask_for_uids sh =
+ if !verbose then lprintf_nl () "ask_for_uids Accept(BP: %B ED2K: %B MD5:
%B)"
+ GnutellaNetwork.accept_bitprint
+ GnutellaNetwork.accept_ed2kuid
+ GnutellaNetwork.accept_md5ext;
let info = IndexedSharedFiles.get_result sh.shared_info in
if GnutellaNetwork.accept_ed2kuid then begin
if !verbose then
- lprintf "Ask for ED2K uid\n";
+ lprintf_nl () "Ask for ED2K uid";
CommonUploads.ask_for_uid sh ED2K (fun sh uid ->
let uid = Uid.to_string uid in
declare_word uid;
declare_file ();
if !verbose then
- lprintf "Ed2k uid available (size %d)\n"
+ lprintf_nl () "Ed2k uid available (size %d)"
(Array.length info.CommonUploads.shared_md4s);
);
end;
if GnutellaNetwork.accept_md5ext then begin
if !verbose then
- lprintf "Ask for MD5EXT uid\n";
+ lprintf_nl () "Ask for MD5EXT uid";
CommonUploads.ask_for_uid sh MD5EXT (fun sh uid ->
let uid = Uid.to_string uid in
declare_word uid;
declare_file ();
if !verbose then
- lprintf "Md5ext uid available: %s\n" uid
+ lprintf_nl () "Md5ext uid available: %s" uid
);
end;
if GnutellaNetwork.accept_bitprint then begin
if !verbose then
- lprintf "Ask for BITPRINT uid\n";
+ lprintf_nl () "Ask for BITPRINT uid";
CommonUploads.ask_for_uid sh BITPRINT (fun sh uid ->
declare_word uid;
declare_file ();
if !verbose then
- lprintf "Bitprint tree available (size %d)\n"
+ lprintf_nl () "Bitprint tree available (size %d)"
(Array.length info.CommonUploads.shared_tiger);
()
);
@@ -156,13 +166,13 @@
declare_word uid;
declare_file ();
if !verbose then
- lprintf "Tiger tree available (size %d)\n"
+ lprintf_nl () "Tiger tree available (size %d)"
(Array.length info.CommonUploads.shared_tiger);
);
CommonUploads.ask_for_uid sh SHA1 (fun sh uid ->
let uid = Uid.to_string uid in
if !verbose_share then
- lprintf "Could share urn: %s\n" uid;
+ lprintf_nl () "Could share urn: %s" uid;
(* TODO : enter this shared file in the QRT *)
declare_word uid;
declare_file ();
@@ -310,8 +320,11 @@
P.server_addr = s.server_host.host_addr;
P.server_port = s.server_host.host_port;
P.server_nusers = s.server_nusers;
+ P.server_max_users = s.server_maxnusers;
P.server_nfiles = s.server_nfiles;
P.server_name = s.server_agent;
+ P.server_version = s.server_vendor;
+ P.server_description = s.server_description;
}
else raise Not_found
@@ -403,7 +416,7 @@
P.client_name = if c.client_user.user_speed > 0
then Printf.sprintf "%s (%d)"
c.client_user.user_nick c.client_user.user_speed
else c.client_user.user_nick;
- P.client_software = c.client_user.user_vendor;
+ P.client_software = c.client_user.user_software;
}
);
Index: mldonkey/src/networks/gnutella/gnutellaMain.ml
diff -u mldonkey/src/networks/gnutella/gnutellaMain.ml:1.22
mldonkey/src/networks/gnutella/gnutellaMain.ml:1.23
--- mldonkey/src/networks/gnutella/gnutellaMain.ml:1.22 Tue May 9 08:40:25 2006
+++ mldonkey/src/networks/gnutella/gnutellaMain.ml Wed May 17 08:52:44 2006
@@ -109,17 +109,26 @@
GnutellaServers.ask_for_files ();
add_session_timer enabler 60.0 (fun timer ->
+ ( try
GnutellaServers.ask_for_files ();
+ with e -> lprintf_nl () "ASK_FOR_FILE FAILED: %s"
(Printexc2.to_string e));
+
+ ( try
GnutellaServers.send_pings ();
+ with e -> lprintf_nl () "SEND_PINGS FAILED: %s" (Printexc2.to_string
e));
+
(* Connect only every 60 seconds to new servers to prevent
hammering on them. It would be better to remember the
last time of a connection attempt to each and only
retry after a certain time. *)
GnutellaServers.connect_servers GnutellaServers.connect_server;
+
+
if !should_update_shared_files then begin
should_update_shared_files := false;
GnutellaHandler.update_shared_files ()
- end
+ end;
+
);
GnutellaInteractive.recover_files ();
@@ -135,7 +144,7 @@
let sock = (UdpSocket.create (Ip.to_inet_addr !!client_bind_addr)
!!client_port udp_handler ) in
if !verbose then
- lprintf "Gnutella: UDP socket bound on port %d\n" !!client_port;
+ lprintf_nl () "UDP socket bound on port %d" !!client_port;
udp_sock := Some sock;
UdpSocket.set_write_controler sock CommonGlobals.udp_write_controler;
Index: mldonkey/src/networks/gnutella/gnutellaProto.ml
diff -u mldonkey/src/networks/gnutella/gnutellaProto.ml:1.12
mldonkey/src/networks/gnutella/gnutellaProto.ml:1.13
--- mldonkey/src/networks/gnutella/gnutellaProto.ml:1.12 Sun Dec 18
14:50:38 2005
+++ mldonkey/src/networks/gnutella/gnutellaProto.ml Wed May 17 08:52:44 2006
@@ -508,8 +508,8 @@
with e ->
if !verbose_unknown_messages then
begin
- lprintf "Exception in parse: %s\n" (Printexc2.to_string e);
- dump pkt.pkt_payload;
+ lprintf_nl () "Exception in parse: %s" (Printexc2.to_string e);
+ dump_hex pkt.pkt_payload;
end;
{ pkt with pkt_payload = UnknownReq (pkt.pkt_type,pkt.pkt_payload) }
@@ -778,6 +778,9 @@
| _ -> ()
) file.file_searches
+
+let on_send_pings () = ()
+
let server_send_ping sock s =
match sock with
Connection sock ->
Index: mldonkey/src/networks/gnutella/gnutellaProtocol.ml
diff -u mldonkey/src/networks/gnutella/gnutellaProtocol.ml:1.22
mldonkey/src/networks/gnutella/gnutellaProtocol.ml:1.23
--- mldonkey/src/networks/gnutella/gnutellaProtocol.ml:1.22 Fri May 12
21:02:38 2006
+++ mldonkey/src/networks/gnutella/gnutellaProtocol.ml Wed May 17 08:52:44 2006
@@ -314,13 +314,15 @@
begin
try
let (server,_) = List.assoc "server" headers in
- c.client_user.user_vendor <- server;
+ c.client_user.user_software <- server;
+ client_must_update c;
with Not_found -> ()
end;
begin
try
let (useragent,_) = List.assoc "user-agent" headers in
- c.client_user.user_vendor <- useragent;
+ c.client_user.user_software <- useragent;
+ client_must_update c;
with Not_found -> ()
end;
Index: mldonkey/src/networks/gnutella/gnutellaServers.ml
diff -u mldonkey/src/networks/gnutella/gnutellaServers.ml:1.26
mldonkey/src/networks/gnutella/gnutellaServers.ml:1.27
--- mldonkey/src/networks/gnutella/gnutellaServers.ml:1.26 Tue May 9
08:40:25 2006
+++ mldonkey/src/networks/gnutella/gnutellaServers.ml Wed May 17 08:52:44 2006
@@ -129,24 +129,35 @@
(*************************************************************************)
let send_pings () =
+ if !verbose then lprintf_nl () "send_pings";
+ try
if !new_shared_words then update_shared_words ();
List.iter (fun s ->
server_send_ping s.server_sock s;
- GnutellaProto.send_qrt_sequence s false;
+
+ (* Nothing has changed *)
+ (* GnutellaProto.send_qrt_sequence s false; *)
match s.server_query_key with
| NoUdpSupport ->
host_send_qkr s.server_host
| _ ->
if !verbose then
- lprintf "Udp Support present\n";
+ lprintf_nl () "Udp Support present";
()
) !connected_servers;
new_shared_words := false;
Queue.iter (fun (_,h) ->
match h.host_server with
| None -> () | Some s -> ()
- ) active_udp_queue
+ ) active_udp_queue;
+
+ on_send_pings ();
+
+ with e ->
+ lprintf_nl () "send_pings: %s" (Printexc2.to_string e)
+
+
(*************************************************************************)
(* *)
@@ -157,13 +168,14 @@
let rec find_ultrapeer queue =
let (next,h) = Queue.head queue in
if next > last_time () then begin
-(* lprintf "not ready: %d s\n" (next - last_time ()); *)
+ if !verbose then lprintf "not ready: %d s\n" (next - last_time ());
raise Not_found;
end;
ignore (H.host_queue_take queue);
try
h, true
- with _ -> find_ultrapeer queue
+ with _ ->
+ find_ultrapeer queue
(*************************************************************************)
@@ -184,6 +196,7 @@
in
connect h
+
(*************************************************************************)
(* *)
(* connect_servers *)
@@ -191,9 +204,9 @@
(*************************************************************************)
let connect_servers connect =
-(*
- lprintf "connect_servers %d %d\n" !nservers !!max_ultrapeers;
-*)
+
+ if !verbose then lprintf_nl () "connect_servers c: %d n: %d max: %d\n"
(List.length !connected_servers) !nservers !!max_ultrapeers;
+
(if !!max_ultrapeers > List.length !connected_servers then
try
let to_connect = 3 * (!!max_ultrapeers - !nservers) in
@@ -213,7 +226,7 @@
UdpQueryKey _ -> false
| _ -> true
) then begin
-(* lprintf "host_send_qkr...\n"; *)
+ if !verbose then lprintf_nl () "host_send_qkr...\n";
H.set_request h Udp_Connect;
host_send_qkr h
end
@@ -234,12 +247,12 @@
unknown_header := !unknown_header || not (List.mem header
GnutellaProto.known_supernode_headers)
) headers;
if !unknown_header then begin
- lprintf "Gnutella DEVEL: Supernode Header contains unknown fields\n";
- lprintf " %s\n" first_line;
+ lprintf_nl () "Gnutella DEVEL: Supernode Header contains unknown
fields";
+ lprintf_nl () " %s" first_line;
List.iter (fun (header, (value,header2)) ->
lprintf " [%s] = [%s](%s)\n" header value header2;
) headers;
- lprintf "Gnutella DEVEL: end of header\n";
+ lprintf_nl () "Gnutella DEVEL: end of header";
end;
end;
@@ -382,10 +395,12 @@
end
with _ -> ()
) headers;
+
if !gnutella2 <> GnutellaProto.gnutella2_needed then
failwith "Protocol not supported";
List.iter (fun (ip,port,ultrapeer) ->
try
+ if !verbose then lprintf_nl () "x_ultrapeers new Ultrapeer %s %d"
(Ip.string_of_addr ip) port;
ignore (H.new_host ip port ultrapeer)
with e ->
if !verbose_msg_servers then begin
@@ -420,18 +435,22 @@
let slash_pos = String.index first_line '/' in
let proto = String.sub first_line (slash_pos+1) (space_pos - slash_pos -1)
in
let code = String.sub first_line (space_pos+1) 3 in
+ let len = (String.length first_line) - (space_pos+5) in
+ let desc = String.sub first_line (space_pos+5) len in
let h = server_parse_headers first_line headers in
if proto <> "0.6" then
failwith (Printf.sprintf "Bad protocol [%s]" proto);
- if not h.hsrpl_ultrapeer then
- failwith "DISCONNECT: Not an Ultrapeer";
+ s.server_description <- desc;
s.server_agent <- h.hsrpl_agent;
s.server_query_key <- h.hsrpl_query_key;
server_must_update (as_server s.server_server);
+ if not h.hsrpl_ultrapeer then
+ failwith "DISCONNECT: Not an Ultrapeer";
+
if code <> "200" then begin
s.server_connected <- int64_time ();
failwith (Printf.sprintf "Bad return code [%s]" code)
@@ -455,15 +474,16 @@
("Content-Encoding", "deflate") :: headers
else headers
in
+ (* G2 Shareaza: Sends deflated if advertising Accept-deflate even without
the Content-Encoding header *)
let headers =
- if h.hsrpl_accept_deflate then
+ if h.hsrpl_accept_deflate && h.hsrpl_content_deflate then
("Accept-Encoding", "deflate") :: headers
else headers
in
let msg = make_http_header "GNUTELLA/0.6 200 OK" headers in
if !verbose_msg_servers then
- lprintf "CONNECT REQUEST: %s\n" (String.escaped msg);
+ lprintf_nl () "CONNECT REQUEST %s: %s\n" (Ip.to_string (peer_ip sock))
(String.escaped msg);
write_string sock msg;
if h.hsrpl_content_deflate then deflate_connection sock;
@@ -475,7 +495,7 @@
()
with e ->
if !verbose_msg_servers then
- lprintf "DISCONNECT WITH EXCEPTION %s\n" (Printexc2.to_string e);
+ lprintf_nl () "DISCONNECT WITH EXCEPTION %s" (Printexc2.to_string e);
disconnect_from_server s (Closed_for_exception e)
(*************************************************************************)
@@ -563,9 +583,8 @@
if not (Ip.valid ip ) then
failwith "Invalid IP for server\n";
let port = s.server_host.host_port in
-(* if !verbose_msg_servers then begin
- lprintf "CONNECT TO %s:%d\n" (Ip.to_string ip) port;
-end; *)
+ if !verbose_msg_servers then
+ lprintf_nl () "CONNECT TO %s:%d" (Ip.to_string ip) port;
H.set_request h Tcp_Connect;
H.try_connect h;
(* h.host_tcp_request <- last_time (); *)
@@ -593,7 +612,6 @@
);
set_closer sock (fun _ error ->
-(* lprintf "CLOSER %s\n" error; *)
disconnect_from_server s error);
set_rtimeout sock !!server_connection_timeout;
@@ -615,7 +633,7 @@
in
if !verbose_msg_servers then
- lprintf "SENDING %s\n" (String.escaped s);
+ lprintf_nl () "SENDING %s" (String.escaped s);
write_string sock s;
with e ->
disconnect_from_server s
Index: mldonkey/src/networks/gnutella/gnutellaTypes.ml
diff -u mldonkey/src/networks/gnutella/gnutellaTypes.ml:1.18
mldonkey/src/networks/gnutella/gnutellaTypes.ml:1.19
--- mldonkey/src/networks/gnutella/gnutellaTypes.ml:1.18 Sun Apr 9
00:27:04 2006
+++ mldonkey/src/networks/gnutella/gnutellaTypes.ml Wed May 17 08:52:44 2006
@@ -35,14 +35,17 @@
and server = {
server_server : server CommonServer.server_impl;
mutable server_agent : string;
+ mutable server_description : string;
mutable server_sock : tcp_connection;
mutable server_ciphers : GnutellaNetwork.ciphers option;
mutable server_nfiles : int64;
mutable server_nusers : int64;
+ mutable server_maxnusers : int64;
mutable server_nkb : int;
mutable server_need_qrt : bool;
mutable server_ping_last : Md4.t;
+ mutable server_last_lni : int;
mutable server_nfiles_last : int64;
mutable server_nkb_last : int;
mutable server_vendor : string;
@@ -73,6 +76,7 @@
mutable user_speed : int;
mutable user_uid : Md4.t;
mutable user_vendor : string;
+ mutable user_software : string;
mutable user_nick : string;
}
Index: mldonkey/src/networks/gnutella2/g2Handler.ml
diff -u mldonkey/src/networks/gnutella2/g2Handler.ml:1.18
mldonkey/src/networks/gnutella2/g2Handler.ml:1.19
--- mldonkey/src/networks/gnutella2/g2Handler.ml:1.18 Sun Apr 9 00:27:04 2006
+++ mldonkey/src/networks/gnutella2/g2Handler.ml Wed May 17 08:52:44 2006
@@ -74,11 +74,12 @@
let g2_packet_handler s sock gconn p =
let h = s.server_host in
if !verbose_msg_servers then begin
- lprintf "Received %s packet from %s:%d: \n%s\n"
+ lprintf_nl () "Received %s packet from %s:%d: %s"
(match sock with Connection _ -> "TCP" | _ -> "UDP")
(Ip.string_of_addr h.host_addr) h.host_port
(Print.print p);
end;
+try
match p.g2_payload with
| PI ->
server_send sock s (packet PO []);
@@ -114,16 +115,15 @@
List.iter (fun p ->
match p.g2_payload with
LNI_V v -> s.server_vendor <- v
- | LNI_HS (leaves,_) -> s.server_nusers <- Int64.of_int leaves
+ | LNI_HS (leaves,maxleaves) ->
+ s.server_nusers <- Int64.of_int leaves;
+ s.server_maxnusers <- Int64.of_int maxleaves;
+ | LNI_LS (files,kb) ->
+ s.server_nfiles <- files;
| _ -> ()
) p.g2_children;
- server_send sock s
- (packet LNI [
- packet (LNI_NA (client_ip sock, !!client_port)) [];
- packet (LNI_GU !!client_uid) [];
- packet (LNI_V "MLDK") [];
- packet (LNI_LS (zero,zero)) [];
- ])
+ server_must_update (as_server s.server_server);
+ server_send_lni sock s 0L 0L;
(* Should we really reply to QKR if we are just a leaf ? We should probably
only reply if we are not already using all the available bandwidth. *)
@@ -172,12 +172,27 @@
lprintf "SEARCH RECEIVED\n";
(* OK, two cases: search by URN/magnet, or search by keywords *)
-
+ (*
+
+ Upon receiving a query, a node should:
+
+ Verify its authentication
+ Send an acknowledgment if it was not received from a hub
+ Forward it to connected nodes if necessary (detailed below)
+ Process it locally and dispatch results
+ *)
+
+ (match sock with
+ Connection _ -> ()
+ | _ -> (
server_send sock s (packet (QA md4)
[
packet (QA_TS ((int64_time ()))) [];
packet (QA_D ((client_ip sock, !!client_port), 0)) [];
]);
+ )
+ );
+
let by_urn = ref false in
let keywords = ref "" in
@@ -288,29 +303,45 @@
match c.g2_payload with
KHL_NH (ip,port)
| KHL_CH ((ip,port),_) ->
- ignore (H.new_host (Ip.addr_of_ip ip) port Ultrapeer)
+ if !verbose then lprintf_nl () "KHL new Ultrapeer: %s %d"
(Ip.to_string ip) port;
+ ignore (H.new_host (Ip.addr_of_ip ip) port Ultrapeer);
+ List.iter (fun c ->
+ match c.g2_payload with
+ KHL_NH_LS (f,kb)
+ | KHL_CH_LS (f,kb) -> (
+ let s = find_server (Ip.addr_of_ip ip) port in
+ match s with
+ Some s ->
+ s.server_nfiles <- f;
+ server_must_update (as_server s.server_server);
+ | _ -> (if !verbose then lprintf_nl () "KHL LS: No server
found: %s %d" (Ip.to_string ip) port)
+ )
+
+ | KHL_NH_HS (l,ml)
+ | KHL_CH_HS (l,ml) -> (
+ lprintf_nl () "KHL HS";
+ let s = find_server (Ip.addr_of_ip ip) port in
+ match s with
+ Some s ->
+ s.server_nusers <- Int64.of_int l;
+ s.server_maxnusers <- Int64.of_int ml;
+ server_must_update (as_server s.server_server);
+ | _ -> (if !verbose then lprintf_nl () "KHL HS: No server
found: %s %d" (Ip.to_string ip) port)
+ )
+ | KHL_NH_V v
+ | KHL_CH_V v -> (
+ lprintf_nl () "KHL HS";
+ let s = find_server (Ip.addr_of_ip ip) port in
+ match s with
+ Some s ->
+ if s.server_vendor = "" then s.server_vendor <- v;
+ | _ -> (if !verbose then lprintf_nl () "KHL V: No server
found: %s %d" (Ip.to_string ip) port)
+ )
+ | _ -> ()
+ ) c.g2_children
| _ -> ()
) p.g2_children;
- let children = ref [] in
- List.iter (fun s ->
- if s.server_vendor <> "" then
- let h = s.server_host in
- match server_state s with
- Connected _ ->
- let p = packet
- (KHL_CH
- ((Ip.ip_of_addr h.host_addr, h.host_port), int64_time
()))
- [
- (packet (KHL_CH_V s.server_vendor) [])
- ] in
- children := p :: !children
- | _ -> ()
- ) !connected_servers;
- server_send sock s (
- packet KHL [
- (packet (KHL_TS (int64_time ())) !children)
- ]
- )
+ server_send_khl sock s;
| QA suid ->
let ss = try Some (
@@ -322,6 +353,7 @@
List.iter (fun c ->
match c.g2_payload with
| QA_D ((ip,port),_) ->
+ if !verbose then lprintf_nl () "QA_D new Ultrapeer: %s %d"
(Ip.to_string ip) port;
let h = H.new_host (Ip.addr_of_ip ip) port Ultrapeer in
H.connected h;
begin
@@ -332,6 +364,7 @@
end
(* These ones have not been searched yet *)
| QA_S ((ip,port),_) ->
+ if !verbose then lprintf_nl () "QA_S new Ultrapeer: %s %d"
(Ip.to_string ip) port;
let h = H.new_host (Ip.addr_of_ip ip) port Ultrapeer in
H.connected h;
@@ -459,9 +492,9 @@
in
if !verbose_msg_servers then begin
- lprintf "Results Received: \n";
+ lprintf_nl () "Results Received:";
List.iter (fun (urn, size, name, url, tags) ->
- lprintf " %s [size %s] %s -- %s\n"
+ lprintf "[name %s] [size %s] [urn %s] [url %s]\n"
name (match size with
None -> "??" | Some sz -> Int64.to_string sz)
(match urn with
@@ -553,19 +586,28 @@
| _ ->
if !verbose_unknown_messages then
- lprintf "g2_packet_handler: unexpected packet %s\n"
+ lprintf_nl () "g2_packet_handler: unexpected packet %s"
(Print.print p)
+with e ->
+ if !verbose then
+ lprintf_nl () "g2_packet_handler exception: %s" (Printexc2.to_string e)
+
let udp_packet_handler ip port msg =
let addr = Ip.addr_of_ip ip in
+ (* if !verbose then lprintf_nl () "udp_packet_handler new Ultrapeer: %s %d"
(Ip.to_string ip) port; *)
let h = H.new_host addr port Ultrapeer in
H.connected h;
(* if !verbose_udp then
lprintf "Received UDP packet from %s:%d: \n%s\n"
(Ip.to_string ip) port (Print.print msg);*)
let s = new_server addr port in
- s.server_connected <- int64_time ();
+
+ (match s.server_sock with
+ Connection _ -> ()
+ | _ -> s.server_connected <- int64_time ());
+
g2_packet_handler s NoConnection () msg
(*
match msg.g2_payload with
@@ -579,15 +621,27 @@
let init s sock gconn =
(* gconn.gconn_sock <- s.server_sock; *)
+ if !verbose then lprintf_nl () "init: %s" (Ip.to_string (peer_ip sock));
+
connected_servers := s :: !connected_servers;
- gconn.gconn_handler <-
- Reader (g2_handler (g2_packet_handler s s.server_sock));
- server_send_ping s.server_sock s;
+ gconn.gconn_handler <- Reader (g2_handler (g2_packet_handler s
s.server_sock));
+
+ server_send_ping s.server_sock s; (* *)
server_send_ping NoConnection s;
server_send NoConnection s (packet PI []);
+
+ (* server_send (Connection sock) s (packet PI []); *)
+
(match s.server_query_key with
UdpQueryKey _ -> ()
| _ -> host_send_qkr s.server_host);
+
+
+ server_send_lni (Connection sock) s 0L 0L; (* SZ CG2Neighbour::OnRun() *)
+(*
+ server_send_khl (Connection sock) s;
+*)
+
server_send (Connection sock) s (packet UPROC [])
(*
@@ -600,13 +654,26 @@
let udp_client_handler ip port buf =
if String.length buf > 3 && String.sub buf 0 3 = "GND" then
try
- udp_packet_handler ip port
- (parse_udp_packet ip port buf)
- with AckPacket | FragmentedPacket -> ()
- else
- if !verbose then
- lprintf "Unexpected UDP packet: \n%s\n" (String.escaped buf)
+ (*
+ if !verbose then begin
+ lprintf_nl () "udp_client_handler %s %d" (Ip.to_string ip) port;
+ AnyEndian.dump_hex buf;
+ end;
+ *)
+ let x = (parse_udp_packet ip port buf) in
+ udp_packet_handler ip port x
+
+ with AckPacket | FragmentedPacket ->
+ (* if !verbose then lprintf_nl () "ACK/FRAGMENT" *)
+
+ ()
+
+ else
+ if !verbose then begin
+ lprintf_nl () "Unexpected UDP packet:";
+ AnyEndian.dump_hex buf;
+ end
let update_shared_files () = ()
let declare_word _ = new_shared_words := true
Index: mldonkey/src/networks/gnutella2/g2Network.ml
diff -u mldonkey/src/networks/gnutella2/g2Network.ml:1.4
mldonkey/src/networks/gnutella2/g2Network.ml:1.5
--- mldonkey/src/networks/gnutella2/g2Network.ml:1.4 Tue Jul 12 23:11:06 2005
+++ mldonkey/src/networks/gnutella2/g2Network.ml Wed May 17 08:52:44 2006
@@ -51,9 +51,8 @@
let port = 6347
let config_file = "gnutella2.ini"
let redirectors = [
- "http://gwc.mamarazzi.net/";
"http://g2cache.theg2.net/gwcache/lynnx.asp";
- "http://ptzldd1.ath.cx/perlgcache.cgi";
+ "http://bazooka1.servehttp.com/g2/bazooka.php";
]
let options_prefix = "G2-"
@@ -67,8 +66,11 @@
assertion failure if we add an ed2k file in
CommonSwarming2 at line 609 "assert (not tt.t_primary);"
) *)
-let accept_ed2kuid = false
-let accept_bitprint = false
+
+(* Temporarily re-enabling -- better to fix the bug than to hide it (not seen
yet) *)
+
+let accept_ed2kuid = true
+let accept_bitprint = true
let accept_md5ext = false
Index: mldonkey/src/networks/gnutella2/g2Proto.ml
diff -u mldonkey/src/networks/gnutella2/g2Proto.ml:1.15
mldonkey/src/networks/gnutella2/g2Proto.ml:1.16
--- mldonkey/src/networks/gnutella2/g2Proto.ml:1.15 Wed Jan 11 19:12:35 2006
+++ mldonkey/src/networks/gnutella2/g2Proto.ml Wed May 17 08:52:44 2006
@@ -369,9 +369,8 @@
| UPROD_XML s -> Buffer.add_string buf s; "XML"
| Unknown (names, be,s) ->
- (List.iter (fun s ->
- Printf.bprintf buf "/%s" s) names;
- Printf.bprintf buf "\n DUMP: %s" (AnyEndian.sdump s));
+ (List.iter (fun s -> Printf.bprintf buf "/%s [ %s ]\n" s
(AnyEndian.sdump s)) names;
+ Printf.bprintf buf "\nUnknown dump:\n %s" (AnyEndian.sdump s));
"UNKNOWN"
@@ -570,7 +569,7 @@
let size = ref (String.length payload) in
if children <> [] then begin
if payload <> "" then incr size;
- List.iter (fun c -> size := !size + String.length c) children
+ List.iter (fun c -> size := !size + String.length c) children;
end;
let buf = Buffer.create 100 in
(* Buffer.add_string buf header;*)
@@ -583,32 +582,30 @@
(len_len lsl 6) lor ((name_len-1) lsl 3)
in
let cb = if cb=0 then cb+4 else cb in
-(* lprintf "encode: cb = %d size = %d len_len= %d\n" cb !size len_len; *)
+ (* if !verbose then lprintf_nl () "2encode: cb=%d size=%d len_len=%d" cb
!size len_len; *)
Buffer.add_char buf (char_of_int cb);
if len_len = 1 then
- buf_int8 buf !size else
- if len_len = 2 then
- LittleEndian.buf_int16 buf !size else
+ buf_int8 buf !size
+ else if len_len = 2 then
+ LittleEndian.buf_int16 buf !size
+ else
LittleEndian.buf_int24 buf !size;
Buffer.add_string buf name;
List.iter (fun c -> Buffer.add_string buf c) children;
- if children <> [] && payload <> "" then Buffer.add_char buf '\000';
+ if children <> [] && payload <> "" then begin
+ Buffer.add_char buf '\000';
+ end;
+
Buffer.add_string buf payload;
Buffer.contents buf
+let g2_decode_payload names be s =
-
-let g2_decode_payload names be s =
-(*
- lprintf "names:"; List.iter (fun s -> lprintf "/%s" s) names;
- lprintf "\n";
- dump s;
-lprintf "\n";
- *)
try
+
if be then
(
if !verbose then
@@ -616,6 +613,7 @@
raise Exit
);
let module M = G2_LittleEndian in
+
match names with
| "TO" :: _ -> TO (get_md4 s 0)
@@ -768,17 +766,13 @@
with e ->
if !verbose_unknown_messages then
begin
- lprintf "Cannot parse: %s\n " (Printexc2.to_string e);
- List.iter (fun name -> lprintf "%s/" name) names;
+ lprintf_nl () "g2_decode_payload cannot parse: %s"
(Printexc2.to_string e);
+ List.iter (fun name -> lprintf "/%s" name) (List.rev names);
lprintf "\n%s\n" (sdump s);
end;
Unknown (names, be, s)
let rec g2_parse name has_children bigendian s =
- (*
- lprintf "g2_parse:"; List.iter (fun s -> lprintf "/%s" s) name;
- dump s;
-*)
let len = String.length s in
let rec iter_child pos children =
@@ -787,8 +781,10 @@
let cb = get_uint8 s pos in
if cb = 0 then children, (pos+1) else
let len_len = (cb lsr 6) land 3 in
- if len < pos + 1 + len_len then
- failwith "Ill formed packet (len < pos + 1 + len_len)";
+ if len < pos + 1 + len_len then begin
+ let s = Printf.sprintf "Ill formed packet (len < pos + 1 + len_len) (%d
< %d + 1 + %d)" len pos len_len in
+ failwith s;
+ end;
let be = cb land 2 <> 0 in
let packet, pos = g2_extract_packet name cb s be pos len in
iter_child pos (packet :: children)
@@ -823,6 +819,7 @@
and g2_extract_packet root_name cb s be pos len =
let len_len = (cb lsr 6) land 3 in
+
let pkt_len, pkt_pos =
match len_len, be with
| 1, true -> get_uint8 s (pos+1), 2
@@ -835,8 +832,16 @@
in
let name_len = ((cb lsr 3) land 7) + 1 in
let msg_len = 1 + len_len + name_len + pkt_len in
- if len < pos + msg_len then
- failwith "Ill formed packet (len < pos + msg_len)";
+ (*
+ if !verbose then
+ lprintf_nl () "g2_extract_packet: be:%B len: %d len_len: %d pkt_len: %d
pkt_pos: %d name_len: %d msg_len: %d"
+ be len len_len pkt_len pkt_pos name_len msg_len;
+ *)
+
+ if len < pos + msg_len then begin
+ let s = Printf.sprintf "Ill formed packet (len < pos + msg_len) (%d < %d +
%d)" len pos msg_len in
+ failwith s
+ end;
(* lprintf "One gnutella2 subpacket received\n";*)
let name = String.sub s (pos + pkt_pos) name_len in
@@ -847,22 +852,19 @@
let socket_send sock p =
do_if_connected sock (fun sock ->
let m = g2_encode p in
-(*
- lprintf "DUMP SENT: \n";
- dump m; *)
+ if !verbose then begin
+ lprintf_nl () "socket_send_sock %s:" (Ip.to_string (peer_ip sock));
+ dump_hex m;
+ end;
write_string sock m
)
-
let udp_counter = ref 0
+
let udp_header compress =
incr udp_counter;
- if compress then
- Printf.sprintf "GND\003%c%c\001\001"
- (char_of_int (!udp_counter land 0xff))
- (char_of_int ((!udp_counter lsr 8) land 0xff))
- else
- Printf.sprintf "GND\002%c%c\001\001"
+ let c = if compress then '\003' else '\002' in
+ Printf.sprintf "GND%c%c%c\001\001" c
(char_of_int (!udp_counter land 0xff))
(char_of_int ((!udp_counter lsr 8) land 0xff))
@@ -881,15 +883,15 @@
let (s,ip,port,seq,times, next_time,acked) =
Fifo.take udp_packet_waiting_for_ack in
if not !acked then begin
-(* lprintf "UDP resend %d\n" seq; *)
+ if !verbose then lprintf_nl () "resend_udp_packets %s %d:
%d" (Ip.to_string ip) port seq;
UdpSocket.write sock false s ip port;
if times < 3 then
Fifo.put udp_packet_waiting_for_ack (s, ip, port, seq,
times+1,
last_time () + 10, acked)
- else
-(* lprintf "UDP packet %d lost\n" seq *)
- ()
+ else begin
+ if !verbose then lprintf_nl () "resend_udp_packets: packet
%d lost" seq;
+ end
end;
end else
raise Not_found
@@ -904,18 +906,20 @@
| Some sock ->
try
let s = g2_encode msg in
- let s = if String.length s > max_uncompress_packet then
+ let compress = String.length s > max_uncompress_packet in
+ let s = if compress then
(udp_header true) ^ (Autoconf.zlib__compress_string s)
else
(udp_header false) ^ s
in
if !verbose_msg_servers then begin
- lprintf "Sending on UDP(%d) to %s:%d:\n%s\n%s\n"
+ lprintf_nl () "Sending on UDP(%d)%s to %s:%d: %s"
!udp_counter
+ (if compress then " (zlib)" else "")
(Ip.to_string ip) port
- (Print.print msg)
- (String.escaped s);
+ (Print.print msg);
+ dump_hex s;
end;
Fifo.put udp_packet_waiting_for_ack
(s, ip, port, !udp_counter, 0, last_time () + 10, ref false);
@@ -933,7 +937,7 @@
(char_of_int (counter land 0xff))
(char_of_int ((counter lsr 8) land 0xff))
in
-(* lprintf "ack sent\n"; *)
+ (* if !verbose then lprintf_nl () "udp_send_ack: %s %d" (Ip.to_string
ip) port; *)
UdpSocket.write sock false s ip port
with e ->
lprintf "Exception %s in udp_send\n" (Printexc2.to_string e)
@@ -946,7 +950,7 @@
match sock with
| Connection _ ->
if !verbose_msg_servers then
- lprintf "Sending on TCP to %s:%d: \n%s\n"
+ lprintf_nl () "Sending on TCP to %s:%d: %s"
(Ip.to_string ip) port (Print.print p);
socket_send sock p
| _ ->
@@ -956,18 +960,22 @@
let g2_handler f gconn sock =
let b = TcpBufferedSocket.buf sock in
-(*
- lprintf "GNUTELLA2 HANDLER\n";
-AnyEndian.dump (String.sub b.buf b.pos b.len);
- *)
+
+ if !verbose then begin
+ lprintf_nl () "g2_handler:";
+ AnyEndian.dump_hex (String.sub b.buf b.pos b.len);
+ end;
+
try
while b.len >= 2 do
let s = b.buf in
-(* lprintf "g2_tcp_packet_handler\n"; *)
+ (* if !verbose then lprintf_nl () "g2_tcp_packet_handler"; *)
let cb = get_uint8 s b.pos in
let len_len = (cb lsr 6) land 3 in
- if b.len < 1 + len_len then raise Not_found;
let be = cb land 2 <> 0 in
+ (* if !verbose then lprintf_nl () "b.len: %d < 1 + len_len: %d be: %B"
b.len len_len be; *)
+
+ if b.len < 1 + len_len then raise Not_found;
let len, pos = match len_len, be with
| 1, true -> get_uint8 s (b.pos+1), 2
@@ -980,9 +988,11 @@
in
let name_len = ((cb lsr 3) land 7) + 1 in
let msg_len = 1 + len_len + name_len + len in
+ (* if !verbose then
+ lprintf_nl () "b.len: %d < msg_len: %d name_len: %d" b.len msg_len
name_len; *)
if b.len < msg_len then raise Not_found;
-(* lprintf "One gnutella2 packet received\n"; *)
+ (* if !verbose then lprintf_nl () "One gnutella2 packet received"; *)
let name = String.sub b.buf (b.pos + pos) name_len in
let packet = String.sub b.buf (b.pos + pos + name_len) len in
let has_children = cb land 4 <> 0 in
@@ -1032,7 +1042,12 @@
let parse_udp_packet ip port buf =
-(* lprintf "\n\nNEW UDP PACKET \n%s\n" (String.escaped buf); *)
+ (*
+ if !verbose then begin
+ lprintf_nl () "NEW UDP PACKET FROM %s %d:" (Ip.to_string ip) port;
+ AnyEndian.dump_hex buf;
+ end;
+ *)
let len = String.length buf in
if len < 8 then
@@ -1111,8 +1126,11 @@
in
+ if !verbose then begin
+ lprintf_nl () "FULL UDP PACKET FROM %s %d:" (Ip.to_string ip) port;
+ AnyEndian.dump_hex buf;
+ end;
-(* lprintf "DUMP udp packet: %s\n" (String.escaped buf); *)
let len = String.length buf in
try
let pos = 0 in
@@ -1153,7 +1171,9 @@
let has_children = cb land 4 <> 0 in
let p = g2_parse [name] has_children be packet in
if !verbose_msg_servers then
- lprintf "PACKET: %s\n" (Print.print p);
+ lprintf_nl () "UDP PACKET: %s" (Print.print p);
+
+(* Test Encoder *)
(*
(try
@@ -1180,7 +1200,6 @@
-
p
with
@@ -1335,12 +1354,16 @@
let host_send_qkr h =
-(* lprintf "server_send_qkr\n"; *)
+ if !verbose then lprintf_nl () "host_send_qkr";
host_send NoConnection h
- (packet QKR
+ (packet QKR [])
+
+ (*
[
(packet (QKR_RNA (client_ip NoConnection, !!client_port)) [])
- ])
+ ]) *)
+
+
let server_send_query quid words xml_query sock s =
(* lprintf "*********8 server_ask_query *********\n"; *)
@@ -1407,26 +1430,89 @@
server_ask_uid NoConnection s ss.search_uid uid file.file_name
) file.file_searches
+
let server_send_ping sock s =
server_send sock s
(packet PI [
packet (PI_UDP (client_ip NoConnection, !!client_port))[]])
+let server_send_khl sock s =
+ let children = ref [] in
+ List.iter (fun s ->
+ if s.server_vendor <> "" then
+ let h = s.server_host in
+ match server_state s with
+ Connected _ ->
+ let p = packet
+ (KHL_CH
+ ((Ip.ip_of_addr h.host_addr, h.host_port), int64_time ()))
+ [
+ (packet (KHL_CH_V s.server_vendor) [])
+ ] in
+ children := p :: !children
+ | _ -> ()
+ ) !connected_servers;
+ server_send sock s (
+ packet KHL [
+ (packet (KHL_TS (int64_time ())) !children)
+ ]
+ )
+
+let server_send_lni sock s files kb =
+
+ if s.server_last_lni + 60 < BasicSocket.last_time () then begin
+ s.server_last_lni <- BasicSocket.last_time ();
+ server_send sock s
+ (packet LNI [
+ packet (LNI_NA (client_ip sock, !!client_port)) [];
+ packet (LNI_GU !!client_uid) [];
+ packet (LNI_V "MLDK") [];
+ packet (LNI_LS (files, kb)) [];
+ ])
+ end
+
+let on_send_pings () =
+ List.iter (fun s ->
+ server_send_lni s.server_sock s 0L 0L;
+ ) !connected_servers
+
let server_send_push s uid uri = ()
+let bitv_to_string bitv =
+ let s = String.make ((Bitv.length bitv) / 8) '\000' in
+ Bitv.iteri_true (fun i ->
+ let pos = i / 8 in
+ let bit = 7 - (i mod 8) in
+ let x = (1 lsl bit) in
+ s.[pos] <- char_of_int ( (int_of_char s.[pos]) lor x );
+ ) bitv;
+ s
+(* http://www.gnutella2.com/index.php/Query_Hash_Tables *)
let create_qrt_table words table_size =
- let table_length = 1 lsl (table_size-3) in
+ let table_length = (1 lsl table_size) in
+ let bitv = Bitv.create table_length true in
+ List.iter (fun w ->
+ let pos = bloom_hash w table_size in
+ let pos = Int64.to_int pos in
+ Bitv.set bitv pos false;
+ if !verbose then lprintf "ADDING WORD %s at pos %d\n" w pos;
+ ) words;
+ bitv_to_string bitv
+
+let create_qrt_table2 words table_size =
+ let table_length = 1 lsl (table_size-3) in (* index_out_of_bounds *)
if !verbose then
lprintf "table_length %d\n" table_length;
+
let array = Array.create table_length 0 in
List.iter (fun w ->
let pos = bloom_hash w table_size in
let pos = Int64.to_int pos in
if !verbose then
- lprintf "ADDING WORD %d\n" pos;
+ lprintf "ADDING WORD at pos %d\n" pos;
let bit = (1 lsl (pos land 7)) in
- array.(pos) <- array.(pos) lor bit;
+ array.(pos) <- array.(pos) lor bit; (* index_out_of_bounds *)
) words;
let string_size = table_length in
let table = String.create string_size in
@@ -1443,6 +1529,7 @@
let table_size = 20 in
(* let infinity = 7 in
let table_length = 1 lsl table_size in *)
+
server_send_qrt_reset s;
if !cached_qrt_table = "" then
Index: mldonkey/src/networks/gnutella2/g2Redirector.ml
diff -u mldonkey/src/networks/gnutella2/g2Redirector.ml:1.9
mldonkey/src/networks/gnutella2/g2Redirector.ml:1.10
--- mldonkey/src/networks/gnutella2/g2Redirector.ml:1.9 Fri May 5 22:08:01 2006
+++ mldonkey/src/networks/gnutella2/g2Redirector.ml Wed May 17 08:52:44 2006
@@ -48,13 +48,15 @@
begin
try
let ip, port = String2.cut_at ip_port ':' in
- ignore (H.new_host
- (Ip.addr_of_string ip) (int_of_string port) Ultrapeer)
+ if !verbose then lprintf_nl () "Received host %s:%s" ip port;
+ ignore (H.new_host (Ip.addr_of_string ip) (int_of_string port)
Ultrapeer)
with _ -> ()
end
| "u" :: url :: _ ->
- if not (List.mem url !!redirectors) then
- redirectors =:= url :: !!redirectors
+ if not (List.mem url !!redirectors) then begin
+ redirectors =:= url :: !!redirectors;
+ if !verbose then lprintf_nl () "Received redirector %s" url
+ end
| _ -> ()
) lines
@@ -78,12 +80,12 @@
H.req_user_agent = get_user_agent ();
} in
if !verbose then
- lprintf "Connecting G2 redirector\n";
+ lprintf_nl () "Connecting G2 redirector: %s" url;
H.wget r g2_parse_redirector_page
) !!redirectors;
end else begin
if !verbose then
- lprintf "redirector recontacted in %d seconds \n"
+ lprintf_nl () "redirector recontacted in %d seconds"
(!next_redirector_access - last_time ())
end
Index: mldonkey/src/networks/gnutella2/g2Supernode.ml
diff -u mldonkey/src/networks/gnutella2/g2Supernode.ml:1.1
mldonkey/src/networks/gnutella2/g2Supernode.ml:1.2
--- mldonkey/src/networks/gnutella2/g2Supernode.ml:1.1 Mon Nov 1 11:23:02 2004
+++ mldonkey/src/networks/gnutella2/g2Supernode.ml Wed May 17 08:52:44 2006
@@ -340,7 +340,7 @@
(make_handshake_request_headers req)
in
if !verbose_msg_servers then
- lprintf "SENDING %s\n" (String.escaped msg);
+ lprintf_nl () "SENDING %s\n" (String.escaped msg);
write_string sock msg;
set_gnutella_sock sock !verbose_msg_servers
Index: mldonkey/src/utils/cdk/printf2.ml
diff -u mldonkey/src/utils/cdk/printf2.ml:1.15
mldonkey/src/utils/cdk/printf2.ml:1.16
--- mldonkey/src/utils/cdk/printf2.ml:1.15 Sun Feb 5 13:19:14 2006
+++ mldonkey/src/utils/cdk/printf2.ml Wed May 17 08:52:44 2006
@@ -127,7 +127,7 @@
| 'f' | 'e' | 'E' | 'g' | 'G' ->
Obj.magic(fun (f: float) ->
cont_s (format_float (extract_format fmt pos i widths) f) (succ i))
- | 'b' ->
+ | 'b' | 'B' ->
Obj.magic(fun (b: bool) ->
cont_s (string_of_bool b) (succ i))
| 'a' ->
Index: mldonkey/src/utils/net/anyEndian.ml
diff -u mldonkey/src/utils/net/anyEndian.ml:1.8
mldonkey/src/utils/net/anyEndian.ml:1.9
--- mldonkey/src/utils/net/anyEndian.ml:1.8 Sun Oct 16 20:42:55 2005
+++ mldonkey/src/utils/net/anyEndian.ml Wed May 17 08:52:44 2006
@@ -88,50 +88,6 @@
(* lprintf "exception in get_md4 %d s=%s\n" pos (String.escaped s); *)
raise e
-
-let dump_ascii s =
- let len = String.length s in
- lprintf "ascii: [";
- for i = 0 to len - 1 do
- let c = s.[i] in
- let n = int_of_char c in
- if n > 31 && n < 127 then
- lprintf " %c" c
- else
- lprintf "(%d)" n
- done;
- lprintf "]\n"
-
-let dump s =
- let len = String.length s in
- lprintf "ascii: [";
- for i = 0 to len - 1 do
- let c = s.[i] in
- let n = int_of_char c in
- if n > 31 && n < 127 then
- lprintf " %c" c
- else
- lprintf "(%d)" n
- done;
- lprintf "]\n";
- lprintf "dec: [";
- for i = 0 to len - 1 do
- let c = s.[i] in
- let n = int_of_char c in
- lprintf "(%d)" n
- done;
- lprintf "]\n"
-
-let dump_sub s pos len =
- lprintf "dec: [";
- for i = 0 to len - 1 do
- let c = s.[pos+i] in
- let n = int_of_char c in
- lprintf "(%d)" n
- done;
- lprintf "]\n\n"
-
-
let buf_string8 buf s =
buf_int8 buf (String.length s);
Buffer.add_string buf s
@@ -140,8 +96,42 @@
let len = get_uint8 s pos in
String.sub s (pos+1) len, pos+1+len
+let bdump_hex buf s =
+ let len = String.length s in
+ let asc = Buffer.create 16 in
+ let hex = Buffer.create 50 in
+ let rec iter i =
+ if i = len then begin
+ if Buffer.length asc > 0 then begin
+ let fill = String.make (50 - (Buffer.length hex )) ' ' in
+ Printf.bprintf buf "%s%s|%-16s|\n" (Buffer.contents hex) fill
(Buffer.contents asc);
+ end
+ end
+ else begin
+ if i mod 16 = 0 then begin
+ if i > 0
+ then Printf.bprintf buf "%s|%-16s|\n" (Buffer.contents hex)
(Buffer.contents asc);
+ Printf.bprintf buf "%08x: " i;
+ Buffer.clear asc;
+ Buffer.clear hex;
+ end;
+ let c = s.[i] in
+ let ioc = int_of_char c in
+ let bc = if ioc > 32 && ioc < 127 then c else '.' in
+ Buffer.add_char asc bc;
+ Buffer.add_string hex (Printf.sprintf "%02x " ioc);
+ if (i + 1) mod 8 = 0 then Buffer.add_char hex ' ';
+ iter (i + 1);
+ end;
+ in
+ iter 0
-let bdump buf s =
+let dump_hex s =
+ let buf = Buffer.create 1000 in
+ bdump_hex buf s;
+ lprintf "%s" (Buffer.contents buf)
+
+let bdump_ascii buf s =
let len = String.length s in
Printf.bprintf buf "ascii: [";
for i = 0 to len - 1 do
@@ -152,7 +142,15 @@
else
Printf.bprintf buf "(%d)" n
done;
- Printf.bprintf buf "]\n";
+ Printf.bprintf buf "]\n"
+
+let dump_ascii s =
+ let buf = Buffer.create 1000 in
+ bdump_ascii buf s;
+ lprintf "%s" (Buffer.contents buf)
+
+let bdump_dec buf s =
+ let len = String.length s in
Printf.bprintf buf "dec: [";
for i = 0 to len - 1 do
let c = s.[i] in
@@ -161,7 +159,39 @@
done;
Printf.bprintf buf "]\n"
+let dump_dec s =
+ let buf = Buffer.create 1000 in
+ bdump_dec buf s;
+ lprintf "%s" (Buffer.contents buf)
+
+let dump s =
+ dump_ascii s;
+ dump_dec s;
+ dump_hex s
+
+let bdump_sub buf s pos len =
+ Printf.bprintf buf "dec: [";
+ for i = 0 to len - 1 do
+ let c = s.[pos+i] in
+ let n = int_of_char c in
+ Printf.bprintf buf "(%d)" n
+ done;
+ Printf.bprintf buf "]\n\n"
+
+let dump_sub s pos len =
+ let buf = Buffer.create 1000 in
+ bdump_sub buf s pos len;
+ lprintf "%s" (Buffer.contents buf)
+
+let bdump buf s =
+ bdump_ascii buf s;
+ bdump_dec buf s;
+ bdump_hex buf s
+
let sdump s =
let buf = Buffer.create 1000 in
bdump buf s;
Buffer.contents buf
+
+let dump s =
+ lprintf "%s" (sdump s)
Index: mldonkey/src/utils/net/basicSocket.ml
diff -u mldonkey/src/utils/net/basicSocket.ml:1.29
mldonkey/src/utils/net/basicSocket.ml:1.30
--- mldonkey/src/utils/net/basicSocket.ml:1.29 Fri Jan 6 22:32:36 2006
+++ mldonkey/src/utils/net/basicSocket.ml Wed May 17 08:52:44 2006
@@ -262,7 +262,7 @@
let close t msg =
if t.fd <> dummy_fd then begin
if !debug then
- lprintf_nl "[bS] CLOSING: %s" (sprint_socket t);
+ lprintf_nl "[bS] CLOSING: %s (%s)" (sprint_socket t)
(string_of_reason msg);
(try
Unix.close t.fd;
with _ -> ());
Index: mldonkey/src/utils/net/ip.ml
diff -u mldonkey/src/utils/net/ip.ml:1.21 mldonkey/src/utils/net/ip.ml:1.22
--- mldonkey/src/utils/net/ip.ml:1.21 Sun May 7 16:05:37 2006
+++ mldonkey/src/utils/net/ip.ml Wed May 17 08:52:44 2006
@@ -299,7 +299,7 @@
);
BasicSocket.add_infinite_timer 0.1 (fun _ ->
- let current_time = Unix.gettimeofday () in
+ (* let current_time = Unix.gettimeofday () in *)
while true do
match !current_job with
| None ->
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/05
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/05
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/09
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/09
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/12
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/14
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/14
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...,
mldonkey-commits <=
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/18
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/19
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/21
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/23
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/25
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/25
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/25
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/30
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/30
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/05/31