Author: toad
Date: 2006-09-28 15:58:49 +0000 (Thu, 28 Sep 2006)
New Revision: 10541

Modified:
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
Better error handling when we fail to add a ref AND always set the end marker 
to End.
(Means stuff pasted from IRC will no longer fail to verify).

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2006-09-28 15:57:46 UTC 
(rev 10540)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2006-09-28 15:58:49 UTC 
(rev 10541)
@@ -405,12 +405,19 @@
                fs.removeValue("sig"); 
                if(!fromLocal){
                        try{
+                               boolean failed = false;
                                if(signature == null || peerCryptoGroup == null 
|| peerPubKey == null || 
-                                               !DSA.verify(peerPubKey, new 
DSASignature(signature), new 
BigInteger(md.digest(fs.toOrderedString().getBytes("UTF-8"))))){
-                                       Logger.error(this, "The integrity of 
the reference has been compromized!");
+                                               (failed = 
!DSA.verify(peerPubKey, new DSASignature(signature), new 
BigInteger(md.digest(fs.toOrderedString().getBytes("UTF-8")))))){
+                                       String errCause = new String();
+                                       if(signature == null) errCause += " (No 
signature)";
+                                       if(peerCryptoGroup == null) errCause += 
" (No peer crypto group)";
+                                       if(peerPubKey == null) errCause += " 
(No peer public key)";
+                                       if(failed) errCause += " (VERIFICATION 
FAILED)";
+                                       Logger.error(this, "The integrity of 
the reference has been compromized!"+errCause);
                                        this.isSignatureVerificationSuccessfull 
= false;
+                                       fs.put("sig", signature);
                                        
if(Version.getArbitraryBuildNumber(version)>970) // TODO: REMOVE: the backward 
compat. kludge : version checking
-                                               throw new 
ReferenceSignatureVerificationException("The integrity of the reference has 
been compromized!");
+                                               throw new 
ReferenceSignatureVerificationException("The integrity of the reference has 
been compromized!"+errCause);
                                }else
                                        this.isSignatureVerificationSuccessfull 
= true;
                        } catch (UnsupportedEncodingException e) {


Reply via email to