I think this is a more complicated case than this solution provides. With reasonable frequency we will incur a success (just too late). In which case, will adding a failure table entry notice that?
Maybe it should be closer too: if (success) send offer?; else addToFailureTable; -- Robert Hailey On Feb 2, 2008, at 10:25 AM, toad at freenetproject.org wrote: > Author: toad > Date: 2008-02-02 16:25:41 +0000 (Sat, 02 Feb 2008) > New Revision: 17473 > > Modified: > trunk/freenet/src/freenet/node/RequestHandler.java > Log: > If a request takes so long that the predecessor times out, but we do > eventually get the data, we need to offer it to the predecessor > through ULPRs. > > Modified: trunk/freenet/src/freenet/node/RequestHandler.java > =================================================================== > --- trunk/freenet/src/freenet/node/RequestHandler.java 2008-02-02 > 16:06:24 UTC (rev 17472) > +++ trunk/freenet/src/freenet/node/RequestHandler.java 2008-02-02 > 16:25:41 UTC (rev 17473) > @@ -228,6 +228,8 @@ > this.status=status; > > if (now > responseDeadline) { > + // Offer the data if there is any. > + node.failureTable.onFailure(key, htl, new PeerNode[] > { source }, null, -1, System.currentTimeMillis()); > Logger.error(this, "requestsender took too long to > respond to > requestor ("+TimeUtil.formatTime((now - searchStartTime), 2, true) > +"/"+rs.getStatusString()+")"); > applyByteCounts(); > unregisterRequestHandlerWithNode(); >