X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Femail%2FTestEmailProvider.java;h=35c4b3fe81351af1aaf6df7a44a983899a92ee30;hb=28e686114d3a851a8f3163862b0c4ec4de3eacce;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..35c4b3fe 100644 --- a/src/org/cacert/gigi/email/TestEmailProvider.java +++ b/src/org/cacert/gigi/email/TestEmailProvider.java @@ -13,21 +13,20 @@ class TestEmailProvider extends EmailProvider { 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")); + 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) { + 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"); @@ -37,26 +36,40 @@ class TestEmailProvider extends EmailProvider { write(from); write(replyto); out.flush(); - sent = true; + 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 String checkEmailServer(int forUid, String address) - throws IOException { - assureLocalConnection(); - out.writeUTF("challengeAddrBox"); - out.writeUTF(address); - return in.readUTF(); + 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 {