[freenet-dev] [freenet-cvs] r16398 - trunk/freenet/src/freenet/node

Matthew Toseland toad at amphibian.dyndns.org
Sat Dec 8 13:05:11 UTC 2007


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 : http://emu.freenetproject.org/pipermail/devl/attachments/20071208/ab59fa3e/attachment.pgp 


More information about the Devl mailing list