From e2beaf39c68a46161be96214e7f54c39e26b8fd8 Mon Sep 17 00:00:00 2001 From: ygrek Date: Sat, 27 Mar 2010 23:35:30 +0200 Subject: [PATCH] debug udp --- src/networks/bittorrent/bTClients.ml | 6 +++--- src/utils/net/udpSocket.ml | 27 +++++++++++++++++++++------ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/networks/bittorrent/bTClients.ml b/src/networks/bittorrent/bTClients.ml index f82acc89..e404ff05 100644 --- a/src/networks/bittorrent/bTClients.ml +++ b/src/networks/bittorrent/bTClients.ml @@ -126,7 +126,7 @@ let talk_to_udp_tracker host port args file t need_sources = let ip = Ip.of_inet_addr addr in lprintf_nl "udpt resolved to ip %s" (Ip.to_string ip); let socket = create Unix.inet_addr_any 0 (fun sock event -> -(* lprintf_nl "udpt got event %s for %s" (string_of_event event) host *) + lprintf_nl "udpt got event %s for %s" (string_of_event event) host match event with | WRITE_DONE | CAN_REFILL -> () | READ_DONE -> assert false (* set_reader prevents this *) @@ -135,8 +135,8 @@ let talk_to_udp_tracker host port args file t need_sources = | CAN_READ | CAN_WRITE -> assert false (* udpSocket implementation prevents this *) | LTIMEOUT | WTIMEOUT | RTIMEOUT -> close sock (Closed_for_error "udpt timeout")) in - BasicSocket.set_wtimeout (sock socket) 120.; - BasicSocket.set_rtimeout (sock socket) 120.; + BasicSocket.set_wtimeout (sock socket) 5.; + BasicSocket.set_rtimeout (sock socket) 5.; let txn = Random.int32 Int32.max_int in lprintf_nl "udpt txn %ld for %s" txn host; write socket false (connect_request txn) ip port; diff --git a/src/utils/net/udpSocket.ml b/src/utils/net/udpSocket.ml index d4c5686a..b30282e8 100644 --- a/src/utils/net/udpSocket.ml +++ b/src/utils/net/udpSocket.ml @@ -202,7 +202,7 @@ let print_addr addr = let max_delayed_send = 1 let write t ping s ip port = -(* lprintf_nl "UDP write to %s:%d" (Ip.to_string ip) port; *) + lprintf_nl "UDP write %d bytes to %s:%d" (String.length s) (Ip.to_string ip) port; if not (closed t) && t.wlist_size < !max_wlist_size then let s, addr = match t.socks_local with None -> s, Unix.ADDR_INET(Ip.to_inet_addr ip, port) @@ -219,17 +219,19 @@ let write t ping s ip port = in match t.write_controler with None -> + lprintf_nl "UDP no write controller"; if not (PacketSet.is_empty t.wlist) then begin let sock = sock t in try let len = String.length s in - let _ = + let () = try if ping then declare_ping ip; ignore(Unix.sendto (fd sock) s 0 len [] addr); - if !verbose_bandwidth > 1 then begin +(* if !verbose_bandwidth > 1 then *) + begin lprintf_nl "[BW2] direct send udp %d bytes (write)" len; end; with e -> @@ -244,6 +246,7 @@ lprintf_nl "UDP sent [%s]" (String.escaped *) with Unix.Unix_error ((Unix.EWOULDBLOCK | Unix.ENOBUFS), _, _) -> + lprintf_nl "UDP err, queue"; t.wlist <- PacketSet.add (0, { udp_ping = ping; udp_content = s ; @@ -258,6 +261,7 @@ lprintf_nl "UDP sent [%s]" (String.escaped raise e end else begin + lprintf_nl "UDP queue (wlist_size %d)" t.wlist_size; t.wlist <- PacketSet.add (0, { udp_ping = ping; udp_content = s ; @@ -269,6 +273,7 @@ lprintf_nl "UDP sent [%s]" (String.escaped | Some bc -> begin + lprintf_nl "UDP with bontroller, queue (wlist_size %d)" t.wlist_size; t.wlist <- PacketSet.add (bc.base_time + max_delayed_send, { udp_ping = ping; udp_content = s; @@ -287,6 +292,7 @@ let dummy_sock = Obj.magic 0 let read_buf = String.create 66000 let rec iter_write_no_bc t sock = + lprintf_nl "UDP iter_write_no_bc (wlist_size %d)" t.wlist_size; let (time,p) = PacketSet.min_elt t.wlist in t.wlist <- PacketSet.remove (time,p) t.wlist; t.wlist_size <- t.wlist_size - String.length p.udp_content; @@ -294,7 +300,8 @@ let rec iter_write_no_bc t sock = begin try ignore (local_sendto (fd sock) p); udp_uploaded_bytes := !udp_uploaded_bytes ++ (Int64.of_int len); - if !verbose_bandwidth > 1 then begin +(* if !verbose_bandwidth > 1 then *) + begin lprintf_nl "[BW2] direct send udp %d bytes (iter_write_no_bc)" len; end with @@ -312,10 +319,12 @@ let iter_write_no_bc t sock = try iter_write_no_bc t sock with - Unix.Unix_error ((Unix.EWOULDBLOCK | Unix.ENOBUFS), _, _) -> + Unix.Unix_error ((Unix.EWOULDBLOCK | Unix.ENOBUFS), _, _) -> + lprintf_nl "UDP iter_write_no_bc err, must_write"; must_write t.sock true let rec iter_write t sock bc = + lprintf_nl "UDP iter_write (wlist_size %d)" t.wlist_size; if bc.total_bytes = 0 || bc.remaining_bytes > 0 then let _ = () in let (time,p) = PacketSet.min_elt t.wlist in @@ -334,7 +343,8 @@ let rec iter_write t sock bc = bc.remaining_bytes <- bc.remaining_bytes - (len + !TcpBufferedSocket.ip_packet_size) ; TcpBufferedSocket.register_bytes (Some bc.tcp_bc) len; - if !verbose_bandwidth > 1 then begin +(* if !verbose_bandwidth > 1 then *) + begin lprintf_nl "[BW2] bc send udp %d bytes" len; end; with @@ -377,6 +387,7 @@ let udp_handler t sock event = | CAN_WRITE -> begin + lprintf_nl "UDP CAN_WRITE"; try match t.write_controler with None -> @@ -384,11 +395,15 @@ let udp_handler t sock event = | Some bc -> iter_write t sock bc with Not_found -> + lprintf_nl "UDP CAN_WRITE Not_found must_write false"; must_write t.sock false end; + lprintf_nl "UDP CAN_WRITE done"; if not (closed t) then begin + lprintf_nl "UDP run CAN_REFILL"; t.event_handler t CAN_REFILL; if PacketSet.is_empty t.wlist then begin + lprintf_nl "UDP packetset empty"; must_write t.sock false; t.event_handler t WRITE_DONE end -- 2.11.4.GIT