OSDN Git Service

BUGFIX: When SMTP connection was closed, LDAP connection close. It avoid LDAP server...
[mdc/BetaProject.git] / src / org / jent / checksmtp / SMTPclient.java
1 package org.jent.checksmtp;
2
3 import java.io.IOException;
4
5 import java.net.InetAddress;
6 import java.net.ServerSocket;
7 import java.net.Socket;
8
9
10 public class SMTPclient implements Runnable {
11     public SMTPclient() {
12         Thread thread = new Thread(this);
13         thread.start();
14     }
15
16     public void run() {
17         while (true) {
18             ServerSocket server = null;
19
20             try {
21                 //  Server Port
22                 int serverport = ApplicationProperties.getSmtpPort();
23                 System.err.println("Open SMTP waiting port. " + serverport);
24
25                 try {
26                   if ( ApplicationProperties.getSmtpEnebleRemoteConnect() ) {
27                     System.out.println("Enable remote connection.");
28                     server = new ServerSocket(serverport, 10);
29                   } else {
30                     server = new ServerSocket(serverport, 10,
31                             InetAddress.getByAddress(
32                                 new byte[] { 127, 0, 0, 1 }));
33                   }
34                 } catch (IOException e) {
35                     e.printStackTrace(); //Unexpected!!
36                 }
37
38                 while (true) {
39                     // Wait connect from mail client
40                     Socket client = server.accept();
41                     System.err.println("Accept new STMP socket.");
42
43                     Processer processer = new Processer(client);
44                     Thread clientThread = new Thread(processer);
45                     clientThread.start();
46                 }
47             } catch (IOException e) {
48                 e.printStackTrace();
49                 System.err.println("Continure waiting SMTP client.");
50
51                 try {
52                     server.close();
53                 } catch (IOException ioe) {
54                     //IGNORE close Exception
55                 }
56             }
57         }
58     }
59 }