You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ba...@apache.org on 2010/08/24 11:25:57 UTC

svn commit: r988447 - in /james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim: DKIMSigner.java DKIMVerifier.java impl/Message.java

Author: bago
Date: Tue Aug 24 09:25:56 2010
New Revision: 988447

URL: http://svn.apache.org/viewvc?rev=988447&view=rev
Log:
Make sure to dispose mime4j messages once used (JDKIM-18).
Thanks to Ben Aldrich for reporting. Implemented using a verbose dispose method instead of relying on finalizers.

Modified:
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java?rev=988447&r1=988446&r2=988447&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java Tue Aug 24 09:25:56 2010
@@ -66,19 +66,24 @@ public class DKIMSigner extends DKIMComm
         try {
             try {
                 message = new Message(is);
-            } catch (MimeException e1) {
-                throw new PermFailException("MIME parsing exception: "
-                        + e1.getMessage(), e1);
-            }
-            SignatureRecord srt = newSignatureRecordTemplate(signatureRecordTemplate);
 
-            BodyHasher bhj = newBodyHasher(srt);
+				try {
+					SignatureRecord srt = newSignatureRecordTemplate(signatureRecordTemplate);
 
-            // computation of the body hash.
-            DKIMCommon.streamCopy(message.getBodyInputStream(), bhj
-                    .getOutputStream());
+					BodyHasher bhj = newBodyHasher(srt);
 
-            return sign(message, bhj);
+					// computation of the body hash.
+					DKIMCommon.streamCopy(message.getBodyInputStream(), bhj
+							.getOutputStream());
+
+					return sign(message, bhj);
+				} finally {
+					message.dispose();
+				}
+            } catch (MimeException e1) {
+                throw new PermFailException("MIME parsing exception: "
+                        + e1.getMessage(), e1);
+			}
 
         } finally {
             is.close();

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java?rev=988447&r1=988446&r2=988447&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java Tue Aug 24 09:25:56 2010
@@ -213,7 +213,11 @@ public class DKIMVerifier extends DKIMCo
         Message message;
         try {
             message = new Message(is);
-            return verify(message, message.getBodyInputStream());
+			try {
+	            return verify(message, message.getBodyInputStream());
+			} finally {
+				message.dispose();
+			}
         } catch (MimeException e1) {
             throw new PermFailException("Mime parsing exception: "
                     + e1.getMessage(), e1);

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java?rev=988447&r1=988446&r2=988447&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java Tue Aug 24 09:25:56 2010
@@ -43,14 +43,6 @@ public class Message implements Headers 
     private org.apache.james.mime4j.dom.Message message;
 
     /**
-     * Creates a new empty <code>Header</code>.
-     * @throws MimeException 
-     */
-    protected Message() throws MimeException {
-        this.message = newMessageBuilder().newMessage();
-    }
-
-    /**
      * Creates a new <code>Header</code> from the specified stream.
      * 
      * @param is
@@ -129,4 +121,10 @@ public class Message implements Headers 
         return message.toString();
     }
 
+	/**
+	 * Make sure to dispose the message once used.
+	 */
+	public void dispose() {
+        this.message.dispose();
+	}
 }
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org