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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to