[freenet-cvs] r17500 - trunk/freenet/src/freenet/node

toad at freenetproject.org toad at freenetproject.org
Sun Feb 3 00:17:29 UTC 2008


Author: toad
Date: 2008-02-03 00:17:28 +0000 (Sun, 03 Feb 2008)
New Revision: 17500

Modified:
   trunk/freenet/src/freenet/node/RequestHandler.java
   trunk/freenet/src/freenet/node/RequestSender.java
Log:
Prevent NPE

Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java	2008-02-03 00:12:44 UTC (rev 17499)
+++ trunk/freenet/src/freenet/node/RequestHandler.java	2008-02-03 00:17:28 UTC (rev 17500)
@@ -229,7 +229,7 @@
 		
 		if (now > responseDeadline) {
 			// Offer the data if there is any.
-    		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, null, -1, System.currentTimeMillis());
+    		node.failureTable.onFailure(key, htl, sourceAsArray(), 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();
@@ -331,7 +331,12 @@
 		}
 	}
 
-    /**
+    private PeerNode[] sourceAsArray() {
+    	if(source == null) return null;
+    	else return new PeerNode[] { source };
+	}
+
+	/**
      * Return data from the datastore.
      * @param block The block we found in the datastore.
      * @throws NotConnectedException If we lose the connected to the request source.

Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java	2008-02-03 00:12:44 UTC (rev 17499)
+++ trunk/freenet/src/freenet/node/RequestSender.java	2008-02-03 00:17:28 UTC (rev 17500)
@@ -271,7 +271,7 @@
                 			} catch (KeyVerifyException e1) {
                 				Logger.normal(this, "Got data but verify failed: "+e1, e1);
                 				finish(GET_OFFER_VERIFY_FAILURE, pn, true);
-                        		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, pn, -1, System.currentTimeMillis());
+                        		node.failureTable.onFailure(key, htl, sourceAsArray(), pn, -1, System.currentTimeMillis());
                         		offers.deleteLastOffer();
                 				return;
                 			}
@@ -283,7 +283,7 @@
 							else
 								Logger.error(this, "Transfer failed ("+e.getReason()+"/"+RetrievalException.getErrString(e.getReason())+"): "+e, e);
                 			finish(GET_OFFER_TRANSFER_FAILED, pn, true);
-                    		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, pn, -1, System.currentTimeMillis());
+                    		node.failureTable.onFailure(key, htl, sourceAsArray(), pn, -1, System.currentTimeMillis());
                     		offers.deleteLastOffer();
                 			return;
                 		}
@@ -380,7 +380,7 @@
             	// This used to be RNF, I dunno why
 				//???: finish(GENERATED_REJECTED_OVERLOAD, null);
                 finish(DATA_NOT_FOUND, null, false);
-        		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, null, FailureTable.REJECT_TIME, System.currentTimeMillis());
+        		node.failureTable.onFailure(key, htl, sourceAsArray(), null, FailureTable.REJECT_TIME, System.currentTimeMillis());
                 return;
             }
 
@@ -395,7 +395,7 @@
 					Logger.minor(this, "no more peers, but overloads ("+rejectOverloads+"/"+routeAttempts+" overloaded)");
                 // Backtrack
                 finish(ROUTE_NOT_FOUND, null, false);
-        		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, null, -1, System.currentTimeMillis());
+        		node.failureTable.onFailure(key, htl, sourceAsArray(), null, -1, System.currentTimeMillis());
                 return;
             }
 			
@@ -547,7 +547,7 @@
             		next.localRejectedOverload("FatalTimeout");
             		forwardRejectedOverload();
             		finish(TIMED_OUT, next, false);
-            		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, next, -1, System.currentTimeMillis());
+            		node.failureTable.onFailure(key, htl, sourceAsArray(), next, -1, System.currentTimeMillis());
             		return;
             	}
 				
@@ -558,7 +558,7 @@
             	if(msg.getSpec() == DMT.FNPDataNotFound) {
             		next.successNotOverload();
             		finish(DATA_NOT_FOUND, next, false);
-            		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, next, FailureTable.REJECT_TIME, System.currentTimeMillis());
+            		node.failureTable.onFailure(key, htl, sourceAsArray(), next, FailureTable.REJECT_TIME, System.currentTimeMillis());
             		return;
             	}
             	
@@ -620,7 +620,7 @@
             		// If there is, we will avoid sending requests for the specified period.
             		// FIXME we need to create the FT entry.
            			finish(RECENTLY_FAILED, next, false);
-            		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, next, timeLeft, System.currentTimeMillis());
+            		node.failureTable.onFailure(key, htl, sourceAsArray(), next, timeLeft, System.currentTimeMillis());
             		return;
             	}
             	
@@ -686,7 +686,7 @@
                 			} catch (KeyVerifyException e1) {
                 				Logger.normal(this, "Got data but verify failed: "+e1, e1);
                 				finish(VERIFY_FAILURE, next, false);
-                        		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, next, -1, System.currentTimeMillis());
+                        		node.failureTable.onFailure(key, htl, sourceAsArray(), next, -1, System.currentTimeMillis());
                 				return;
                 			}
                 			finish(SUCCESS, next, false);
@@ -697,7 +697,7 @@
 							else
 								Logger.error(this, "Transfer failed ("+e.getReason()+"/"+RetrievalException.getErrString(e.getReason())+"): "+e, e);
                 			finish(TRANSFER_FAILED, next, false);
-                    		node.failureTable.onFailure(key, htl, new PeerNode[] { source }, next, -1, System.currentTimeMillis());
+                    		node.failureTable.onFailure(key, htl, sourceAsArray(), next, -1, System.currentTimeMillis());
                 			return;
                 		}
                 	} finally {
@@ -759,7 +759,12 @@
         }
 	}
 
-    /**
+    private PeerNode[] sourceAsArray() {
+    	if(source == null) return null;
+    	else return new PeerNode[] { source };
+	}
+
+	/**
      * Finish fetching an SSK. We must have received the data, the headers and the pubkey by this point.
      * @param next The node we received the data from.
      */




More information about the cvs mailing list