]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/email/Sendmail.java
Fix: exceptional resource leaks from coverty
[gigi.git] / src / org / cacert / gigi / email / Sendmail.java
index 2c8958cb443cc48fdfbe92dfdf2ea8b8777b90aa..3c915ab9229099af7d4b7f744b5e9e951ab40ef6 100644 (file)
@@ -26,72 +26,69 @@ public class Sendmail extends EmailProvider {
 
         String[] bits = from.split(",");
 
-        Socket smtp = new Socket("localhost", 25);
-        PrintWriter out = new PrintWriter(smtp.getOutputStream());
-        BufferedReader in = new BufferedReader(new InputStreamReader(smtp.getInputStream(), "UTF-8"));
-        readSMTPResponse(in, 220);
-        out.print("HELO www.cacert.org\r\n");
-        out.flush();
-        readSMTPResponse(in, 250);
-        out.print("MAIL FROM:<returns@cacert.org>\r\n");
-        out.flush();
-        readSMTPResponse(in, 250);
-        bits = to.split(",");
-        for (String user : bits) {
-            out.print("RCPT TO:<" + user.trim() + ">\r\n");
+        try (Socket smtp = new Socket("localhost", 25); PrintWriter out = new PrintWriter(smtp.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(smtp.getInputStream(), "UTF-8"));) {
+            readSMTPResponse(in, 220);
+            out.print("HELO www.cacert.org\r\n");
             out.flush();
             readSMTPResponse(in, 250);
-        }
-        out.print("DATA\r\n");
-        out.flush();
-        readSMTPResponse(in, 250);
-        out.print("X-Mailer: CAcert.org Website\r\n");
-        // if (array_key_exists("REMOTE_ADDR", $_SERVER)) {
-        // out.print("X-OriginatingIP: ".$_SERVER["REMOTE_ADDR"]."\r\n");
-        // }
-        // TODO
-        SimpleDateFormat emailDate = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss ZZZZ (z)", Locale.ENGLISH);
-        out.print("Date: " + emailDate.format(new Date(System.currentTimeMillis())) + "\r\n");
-        if (errorsto != null) {
-            out.print("Sender: " + errorsto + "\r\n");
-            out.print("Errors-To: " + errorsto + "\r\n");
-        }
-        if (replyto != null) {
-            out.print("Reply-To: " + replyto + "\r\n");
-        } else {
-            out.print("Reply-To: " + from + "\r\n");
-        }
-        out.print("From: support@" + ServerConstants.getWwwHostName().replaceAll("^www.", "") + "\r\n");
-        out.print("To: " + to + "\r\n");
-        if (NON_ASCII.matcher(subject).matches()) {
+            out.print("MAIL FROM:<returns@cacert.org>\r\n");
+            out.flush();
+            readSMTPResponse(in, 250);
+            bits = to.split(",");
+            for (String user : bits) {
+                out.print("RCPT TO:<" + user.trim() + ">\r\n");
+                out.flush();
+                readSMTPResponse(in, 250);
+            }
+            out.print("DATA\r\n");
+            out.flush();
+            readSMTPResponse(in, 250);
+            out.print("X-Mailer: CAcert.org Website\r\n");
+            // if (array_key_exists("REMOTE_ADDR", $_SERVER)) {
+            // out.print("X-OriginatingIP: ".$_SERVER["REMOTE_ADDR"]."\r\n");
+            // }
+            // TODO
+            SimpleDateFormat emailDate = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss ZZZZ (z)", Locale.ENGLISH);
+            out.print("Date: " + emailDate.format(new Date(System.currentTimeMillis())) + "\r\n");
+            if (errorsto != null) {
+                out.print("Sender: " + errorsto + "\r\n");
+                out.print("Errors-To: " + errorsto + "\r\n");
+            }
+            if (replyto != null) {
+                out.print("Reply-To: " + replyto + "\r\n");
+            } else {
+                out.print("Reply-To: " + from + "\r\n");
+            }
+            out.print("From: support@" + ServerConstants.getWwwHostName().replaceAll("^www.", "") + "\r\n");
+            out.print("To: " + to + "\r\n");
+            if (NON_ASCII.matcher(subject).matches()) {
 
-            out.print("Subject: =?utf-8?B?" + Base64.getEncoder().encodeToString(subject.getBytes("UTF-8")) + "?=\r\n");
-        } else {
-            out.print("Subject: " + subject + "\r\n");
-        }
-        StringBuffer headers = new StringBuffer();
-        headers.append("Content-Type: text/plain; charset=\"utf-8\"\r\n");
-        headers.append("Content-Transfer-Encoding: base64\r\n");
-        // out.print(chunk_split(base64_encode(recode("html..utf-8",
-        // $message)))."\r\n.\r\n");
-        headers.append("\r\n");
-        headers.append(Base64.getEncoder().encodeToString(message.getBytes("UTF-8")).replaceAll("(.{64})(?=.)", "$1\r\n"));
-        headers.append("\r\n");
+                out.print("Subject: =?utf-8?B?" + Base64.getEncoder().encodeToString(subject.getBytes("UTF-8")) + "?=\r\n");
+            } else {
+                out.print("Subject: " + subject + "\r\n");
+            }
+            StringBuffer headers = new StringBuffer();
+            headers.append("Content-Type: text/plain; charset=\"utf-8\"\r\n");
+            headers.append("Content-Transfer-Encoding: base64\r\n");
+            // out.print(chunk_split(base64_encode(recode("html..utf-8",
+            // $message)))."\r\n.\r\n");
+            headers.append("\r\n");
+            headers.append(Base64.getEncoder().encodeToString(message.getBytes("UTF-8")).replaceAll("(.{64})(?=.)", "$1\r\n"));
+            headers.append("\r\n");
 
-        try {
-            sendSigned(headers.toString(), out);
-            out.print("\r\n.\r\n");
+            try {
+                sendSigned(headers.toString(), out);
+                out.print("\r\n.\r\n");
+                out.flush();
+            } catch (GeneralSecurityException e) {
+                e.printStackTrace();
+                return;
+            }
+            readSMTPResponse(in, 250);
+            out.print("QUIT\n");
             out.flush();
-        } catch (GeneralSecurityException e) {
-            e.printStackTrace();
-            smtp.close();
-            return;
+            readSMTPResponse(in, 221);
         }
-        readSMTPResponse(in, 250);
-        out.print("QUIT\n");
-        out.flush();
-        readSMTPResponse(in, 221);
-        smtp.close();
     }
 
     public static boolean readSMTPResponse(BufferedReader in, int code) throws IOException {