Sebastian Kuschel reports that pfd_closing can be called for a socket
[u/mdw/putty] / pinger.c
index c9b7503..3f533ae 100644 (file)
--- a/pinger.c
+++ b/pinger.c
@@ -8,18 +8,18 @@
 struct pinger_tag {
     int interval;
     int pending;
-    long next;
+    unsigned long next;
     Backend *back;
     void *backhandle;
 };
 
 static void pinger_schedule(Pinger pinger);
 
-static void pinger_timer(void *ctx, long now)
+static void pinger_timer(void *ctx, unsigned long now)
 {
     Pinger pinger = (Pinger)ctx;
 
-    if (pinger->pending && now - pinger->next >= 0) {
+    if (pinger->pending && now == pinger->next) {
        pinger->back->special(pinger->backhandle, TS_PING);
        pinger->pending = FALSE;
        pinger_schedule(pinger);
@@ -43,11 +43,11 @@ static void pinger_schedule(Pinger pinger)
     }
 }
 
-Pinger pinger_new(Config *cfg, Backend *back, void *backhandle)
+Pinger pinger_new(Conf *conf, Backend *back, void *backhandle)
 {
     Pinger pinger = snew(struct pinger_tag);
 
-    pinger->interval = cfg->ping_interval;
+    pinger->interval = conf_get_int(conf, CONF_ping_interval);
     pinger->pending = FALSE;
     pinger->back = back;
     pinger->backhandle = backhandle;
@@ -56,10 +56,11 @@ Pinger pinger_new(Config *cfg, Backend *back, void *backhandle)
     return pinger;
 }
 
-void pinger_reconfig(Pinger pinger, Config *oldcfg, Config *newcfg)
+void pinger_reconfig(Pinger pinger, Conf *oldconf, Conf *newconf)
 {
-    if (oldcfg->ping_interval != newcfg->ping_interval) {
-       pinger->interval = newcfg->ping_interval;
+    int newinterval = conf_get_int(newconf, CONF_ping_interval);
+    if (conf_get_int(oldconf, CONF_ping_interval) != newinterval) {
+       pinger->interval = newinterval;
        pinger_schedule(pinger);
     }
 }