IMHO the (once) check should in fact be in applyByteCounts().
On Friday 07 December 2007 21:11, you wrote:
> Author: robert
> Date: 2007-12-07 21:11:20 +0000 (Fri, 07 Dec 2007)
> New Revision: 16398
>
> Modified:
> trunk/freenet/src/freenet/node/RequestHandler.java
> Log:
> fixup opennet byte counts and (once) check (errors from r16372)
>
>
> Modified: trunk/freenet/src/freenet/node/RequestHandler.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/RequestHandler.java 2007-12-07
> 18:52:29
UTC (rev 16397)
> +++ trunk/freenet/src/freenet/node/RequestHandler.java 2007-12-07
> 21:11:20
UTC (rev 16398)
> @@ -152,8 +152,9 @@
> status = RequestSender.SUCCESS;
> // We've fetched it from our datastore, so there won't
> be a
downstream noderef.
> // But we want to send at least an
> FNPOpennetCompletedAck,
otherwise the request source
> - // may have to timeout waiting for one.
> + // may have to timeout waiting for one. That will be
> the
terminal message.
> finishOpennetNoRelay();
> + } else {
> //also for byte logging, since the block is
the 'terminal' message.
> applyByteCounts();
> }
> @@ -191,15 +192,16 @@
> BlockTransmitter bt =
> new BlockTransmitter(node.usm, source, uid, prb,
node.outputThrottle, this);
> node.addTransferringRequestHandler(uid);
> - if(!bt.send(node.executor)){
> - finalTransferFailed = true;
> - } else {
> + if(bt.send(node.executor)) {
> + status = rs.getStatus();
> // Successful CHK transfer, maybe path fold
> finishOpennetChecked();
> - }
> - status = rs.getStatus();
> - //for byte logging, since the block is the 'terminal'
message.
> - applyByteCounts();
> + } else {
> + finalTransferFailed = true;
> + status = rs.getStatus();
> + //for byte logging, since the block is
> the 'terminal' message.
> + applyByteCounts();
> + }
> return;
> }
>
> @@ -309,6 +311,7 @@
> //For byte counting, this relies on the fact that the callback
will only be excuted once. This check might be paranoid.
> if (once) {
> applyByteCounts();
> + once=false;
> } else {
> Logger.error(this, "terminalMessage sent multiple times?
for " + RequestHandler.this);
> }
> @@ -320,39 +323,35 @@
> * or wait for a noderef and relay it and wait for a response and relay
that,
> * or send our own noderef and wait for a response and add that.
> */
> - private void finishOpennetChecked() {
> + private void finishOpennetChecked() throws NotConnectedException {
> OpennetManager om = node.getOpennet();
> if(om != null &&
> (node.passOpennetRefsThroughDarknet() ||
> source.isOpennet()) &&
> - finishOpennetInner(om))
> + finishOpennetInner(om)) {
> + applyByteCounts();
> return;
> + }
>
> Message msg = DMT.createFNPOpennetCompletedAck(uid);
> - try {
> - source.sendAsync(msg, null, 0, this);
> - } catch (NotConnectedException e) {
> - // Oh well...
> - }
> + sendTerminal(msg);
> }
>
> /**
> * There is no noderef to pass downstream. If we want a connection,
> send
our
> * noderef and wait for a reply, otherwise just send an ack.
> */
> - private void finishOpennetNoRelay() {
> + private void finishOpennetNoRelay() throws NotConnectedException {
> OpennetManager om = node.getOpennet();
>
> if(om != null && (source.isOpennet() ||
node.passOpennetRefsThroughDarknet()) &&
> - finishOpennetNoRelayInner(om))
> + finishOpennetNoRelayInner(om)) {
> + applyByteCounts();
> return;
> + }
>
> // Otherwise just ack it.
> Message msg = DMT.createFNPOpennetCompletedAck(uid);
> - try {
> - source.sendAsync(msg, null, 0, this);
> - } catch (NotConnectedException e) {
> - // Oh well...
> - }
> + sendTerminal(msg);
> }
>
> private boolean finishOpennetInner(OpennetManager om) {
>
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
>
>
-------------- 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/20071208/ab59fa3e/attachment.pgp>