Ouch ... does that mean we always timeout?! In fact, surely the below will NPE 
if sender == null?

On Thursday 20 December 2007 20:17, robert at freenetproject.org wrote:
> Author: robert
> Date: 2007-12-20 20:17:52 +0000 (Thu, 20 Dec 2007)
> New Revision: 16754
> 
> Modified:
>    trunk/freenet/src/freenet/node/InsertHandler.java
> Log:
> send positive transfer notice if we are the end of the chain
> 
> 
> Modified: trunk/freenet/src/freenet/node/InsertHandler.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/InsertHandler.java 2007-12-20 20:03:35 
UTC (rev 16753)
> +++ trunk/freenet/src/freenet/node/InsertHandler.java 2007-12-20 20:17:52 
UTC (rev 16754)
> @@ -319,7 +319,10 @@
>               sentCompletion = true;
>          }
>          
> +             Message m=null;
> +             
>          if((sender != null) && (!sentCompletionWasSet)) {
> +                     //If there are downstream senders, our final success 
> report depends on 
there being no timeouts in the chain.
>               while(true) {
>                       synchronized(sender) {
>                               if(sender.completed()) {
> @@ -333,16 +336,23 @@
>                       }
>               }
>               boolean failed = sender.anyTransfersFailed();
> -             Message m = DMT.createFNPInsertTransfersCompleted(uid, failed);
> +             m = DMT.createFNPInsertTransfersCompleted(uid, failed);
> +             }
> +             
> +             if((sender == null) && (!sentCompletionWasSet) && (canCommit)) {
> +                     //There are no downstream senders, but we stored the 
> data locally, 
report successful transfer.
> +                     //Note that this is done even if the verify fails.
> +                     m = DMT.createFNPInsertTransfersCompleted(uid, false /* 
> no timeouts */);
> +             }               
> +             
>               try {
>                       source.sendSync(m, this);
> -                     if(logMINOR) Logger.minor(this, "Sent completion: 
> "+failed+" 
for "+this);
> +                     if(logMINOR) Logger.minor(this, "Sent completion: "+m+" 
for "+this);
>               } catch (NotConnectedException e1) {
>                       if(logMINOR) Logger.minor(this, "Not connected: 
> "+source+" 
for "+this);
>                       // May need to commit anyway...
>               }
> -        }
> -        
> +                     
>          if(code != CHKInsertSender.TIMED_OUT && code != 
CHKInsertSender.GENERATED_REJECTED_OVERLOAD && 
>                       code != CHKInsertSender.INTERNAL_ERROR && code != 
CHKInsertSender.ROUTE_REALLY_NOT_FOUND &&
>                       code != CHKInsertSender.RECEIVE_FAILED && 
> !receiveFailed()) {
> @@ -383,7 +393,7 @@
>                  toSend = DMT.createFNPDataInsertRejected(uid, 
DMT.DATA_INSERT_REJECTED_VERIFY_FAILED);
>              } catch (AbortedException e) {
>               Logger.error(this, "Receive failed: "+e);
> -             // Receiver thread will handle below
> +             // Receiver thread (below) will handle sending the failure 
notice
>              }
>          }
>          if(toSend != null) {
> 
> _______________________________________________
> 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/20071221/f13d3eb5/attachment.pgp>

Reply via email to