Author: toad
Date: 2007-12-04 18:52:54 +0000 (Tue, 04 Dec 2007)
New Revision: 16277

Modified:
   trunk/freenet/src/freenet/node/AnnounceSender.java
Log:
Fix some more announcee-side NPEs

Modified: trunk/freenet/src/freenet/node/AnnounceSender.java
===================================================================
--- trunk/freenet/src/freenet/node/AnnounceSender.java  2007-12-04 18:47:53 UTC 
(rev 16276)
+++ trunk/freenet/src/freenet/node/AnnounceSender.java  2007-12-04 18:52:54 UTC 
(rev 16277)
@@ -63,8 +63,10 @@
                } catch (Throwable t) {
                        Logger.error(this, "Caught "+t+" announcing "+uid+" 
from "+source, t);
                } finally {
-                       source.completedAnnounce(uid);
-                       source.node.completed(uid);
+                       if(source != null) {
+                               source.completedAnnounce(uid);
+                       }
+                       node.completed(uid);
                }
        }

@@ -178,7 +180,7 @@

                if(msg.getSpec() == DMT.FNPOpennetNoderefRejected) {
                        int reason = msg.getInt(DMT.REJECT_CODE);
-                       Logger.normal(this, "Announce rejected by "+source+" : 
"+DMT.getOpennetRejectedCode(reason));
+                       Logger.normal(this, "Announce rejected by "+next+" : 
"+DMT.getOpennetRejectedCode(reason));
                        msg = null;
                        break;
                }
@@ -321,30 +323,36 @@

        private void timedOut(PeerNode next) {
                Message msg = DMT.createFNPRejectedOverload(uid, false);
-               try {
-                       source.sendAsync(msg, null, 0, this);
-               } catch (NotConnectedException e) {
-                       // Ok
+               if(source != null) {
+                       try {
+                               source.sendAsync(msg, null, 0, this);
+                       } catch (NotConnectedException e) {
+                               // Ok
+                       }
                }
                if(cb != null) cb.nodeFailed(next, "timed out");
        }

        private void rnf(PeerNode next) {
                Message msg = DMT.createFNPRouteNotFound(uid, htl);
-               try {
-                       source.sendAsync(msg, null, 0, this);
-               } catch (NotConnectedException e) {
-                       // Ok
+               if(source != null) {
+                       try {
+                               source.sendAsync(msg, null, 0, this);
+                       } catch (NotConnectedException e) {
+                               // Ok
+                       }
                }
                if(cb != null) cb.nodeFailed(next, "route not found");
        }

        private void complete() {
                Message msg = DMT.createFNPOpennetAnnounceCompleted(uid);
-               try {
-                       source.sendAsync(msg, null, 0, this);
-               } catch (NotConnectedException e) {
-                       // Oh well.
+               if(source != null) {
+                       try {
+                               source.sendAsync(msg, null, 0, this);
+                       } catch (NotConnectedException e) {
+                               // Oh well.
+                       }
                }
        }



Reply via email to