mldonkey-commits
[Top][All Lists]
Advanced

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

[Mldonkey-commits] Changes to mldonkey/src/networks/donkey/donkeyOvernet


From: mldonkey-commits
Subject: [Mldonkey-commits] Changes to mldonkey/src/networks/donkey/donkeyOvernet.ml
Date: Thu, 04 Aug 2005 17:41:15 -0400

Index: mldonkey/src/networks/donkey/donkeyOvernet.ml
diff -u mldonkey/src/networks/donkey/donkeyOvernet.ml:1.40 
mldonkey/src/networks/donkey/donkeyOvernet.ml:1.41
--- mldonkey/src/networks/donkey/donkeyOvernet.ml:1.40  Mon Aug  1 20:26:06 2005
+++ mldonkey/src/networks/donkey/donkeyOvernet.ml       Thu Aug  4 21:41:15 2005
@@ -311,7 +311,7 @@
     open Proto
 
     let lprintf_nl () =
-      lprintf "%s[%s]: "
+      lprintf "%s[%s] "
       (log_time ())
       (if Proto.redirector_section = "DKKO" then "Overnet" else "Kademlia"); 
lprintf_nl2
 
@@ -914,9 +914,30 @@
   match t with
 
   | OvernetConnect p ->
-      new_peer_message p;
-      let p = new_peer p in
-      udp_send p (OvernetConnectReply (get_any_peers 20))
+      let rec send p =
+        new_peer_message p;
+        let p = new_peer p in
+          udp_send p (OvernetConnectReply (get_any_peers 20))
+      in
+       if Ip.valid p.peer_ip && ip_reachable p.peer_ip && p.peer_port <> 0 then
+         send p
+       else
+         if Ip.valid other_ip && ip_reachable other_ip && other_port <> 0 then
+           begin
+             if !verbose_overnet then
+               lprintf_nl () "Connect: convert address %s:%d to %s:%d"
+                 (Ip.to_string p.peer_ip) p.peer_port (Ip.to_string other_ip) 
other_port;
+             p.peer_ip <- other_ip;
+             p.peer_port <- other_port;
+             send p
+           end
+         else
+           begin
+             if !verbose_overnet then
+               lprintf_nl () "Connect: invalid IP %s:%d received from %s:%d"
+                 (Ip.to_string p.peer_ip) p.peer_port (Ip.to_string other_ip) 
other_port;
+             failwith "Message not understood"
+           end
 
   | OvernetConnectReply ps ->
       UdpSocket.declare_pong other_ip;
@@ -937,9 +958,30 @@
       iter ps;
 
   | OvernetPublicize p ->
-      new_peer_message p;
-      let p = new_peer p in
-      udp_send p  (OvernetPublicized (Some (my_peer ())))
+      let rec send p =
+        new_peer_message p;
+        let p = new_peer p in
+         udp_send p (OvernetPublicized (Some (my_peer ())))
+      in
+       if Ip.valid p.peer_ip && ip_reachable p.peer_ip && p.peer_port <> 0 then
+         send p
+       else
+         if Ip.valid other_ip && ip_reachable other_ip && other_port <> 0 then
+           begin
+             if !verbose_overnet then
+               lprintf_nl () "Publicize: convert address %s:%d to %s:%d"
+                 (Ip.to_string p.peer_ip) p.peer_port (Ip.to_string other_ip) 
other_port;
+             p.peer_ip <- other_ip;
+             p.peer_port <- other_port;
+             send p
+           end
+         else
+           begin
+             if !verbose_overnet then
+               lprintf_nl () "Publicize: invalid IP %s:%d received from %s:%d"
+                 (Ip.to_string p.peer_ip) p.peer_port (Ip.to_string other_ip) 
other_port;
+             failwith "Message not understood"
+           end
 
   | OvernetPublicized None ->
       ()




reply via email to

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