On Friday 14 March 2008 20:35, Robert Hailey wrote: > > On Mar 14, 2008, at 12:30 PM, Matthew Toseland wrote: > > > On Friday 14 March 2008 15:40, Robert Hailey wrote: > >> > >> [...] > >> > >> Unless I read this wrong you have inverted the return value > >> (isLocalAddress()==!shouldThrottle()), but did not negate the > >> condition where it is used. > >> > >> The code in PacketThrottle now reads: > >> > >> if (should NOT throttle) { > >> log("throttling"); > >> ... > >> } > > > > You're right... I don't understand why the simulation worked in that > > case... > > Well... the real problem would have been if it had got to the live > network (no throttling where it needs it), in the sim it was just > throttling where it didn't need to. > > Along the same lines... shouldn't we not report that they have already > been reported? Unless this is how we get fast local transfers in the > first place (mis-reporting). Something like this:
Fair point... but if it's not throttled, we shouldn't report it at all, even in sendAsync()... so the fix is a bit deeper... Let me know if you need me to deal with it. > > Index: src/freenet/io/xfer/PacketThrottle.java > =================================================================== > --- src/freenet/io/xfer/PacketThrottle.java (revision 18536) > +++ src/freenet/io/xfer/PacketThrottle.java (working copy) > @@ -210,15 +210,17 @@ > Logger.minor(this, "Congestion control wait time: > "+waitTime+" > for "+this); > MyCallback callback = new MyCallback(); > try { > + int alreadyReportedBytes=0; > if(((PeerNode)peer).shouldThrottle()) { > if(logMINOR) Logger.minor(this, "Throttling > "+peer.shortToString()+" : "+packetSize+" for "+this); > long startTime = System.currentTimeMillis(); > overallThrottle.blockingGrab(packetSize); > + alreadyReportedBytes=packetSize; > long delayTime = System.currentTimeMillis() - > startTime; > > ((PeerNode)peer).reportThrottledPacketSendTime(delayTime); > } else if(logMINOR) > Logger.minor(this, "Not throttling > "+peer.shortToString()+" for > "+this); > - peer.sendAsync(msg, callback, packetSize, ctr); > + peer.sendAsync(msg, callback, alreadyReportedBytes, > ctr); > } catch (RuntimeException e) { > callback.fatalError(); > throw e; > > -- > Robert Hailey > > -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20080315/ac22b0b0/attachment.pgp>