mldonkey-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...


From: mldonkey-commits
Subject: [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...
Date: Sun, 01 Oct 2006 17:54:00 +0000

CVSROOT:        /sources/mldonkey
Module name:    mldonkey
Changes by:     spiralvoice <spiralvoice>       06/10/01 17:54:00

Modified files:
        distrib        : ChangeLog 
        src/daemon/common: commonNetwork.ml commonNetwork.mli 
                           commonTypes.ml 
        src/daemon/driver: driverCommands.ml driverControlers.ml 
                           driverInteractive.ml 
        src/networks/bittorrent: bTInteractive.ml bTProtocol.ml 
        src/networks/direct_connect: dcInteractive.ml 
        src/networks/donkey: donkeyClient.ml donkeyGlobals.ml 
                             donkeyInteractive.ml donkeyMain.ml 
                             donkeyProtoClient.ml donkeyProtoUdp.ml 
                             donkeyUdp.ml 
        src/networks/fileTP: fileTPInteractive.ml 
        src/networks/gnutella: gnutellaInteractive.ml 
        src/networks/opennap: opennapInteractive.ml 
        src/networks/soulseek: slskInteractive.ml 

Log message:
        patch #5404

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.1035&r2=1.1036
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonNetwork.ml?cvsroot=mldonkey&r1=1.31&r2=1.32
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonNetwork.mli?cvsroot=mldonkey&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonTypes.ml?cvsroot=mldonkey&r1=1.57&r2=1.58
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/driver/driverCommands.ml?cvsroot=mldonkey&r1=1.179&r2=1.180
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/driver/driverControlers.ml?cvsroot=mldonkey&r1=1.86&r2=1.87
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/driver/driverInteractive.ml?cvsroot=mldonkey&r1=1.105&r2=1.106
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/bittorrent/bTInteractive.ml?cvsroot=mldonkey&r1=1.113&r2=1.114
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/bittorrent/bTProtocol.ml?cvsroot=mldonkey&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/direct_connect/dcInteractive.ml?cvsroot=mldonkey&r1=1.27&r2=1.28
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyClient.ml?cvsroot=mldonkey&r1=1.101&r2=1.102
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyGlobals.ml?cvsroot=mldonkey&r1=1.99&r2=1.100
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyInteractive.ml?cvsroot=mldonkey&r1=1.127&r2=1.128
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyMain.ml?cvsroot=mldonkey&r1=1.57&r2=1.58
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoClient.ml?cvsroot=mldonkey&r1=1.37&r2=1.38
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoUdp.ml?cvsroot=mldonkey&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyUdp.ml?cvsroot=mldonkey&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/fileTP/fileTPInteractive.ml?cvsroot=mldonkey&r1=1.49&r2=1.50
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/gnutella/gnutellaInteractive.ml?cvsroot=mldonkey&r1=1.65&r2=1.66
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/opennap/opennapInteractive.ml?cvsroot=mldonkey&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/soulseek/slskInteractive.ml?cvsroot=mldonkey&r1=1.23&r2=1.24

Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.1035
retrieving revision 1.1036
diff -u -b -r1.1035 -r1.1036
--- distrib/ChangeLog   1 Oct 2006 17:50:21 -0000       1.1035
+++ distrib/ChangeLog   1 Oct 2006 17:53:59 -0000       1.1036
@@ -15,6 +15,8 @@
 =========
 
 2006/10/01
+5404: New command porttest, support for eMule- and Azureus-style porttest
+      (thx to pango for Azureus result parsing)
 5421: HTML: Add "Users" to options frame (unease)
 5429: New common lprintf_file_nl function
 5432: Updates and fixes for the Win resource file (schlumpf)

Index: src/daemon/common/commonNetwork.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonNetwork.ml,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- src/daemon/common/commonNetwork.ml  23 Sep 2006 20:29:46 -0000      1.31
+++ src/daemon/common/commonNetwork.ml  1 Oct 2006 17:53:59 -0000       1.32
@@ -109,6 +109,10 @@
         lprintf_nl "op_network_reset";
       if c.op_network_ports == cc.op_network_ports then 
         lprintf_nl "op_network_ports";
+      if c.op_network_porttest_start == cc.op_network_porttest_start then 
+        lprintf_nl "op_network_porttest_start";
+      if c.op_network_porttest_result == cc.op_network_porttest_result then 
+        lprintf_nl "op_network_porttest_result";
   ) !networks_ops;
   lprint_newline ()
 
@@ -129,6 +133,8 @@
 let network_clean_exit n = try n.op_network_clean_exit () with _ -> true
 let network_reset n = try n.op_network_reset () with _ -> ()
 let network_ports n = n.op_network_ports ()
+let network_porttest_start n = n.op_network_porttest_start ()
+let network_porttest_result n = n.op_network_porttest_result ()
 
 let networks_iter f =
   List.iter (fun r ->
@@ -281,6 +287,8 @@
       op_network_clean_exit = (fun _ -> true);
       op_network_reset = (fun _ -> ni_ok name "reset");
       op_network_ports = (fun _ -> ni_ok name "ports"; []);
+      op_network_porttest_start = (fun _ -> ni_ok name "porttest_start");
+      op_network_porttest_result = (fun _ -> fni name "porttest_result");
     }
   in
   let rr = (Obj.magic r: network) in

Index: src/daemon/common/commonNetwork.mli
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonNetwork.mli,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- src/daemon/common/commonNetwork.mli 19 Sep 2006 17:07:42 -0000      1.16
+++ src/daemon/common/commonNetwork.mli 1 Oct 2006 17:53:59 -0000       1.17
@@ -48,6 +48,8 @@
 val register_commands : (string * string * CommonTypes.arg_kind * string) list 
-> unit
 val network_connect_servers : CommonTypes.network -> unit
 val network_ports : CommonTypes.network -> (int * string) list
+val network_porttest_start : CommonTypes.network -> unit
+val network_porttest_result : CommonTypes.network -> 
CommonTypes.network_porttest
 val network_forget_search : CommonTypes.network -> CommonTypes.search -> unit
 val network_close_search : CommonTypes.network -> CommonTypes.search -> unit
 val network_private_message : CommonTypes.network -> string -> string -> unit

Index: src/daemon/common/commonTypes.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonTypes.ml,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -b -r1.57 -r1.58
--- src/daemon/common/commonTypes.ml    23 Sep 2006 20:29:46 -0000      1.57
+++ src/daemon/common/commonTypes.ml    1 Oct 2006 17:53:59 -0000       1.58
@@ -462,6 +462,12 @@
   mutable upload : Int64.t;
 }
   
+type network_porttest =
+  PorttestNotAvailable
+| PorttestNotStarted
+| PorttestInProgress of int
+| PorttestResult of int * string
+
 type network = {
     network_name : string;
     network_num : int;
@@ -510,6 +516,8 @@
     mutable op_network_clean_exit : (unit -> bool);
     mutable op_network_reset : (unit -> unit);
     mutable op_network_ports : (unit -> (int * string) list);
+    mutable op_network_porttest_start : (unit -> unit);
+    mutable op_network_porttest_result : (unit -> network_porttest);
   }
 
 and   ui_user = {

Index: src/daemon/driver/driverCommands.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/driver/driverCommands.ml,v
retrieving revision 1.179
retrieving revision 1.180
diff -u -b -r1.179 -r1.180
--- src/daemon/driver/driverCommands.ml 23 Sep 2006 22:28:58 -0000      1.179
+++ src/daemon/driver/driverCommands.ml 1 Oct 2006 17:53:59 -0000       1.180
@@ -1121,6 +1121,19 @@
         _s "network disabled"
     ) , "<num> :\t\t\t\tdisable a particular network";
 
+    "porttest", Arg_none (fun o ->
+        let buf = o.conn_buf in
+       networks_iter (fun n -> 
+         match network_porttest_result n with
+           PorttestNotAvailable -> ()
+         | _ -> network_porttest_start n);
+        if o.conn_output = HTML then
+          Printf.bprintf buf "Click this \\<a 
href=\\\"porttest\\\"\\>link\\</a\\> to see results"
+        else
+          Printf.bprintf buf "Test started, you need a HTML browser to display 
results";
+        ""
+    ) , ":\t\t\t\tstart network porttest";
+
     ]
 
 (*************************************************************************)

Index: src/daemon/driver/driverControlers.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/driver/driverControlers.ml,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -b -r1.86 -r1.87
--- src/daemon/driver/driverControlers.ml       19 Sep 2006 17:07:43 -0000      
1.86
+++ src/daemon/driver/driverControlers.ml       1 Oct 2006 17:53:59 -0000       
1.87
@@ -1489,6 +1489,25 @@
                 read_theme_page this_page else
               if !!html_mods then !!CommonMessages.download_html_js_mods0
               else !!CommonMessages.download_html_js_old)
+        | "porttest" ->
+           html_open_page buf t r true;
+           let age time =
+             Date.time_to_string (BasicSocket.last_time () - time) "verbose" in
+           networks_iter (fun n -> 
+             let result =
+               match network_porttest_result n with
+                 PorttestNotAvailable -> None
+               | PorttestNotStarted -> Some "porttest not started"
+               | PorttestInProgress time ->
+                   Some (Printf.sprintf "porttest started %s ago" (age time))
+               | PorttestResult (time, s) ->
+                   Some (Printf.sprintf "porttest finished %s ago, %s" (age 
time) s)
+             in
+             (match result with
+               None -> ()
+             | Some result ->
+                   Printf.bprintf buf "%s:<br> %s<br>\n" n.network_name 
result));
+                   Printf.bprintf buf "<br><br><a href=\"porttest\">Reload</a>"
         | cmd ->
             html_open_page buf t r true;
             Printf.bprintf buf "No page named %s" (html_escaped cmd)

Index: src/daemon/driver/driverInteractive.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/driver/driverInteractive.ml,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -b -r1.105 -r1.106
--- src/daemon/driver/driverInteractive.ml      25 Sep 2006 21:37:14 -0000      
1.105
+++ src/daemon/driver/driverInteractive.ml      1 Oct 2006 17:53:59 -0000       
1.106
@@ -1704,7 +1704,8 @@
       ( "0", "srh br", "Has search", "Search" ) ;
       ( "0", "srh br", "Has chat", "Chat" ) ;
       ( "0", "srh br", "Has rooms", "Rooms" ) ;
-      ( "0", "srh", "Has multinet", "Multinet" ) ]
+      ( "0", "srh", "Has multinet", "Multinet" ) ;
+      ( "0", "srh", "Has porttest", "Porttest" ) ]
 
 let print_network_modules buf o =
   let buf = o.conn_buf in
@@ -1719,6 +1720,10 @@
           if not (List.mem VirtualNetwork n.network_flags) then
             try
               let net_has e = if List.mem e n.network_flags then "yes" else "" 
in
+              let net_has_porttest () =
+               match network_porttest_result n with
+                 PorttestNotAvailable -> ""
+               | _ -> "yes" in
               Printf.bprintf buf "\\<tr class=\\\"dl-%d\\\"\\>" 
(html_mods_cntr ());
               html_mods_td buf [
                 ("", "sr br", n.network_name);
@@ -1729,7 +1734,8 @@
                 ("", "sr br", net_has NetworkHasSearch);
                 ("", "sr br", net_has NetworkHasChat);
                 ("", "sr br", net_has NetworkHasRooms);
-                ("", "sr"   , net_has NetworkHasMultinet); ];
+                ("", "sr br", net_has NetworkHasMultinet);
+                ("", "sr"   , (net_has_porttest ())); ];
               Printf.bprintf buf "\\</tr\\>";
             with _ -> ()
         );

Index: src/networks/bittorrent/bTInteractive.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/bittorrent/bTInteractive.ml,v
retrieving revision 1.113
retrieving revision 1.114
diff -u -b -r1.113 -r1.114
--- src/networks/bittorrent/bTInteractive.ml    1 Oct 2006 17:47:11 -0000       
1.113
+++ src/networks/bittorrent/bTInteractive.ml    1 Oct 2006 17:54:00 -0000       
1.114
@@ -52,6 +52,35 @@
 
 module VB = VerificationBitmap
 
+let porttest_result = ref PorttestNotStarted
+
+let interpret_azureus_porttest s =
+  let failure_message fmt = 
+    Printf.sprintf ("Port test failure, " ^^ fmt) in
+  try
+    let value = decode s in 
+    match value with
+    | Dictionary alist ->
+       (try
+          match List.assoc (String "result") alist with
+          | Int 1L -> "Port test OK!"
+          | Int 0L ->
+              (try
+                 match List.assoc (String "reason") alist with
+                 | String reason -> failure_message "%s" reason
+                 | _ -> raise Not_found
+               with Not_found ->
+                 failure_message "%s" "no reason given")
+          | Int status ->
+              failure_message "unknown status code (%Ld)" status
+          | _ -> raise Not_found
+        with Not_found ->
+          failure_message "%s" "no status given")
+    | _ ->
+       failure_message "unexpected value type %s" (Bencode.print value)
+  with _ ->
+    failure_message "%s" "broken bencoded value"
+
 exception Already_exists
 exception Torrent_can_not_be_used
 
@@ -1160,7 +1189,25 @@
     !!client_port, "client_port TCP";
     !!BTTracker.tracker_port, "tracker_port TCP";
     ]);
-
+  network.op_network_porttest_result <- (fun _ -> !porttest_result);
+  network.op_network_porttest_start <- (fun _ -> 
+      let module H = Http_client in
+      azureus_porttest_random := (Random.int 100000);
+      porttest_result := PorttestInProgress (last_time ());
+      let r = {
+          H.basic_request with
+          H.req_url =
+           Url.of_string (Printf.sprintf
+             
"http://azureus.aelitis.com/natcheck.php?port=%d&check=azureus_rand_%d";
+               !!client_port !azureus_porttest_random);
+          H.req_proxy = !CommonOptions.http_proxy;
+          H.req_user_agent = get_user_agent ();
+        } in
+      H.wget r (fun file ->
+       let result = interpret_azureus_porttest (File.to_string file) in
+       porttest_result := PorttestResult (last_time (), result)
+      )
+  );
   client_ops.op_client_info <- op_client_info;
   client_ops.op_client_connect <- op_client_connect;
   client_ops.op_client_disconnect <- op_client_disconnect;

Index: src/networks/bittorrent/bTProtocol.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/bittorrent/bTProtocol.ml,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- src/networks/bittorrent/bTProtocol.ml       23 Sep 2006 20:29:47 -0000      
1.26
+++ src/networks/bittorrent/bTProtocol.ml       1 Oct 2006 17:54:00 -0000       
1.27
@@ -231,6 +231,13 @@
 open AnyEndian
 open BTTypes
 
+let log_prefix = "[BT]"
+
+let lprintf_nl fmt =
+  lprintf_nl2 log_prefix fmt
+
+let azureus_porttest_random = ref 0
+
 type ghandler =
   BTHeader of (gconn -> TcpBufferedSocket.t ->
   (string * string * Sha1.t) -> unit)
@@ -542,6 +549,9 @@
               buf_used b (slen+29);
               h gconn sock (proto, rbits, file_id);
             end
+          else
+           if (String.sub b.buf b.pos (min b.len 100)) = "NATCHECK_HANDSHAKE" 
then
+               write_string sock (Printf.sprintf "azureus_rand_%d" 
!azureus_porttest_random)
           else if (TcpBufferedSocket.closed sock) then
               let (ip,port) = (TcpBufferedSocket.peer_addr sock) in
               lprintf_nl "bt-handshake: closed sock from %s:%d  b.len:%i 
slen:%i"

Index: src/networks/direct_connect/dcInteractive.ml
===================================================================
RCS file: 
/sources/mldonkey/mldonkey/src/networks/direct_connect/dcInteractive.ml,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- src/networks/direct_connect/dcInteractive.ml        5 Sep 2006 14:15:19 
-0000       1.27
+++ src/networks/direct_connect/dcInteractive.ml        1 Oct 2006 17:54:00 
-0000       1.28
@@ -380,6 +380,7 @@
     [
     !!dc_port, "client_port";
     ]);
+  network.op_network_porttest_result <- (fun _ -> PorttestNotAvailable);
   network.op_network_recover_temp <- (fun s -> ());
   network.op_network_load_complex_options <- (fun _ -> ());
   network.op_network_save_complex_options <- (fun _ -> ());

Index: src/networks/donkey/donkeyClient.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyClient.ml,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -b -r1.101 -r1.102
--- src/networks/donkey/donkeyClient.ml 25 Sep 2006 22:40:55 -0000      1.101
+++ src/networks/donkey/donkeyClient.ml 1 Oct 2006 17:54:00 -0000       1.102
@@ -2137,7 +2137,8 @@
   let module M = DonkeyProtoClient in
     
   if !verbose_msg_clients then begin
-      lprintf_nl "Message from incoming client";
+      lprintf_nl "Message from incoming client %s:%d"
+       (Ip.to_string (peer_ip sock)) (peer_port sock);
       M.print m;
     end;
 
@@ -2281,6 +2282,13 @@
       lprintf_nl "NewUserIDReq: "; M.print m; 
       None
   
+  | M.EmulePortTestReq t ->
+      porttest_sock := Some sock;
+      set_closer sock (fun _ _ -> porttest_sock := None);
+      set_lifetime sock 30.;
+      write_string sock (client_msg_to_string (emule_proto ()) m);
+      None
+
   | _ -> 
       if !verbose_unknown_messages then
         begin

Index: src/networks/donkey/donkeyGlobals.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyGlobals.ml,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -b -r1.99 -r1.100
--- src/networks/donkey/donkeyGlobals.ml        25 Sep 2006 22:40:55 -0000      
1.99
+++ src/networks/donkey/donkeyGlobals.ml        1 Oct 2006 17:54:00 -0000       
1.100
@@ -125,8 +125,6 @@
 let tag_server = 201
 let tag_file   = 202
 
-let page_size = 4096L
-
 let donkey_download_counter = ref Int64.zero
 let donkey_upload_counter = ref Int64.zero
 
@@ -184,7 +182,7 @@
 let master_server = ref (None: DonkeyTypes.server option)
 let udp_sock = ref (None: UdpSocket.t option)
 let listen_sock = ref (None : TcpServerSocket.t option)
-let reversed_sock = ref (None : TcpServerSocket.t option)
+let porttest_sock = ref (None : TcpBufferedSocket.t option)
 let new_shared = ref false
 
 (*************************************************************************)

Index: src/networks/donkey/donkeyInteractive.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyInteractive.ml,v
retrieving revision 1.127
retrieving revision 1.128
diff -u -b -r1.127 -r1.128
--- src/networks/donkey/donkeyInteractive.ml    23 Sep 2006 22:28:58 -0000      
1.127
+++ src/networks/donkey/donkeyInteractive.ml    1 Oct 2006 17:54:00 -0000       
1.128
@@ -60,8 +60,15 @@
 let _s x = _s "DonkeyInteractive" x
 let _b x = _b "DonkeyInteractive" x
 
+let porttest_result = ref PorttestNotStarted
+
 module VB = VerificationBitmap
 
+let log_prefix = "[EDK]"
+
+let lprintf_nl fmt =
+  lprintf_nl2 log_prefix fmt
+
 let result_name r =
   match r.result_names with
     [] -> None
@@ -1529,6 +1536,28 @@
   network.op_network_reset <- (fun _ -> ());
 
   network.op_network_close_search <- (fun s -> ());
+  network.op_network_porttest_start <- (fun _ ->
+    porttest_result := PorttestInProgress (last_time ());
+    let module H = Http_client in
+    let r = { H.basic_request with
+      H.req_url = Url.of_string
+        (Printf.sprintf 
"http://porttest.emule-project.net:81/ct_noframe.php?lang=&tcpport=%d&udpport=%d";
+          !!donkey_port (!!donkey_port + 4));
+      H.req_proxy = !CommonOptions.http_proxy;
+      H.req_max_retry = 10;
+      H.req_user_agent = get_user_agent () } in
+    H.wget r (fun file ->
+      Unix2.tryopen_read file (fun cin ->
+       try
+         while true do
+           let line = input_line cin in
+             try
+               if Str.string_match (Str.regexp "^<P>Testing IP") line 0 then
+                 porttest_result := PorttestResult (last_time (), line)
+             with _ -> ()
+         done
+       with End_of_file -> ())
+    ));
   network.op_network_forget_search <- forget_search
 
 (* emule<->mldonkey disconnects during chat, and this doesn't seem to auto 
reconnect

Index: src/networks/donkey/donkeyMain.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyMain.ml,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -b -r1.57 -r1.58
--- src/networks/donkey/donkeyMain.ml   5 Sep 2006 14:15:20 -0000       1.57
+++ src/networks/donkey/donkeyMain.ml   1 Oct 2006 17:54:00 -0000       1.58
@@ -118,10 +118,6 @@
         | Some sock -> 
             listen_sock := None;
             TcpServerSocket.close sock Closed_by_user);
-      (match !reversed_sock with None -> ()
-        | Some sock -> 
-            reversed_sock := None;
-            TcpServerSocket.close sock Closed_by_user);
       (match !udp_sock with None -> ()
         | Some sock -> 
             udp_sock := None;
@@ -392,6 +388,8 @@
     !overnet_port_info, "overnet_port TCP+UDP";
     !kademlia_port_info, "kademlia_port UDP";
     ]);
+  network.op_network_porttest_result <-
+    (fun _ -> !DonkeyInteractive.porttest_result);
   CommonInteractive.register_gui_options_panel "eDonkey" 
     gui_donkey_options_panel;
   CommonInteractive.register_gui_options_panel "Overnet" 

Index: src/networks/donkey/donkeyProtoClient.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoClient.ml,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- src/networks/donkey/donkeyProtoClient.ml    23 Sep 2006 20:29:47 -0000      
1.37
+++ src/networks/donkey/donkeyProtoClient.ml    1 Oct 2006 17:54:00 -0000       
1.38
@@ -1068,6 +1068,20 @@
   end
 
 
+module EmulePortTestReq = struct
+
+    type t = string
+
+    let print s =
+      lprintf_nl "Emule porttest request %s" (String.escaped s)
+
+    let parse s = s
+
+    let write buf =
+      buf_int8 buf 0x12
+
+  end
+
 type t =
 | ConnectReq of Connect.t
 | ConnectReplyReq of Connect.t
@@ -1111,6 +1125,7 @@
 | EmuleMultiPacketReq of Md4.t * t list
 | EmuleMultiPacketAnswerReq of Md4.t * t list
 | EmuleCompressedPart of Md4.t * int64 * int64 * string
+| EmulePortTestReq of EmulePortTestReq.t
 
 let rec print t =
   begin
@@ -1178,11 +1193,11 @@
         EmuleSignatureReq.print t
     | EmulePublicKeyReq t ->
         EmulePublicKeyReq.print t
-
     | EmuleCompressedPart (md4, statpos, newsize, bloc) ->
         lprintf_nl "EmuleCompressedPart for %s %Ld %Ld len %d"
           (Md4.to_string md4) statpos newsize (String.length bloc)
-
+    | EmulePortTestReq t ->
+        EmulePortTestReq.print t
     | UnknownReq (opcode, s) ->
         let len = String.length s in
         lprintf_nl "UnknownReq: magic (%d), opcode (%d) len (%d)" opcode 
@@ -1314,6 +1329,9 @@
         in
         EmuleMultiPacketAnswerReq (md4, iter s 17 len)
 
+    | 0xfe (* 254 *) ->
+        EmulePortTestReq s
+
     | code ->
         if !CommonOptions.verbose_unknown_messages then
           lprintf_nl "EDK: unknown eMule message %d" code;
@@ -1596,6 +1614,10 @@
         buf_int8 buf 0x85;
         EmulePublicKeyReq.write buf t
 
+    | EmulePortTestReq t ->
+        buf_int8 buf 0xfe;
+        EmulePortTestReq.write buf;
+
     | UnknownReq (opcode, s) ->
         Buffer.add_string buf s
 

Index: src/networks/donkey/donkeyProtoUdp.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoUdp.ml,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- src/networks/donkey/donkeyProtoUdp.ml       16 Jan 2006 16:05:14 -0000      
1.14
+++ src/networks/donkey/donkeyProtoUdp.ml       1 Oct 2006 17:54:00 -0000       
1.15
@@ -455,6 +455,7 @@
 | EmuleReaskAckUdpReq of Md4.t
 | EmuleFileNotFoundUdpReq
 | EmuleQueueFullUdpReq
+| EmulePortTestReq
 
 | UnknownUdpReq of int * string
 
@@ -484,6 +485,7 @@
     | 145 -> EmuleReaskAckUdpReq (get_md4 s 1)
 (*    | 146 -> EmuleFileNotFoundUdpReq *)
     | 147 -> EmuleQueueFullUdpReq
+    | 254 -> EmulePortTestReq
 
     | _ -> raise Exit
   with
@@ -524,6 +526,8 @@
         Printf.bprintf b "EmuleFileNotFoundUdpReq"
     | EmuleQueueFullUdpReq ->
         Printf.bprintf b "EmuleQueueFullUdpReq"
+    | EmulePortTestReq ->
+        Printf.bprintf b "EmulePortTestReq"
 
     | UnknownUdpReq (magic, s) ->
         Printf.bprintf b "UnknownReq magic %d\n" magic;
@@ -613,6 +617,14 @@
           buf_int8 buf 53;
           QueryIDReplyUdp.write buf t
 
+      | EmulePortTestReq ->
+         buf_int8 buf 2;
+         buf_int8 buf 0;
+         buf_int8 buf 0;
+         buf_int8 buf 0;
+         buf_int8 buf 0xfe;
+         buf_int8 buf 0x31
+
       | EmuleQueueFullUdpReq
       | EmuleFileNotFoundUdpReq
       | EmuleReaskAckUdpReq _

Index: src/networks/donkey/donkeyUdp.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyUdp.ml,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- src/networks/donkey/donkeyUdp.ml    1 Sep 2006 16:25:15 -0000       1.23
+++ src/networks/donkey/donkeyUdp.ml    1 Oct 2006 17:54:00 -0000       1.24
@@ -223,7 +223,7 @@
 
 let udp_client_handler t p =
   if !verbose_udp then
-    lprintf "Received UDP message:\n%s\n" (Udp.print t);
+    lprintf_nl "Received UDP message:\n%s" (Udp.print t);
 
   let udp_from_server p =
     match p.UdpSocket.udp_addr with
@@ -306,6 +306,15 @@
 
   | Udp.EmuleReaskFilePingUdpReq t -> ()
 
+  | Udp.EmulePortTestReq ->
+      (match !porttest_sock with
+       None -> ()
+      | Some sock ->
+         let s = Buffer.create 10 in
+         DonkeyProtoUdp.write s Udp.EmulePortTestReq;
+         TcpBufferedSocket.write_string sock (Buffer.contents s);
+         porttest_sock := None)
+
   | _ ->
       if !verbose_unexpected_messages then
         lprintf "Unexpected UDP message: %s\n"

Index: src/networks/fileTP/fileTPInteractive.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/fileTP/fileTPInteractive.ml,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -b -r1.49 -r1.50
--- src/networks/fileTP/fileTPInteractive.ml    25 Sep 2006 21:38:24 -0000      
1.49
+++ src/networks/fileTP/fileTPInteractive.ml    1 Oct 2006 17:54:00 -0000       
1.50
@@ -423,4 +423,5 @@
   network.op_network_forget_search <- (fun s -> ());
   network.op_network_connect_servers <- (fun s -> ());
   network.op_network_reset <- (fun _ -> ());
+  network.op_network_porttest_result <- (fun _ -> PorttestNotAvailable);
   network.op_network_recover_temp <- (fun s -> ())

Index: src/networks/gnutella/gnutellaInteractive.ml
===================================================================
RCS file: 
/sources/mldonkey/mldonkey/src/networks/gnutella/gnutellaInteractive.ml,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -b -r1.65 -r1.66
--- src/networks/gnutella/gnutellaInteractive.ml        23 Sep 2006 22:26:38 
-0000      1.65
+++ src/networks/gnutella/gnutellaInteractive.ml        1 Oct 2006 17:54:00 
-0000       1.66
@@ -219,6 +219,7 @@
     [
     !!client_port, "client_port TCP+UDP";
     ]);
+  network.op_network_porttest_result <- (fun _ -> PorttestNotAvailable);
   network.op_network_share <- (fun fullname codedname size ->
       (*
       lprintf "*************** op_network_share %s\n

Index: src/networks/opennap/opennapInteractive.ml
===================================================================
RCS file: 
/sources/mldonkey/mldonkey/src/networks/opennap/opennapInteractive.ml,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- src/networks/opennap/opennapInteractive.ml  5 Sep 2006 14:15:20 -0000       
1.25
+++ src/networks/opennap/opennapInteractive.ml  1 Oct 2006 17:54:00 -0000       
1.26
@@ -241,6 +241,7 @@
     [
     !!client_port, "client_port TCP";
     ]);
+  network.op_network_porttest_result <- (fun _ -> PorttestNotAvailable);
 
   network.op_network_recover_temp <- (fun s -> ());
 

Index: src/networks/soulseek/slskInteractive.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/soulseek/slskInteractive.ml,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- src/networks/soulseek/slskInteractive.ml    5 Sep 2006 14:15:20 -0000       
1.23
+++ src/networks/soulseek/slskInteractive.ml    1 Oct 2006 17:54:00 -0000       
1.24
@@ -182,6 +182,7 @@
 
 let _ =
   network.op_network_ports <- (fun _ -> []);
+  network.op_network_porttest_result <- (fun _ -> PorttestNotAvailable);
   network.op_network_recover_temp <- (fun s -> ());
   network.op_network_load_complex_options <- (fun _ -> ());
   network.op_network_download <- (fun r ->




reply via email to

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