OSDN Git Service

Change IDE JDeveloper to NetBeans 5.5.
[mdc/BetaProject.git] / src / org / jent / checksmtp / Processer.java
index a86b0de..44fc230 100644 (file)
@@ -19,7 +19,7 @@ import java.util.ListIterator;
 import java.util.regex.Pattern;
 
 
-public class Processer implements Runnable {
+public class Processer implements Runnable, ResultNotify {
   private Socket client;
 
   //Conform status.
@@ -57,6 +57,8 @@ public class Processer implements Runnable {
     BufferedReader clientReader;
     PrintWriter clientWriter;
 
+    Socket server = null;
+      
     try {
       //Connect to SMTP Server host 
       String servername = ApplicationProperties.getSmtpServerHost();
@@ -65,7 +67,7 @@ public class Processer implements Runnable {
       int serverport = ApplicationProperties.getSmtpServerPort();
 
       //Connection to true SMTP server.
-      Socket server = new Socket(servername, serverport);
+      server = new Socket(servername, serverport);
       serverInput = server.getInputStream();
       serverOutput = server.getOutputStream();
       clientInput = client.getInputStream();
@@ -92,10 +94,31 @@ public class Processer implements Runnable {
       //forServerThread.start();
       ////Use this ThreadforClientThread.run();
       server.close();
+      server = null;
       client.close();
+      client = null;
     } catch (IOException e) {
       System.err.println("Execption occurred in Processer.");
+      //TODO: Display error Dialog.
       e.printStackTrace();
+    } finally {
+      //for failsafe Socket close.
+      if (server != null) { 
+        try { 
+          server.close();
+        } catch (IOException ioEx ) {
+          //IGNORE close Exception
+        }
+      }
+      if (client != null) { 
+        try {
+          client.close();
+        } catch (IOException ioEx ) {
+          //IGNORE close Exception
+        }
+      }
+      //LDAP Connection close.
+      LDAPSearch.close();
     }
   }
 
@@ -185,6 +208,12 @@ public class Processer implements Runnable {
           while (true) {
             line = clientReader.readLine();
 
+            if (line == null) {
+              //Finish client stream.
+              System.err.println("Client disconnected.");
+              break; //force disconnect.
+            }
+
             if (isRcptTo(line)) {
               //stored To: address.
               toList.add(formatToAddress(line));
@@ -202,7 +231,7 @@ public class Processer implements Runnable {
               }
 
               //checkout toList
-              new ToListDialog(this, toList);
+              new ToListUI(this, toList);
 
               while (result == RESULT_UNKNOWN) {
                 try {
@@ -215,7 +244,7 @@ public class Processer implements Runnable {
                 }
               }
 
-              if (result == RESULT_NG) {
+              if (result != RESULT_OK ) {
                 System.out.println("CANCEL sending mail.");
                 serverWriter.println(COMMAND_RESET);
                 line = serverReader.readLine(); //Server MUST retrun "250 OK"
@@ -229,6 +258,9 @@ public class Processer implements Runnable {
             break; // client read while(true);
           }
 
+          if (line == null ) {
+            break;
+          }
           serverWriter.println(line);
           System.out.println(line);
         }