X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Femail%2FTestEmailProvider.java;h=7beaa9a98001bf190cbe79546cc8ea3601473a69;hb=5e56c8322c407bcb17bea38ceeac83fc96446c7e;hp=009ecf930c134c508264dcd6ea8a503b6dfe7569;hpb=7cf984749cf0027ccae90a53ebef07ab97ff164b;p=gigi.git diff --git a/src/org/cacert/gigi/email/TestEmailProvider.java b/src/org/cacert/gigi/email/TestEmailProvider.java index 009ecf93..7beaa9a9 100644 --- a/src/org/cacert/gigi/email/TestEmailProvider.java +++ b/src/org/cacert/gigi/email/TestEmailProvider.java @@ -9,62 +9,77 @@ import java.net.Socket; import java.util.Properties; class TestEmailProvider extends EmailProvider { - ServerSocket servs; - Socket client; - DataOutputStream out; - DataInputStream in; - protected TestEmailProvider(Properties props) { - try { - servs = new ServerSocket(Integer.parseInt(props - .getProperty("emailProvider.port")), 10, - InetAddress.getByName("127.0.0.1")); - } catch (IOException e) { - e.printStackTrace(); - } - } - @Override - public synchronized void sendmail(String to, String subject, - String message, String from, String replyto, String toname, - String fromname, String errorsto, boolean extra) throws IOException { - boolean sent = false; - while (!sent) { - assureLocalConnection(); - try { - out.writeUTF("mail"); - write(to); - write(subject); - write(message); - write(from); - write(replyto); - out.flush(); - sent = true; - } catch (IOException e) { - client = null; - } - } - } - private void assureLocalConnection() throws IOException { - if (client == null || client.isClosed()) { - client = servs.accept(); - out = new DataOutputStream(client.getOutputStream()); - in = new DataInputStream(client.getInputStream()); - } - } - @Override - public String checkEmailServer(int forUid, String address) - throws IOException { - assureLocalConnection(); - out.writeUTF("challengeAddrBox"); - out.writeUTF(address); - return in.readUTF(); - } - private void write(String to) throws IOException { - if (to == null) { - out.writeUTF(""); - } else { - out.writeUTF(to); - } - } + private ServerSocket servs; + + private Socket client; + + private DataOutputStream out; + + private DataInputStream in; + + protected TestEmailProvider(Properties props) { + try { + servs = new ServerSocket(Integer.parseInt(props.getProperty("emailProvider.port")), 10, InetAddress.getByName("127.0.0.1")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public synchronized void sendmail(String to, String subject, String message, String from, String replyto, String toname, String fromname, String errorsto, boolean extra) throws IOException { + while (true) { + assureLocalConnection(); + try { + out.writeUTF("mail"); + write(to); + write(subject); + write(message); + write(from); + write(replyto); + out.flush(); + return; + } catch (IOException e) { + client = null; + } + } + } + + private void assureLocalConnection() throws IOException { + if (out != null) { + try { + out.writeUTF("ping"); + } catch (IOException e) { + client = null; + } + } + if (client == null || client.isClosed()) { + client = servs.accept(); + out = new DataOutputStream(client.getOutputStream()); + in = new DataInputStream(client.getInputStream()); + } + } + + @Override + public synchronized String checkEmailServer(int forUid, String address) throws IOException { + while (true) { + assureLocalConnection(); + try { + out.writeUTF("challengeAddrBox"); + out.writeUTF(address); + return in.readUTF(); + } catch (IOException e) { + client = null; + } + } + } + + private void write(String to) throws IOException { + if (to == null) { + out.writeUTF(""); + } else { + out.writeUTF(to); + } + } }