X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fping%2FPingerDaemon.java;h=deb5215adda8b1391ab5772921a2cee5951c71e0;hb=c5e65519bead87dcc73664a4e6d0a3f4ca9c8944;hp=ceb88e9a68b80447207749c4797a3599cd8049c6;hpb=98aa1434dc5e06971dcd35f6b9bd335216edce43;p=gigi.git diff --git a/src/org/cacert/gigi/ping/PingerDaemon.java b/src/org/cacert/gigi/ping/PingerDaemon.java index ceb88e9a..deb5215a 100644 --- a/src/org/cacert/gigi/ping/PingerDaemon.java +++ b/src/org/cacert/gigi/ping/PingerDaemon.java @@ -31,30 +31,39 @@ public class PingerDaemon extends Thread { @Override public void run() { - searchNeededPings = DatabaseConnection.getInstance().prepare("SELECT pingconfig.id FROM pingconfig LEFT JOIN domainPinglog ON domainPinglog.configId=pingconfig.id INNER JOIN domains ON domains.id=pingconfig.domainid WHERE ( domainPinglog.configId IS NULL) AND domains.deleted IS NULL GROUP BY pingconfig.id"); - enterPingResult = DatabaseConnection.getInstance().prepare("INSERT INTO domainPinglog SET configId=?, state=?, result=?, challenge=?"); + searchNeededPings = DatabaseConnection.getInstance().prepare("SELECT `pingconfig`.`id` FROM `pingconfig` LEFT JOIN `domainPinglog` ON `domainPinglog`.`configId` = `pingconfig`.`id` INNER JOIN `domains` ON `domains`.`id` = `pingconfig`.`domainid` WHERE ( `domainPinglog`.`configId` IS NULL) AND `domains`.`deleted` IS NULL GROUP BY `pingconfig`.`id`"); + enterPingResult = DatabaseConnection.getInstance().prepare("INSERT INTO `domainPinglog` SET `configId`=?, `state`=?::`pingState`, `result`=?, `challenge`=?"); pingers.put(PingType.EMAIL, new EmailPinger()); pingers.put(PingType.SSL, new SSLPinger(truststore)); pingers.put(PingType.HTTP, new HTTPFetch()); pingers.put(PingType.DNS, new DNSPinger()); while (true) { - synchronized (this) { - DomainPingConfiguration conf; - while ((conf = toExecute.peek()) != null) { - handle(conf); - toExecute.remove(); + try { + boolean worked = false; + synchronized (this) { + DomainPingConfiguration conf; + while ((conf = toExecute.peek()) != null) { + worked = true; + handle(conf); + toExecute.remove(); + } + notifyAll(); } - notifyAll(); - } - GigiResultSet rs = searchNeededPings.executeQuery(); - while (rs.next()) { - handle(DomainPingConfiguration.getById(rs.getInt("id"))); - } - try { - Thread.sleep(5000); - } catch (InterruptedException e) { + GigiResultSet rs = searchNeededPings.executeQuery(); + while (rs.next()) { + worked = true; + handle(DomainPingConfiguration.getById(rs.getInt("id"))); + } + try { + if ( !worked) { + Thread.sleep(5000); + } + } catch (InterruptedException e) { + } + } catch (Throwable t) { + t.printStackTrace(); } } }