X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Femail%2FTestEmailProvider.java;h=07343502303073313a9c7002d96c8bcac39f8b23;hb=86074c17c59d504912389d7caa006e27714abdec;hp=009ecf930c134c508264dcd6ea8a503b6dfe7569;hpb=e0e234dd2fe92484e185e12d1eb15537a80fd875;p=gigi.git diff --git a/src/org/cacert/gigi/email/TestEmailProvider.java b/src/org/cacert/gigi/email/TestEmailProvider.java index 009ecf93..07343502 100644 --- a/src/org/cacert/gigi/email/TestEmailProvider.java +++ b/src/org/cacert/gigi/email/TestEmailProvider.java @@ -26,8 +26,7 @@ class TestEmailProvider extends EmailProvider { 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) { + while (true) { assureLocalConnection(); try { out.writeUTF("mail"); @@ -37,13 +36,20 @@ 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()); @@ -51,12 +57,18 @@ class TestEmailProvider extends EmailProvider { } } @Override - public String checkEmailServer(int forUid, String address) + public synchronized String checkEmailServer(int forUid, String address) throws IOException { - assureLocalConnection(); - out.writeUTF("challengeAddrBox"); - out.writeUTF(address); - return in.readUTF(); + 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 {