Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off.
[u/mdw/putty] / noise.c
diff --git a/noise.c b/noise.c
index a094d25..1b1d1f5 100644 (file)
--- a/noise.c
+++ b/noise.c
@@ -3,7 +3,6 @@
  * generator.
  */
 
-#include <windows.h>
 #include <stdio.h>
 
 #include "putty.h"
 #include "storage.h"
 
 /*
- * GetSystemPowerStatus function.
- */
-typedef BOOL(WINAPI * gsps_t) (LPSYSTEM_POWER_STATUS);
-static gsps_t gsps;
-
-/*
  * This function is called once, at PuTTY startup, and will do some
  * seriously silly things like listing directories and getting disk
  * free space and a process snapshot.
@@ -27,7 +20,6 @@ void noise_get_heavy(void (*func) (void *, int))
     HANDLE srch;
     WIN32_FIND_DATA finddata;
     char winpath[MAX_PATH + 3];
-    HMODULE mod;
 
     GetWindowsDirectory(winpath, sizeof(winpath));
     strcat(winpath, "\\*");
@@ -40,12 +32,8 @@ void noise_get_heavy(void (*func) (void *, int))
     }
 
     read_random_seed(func);
-
-    gsps = NULL;
-    mod = GetModuleHandle("KERNEL32");
-    if (mod) {
-       gsps = (gsps_t) GetProcAddress(mod, "GetSystemPowerStatus");
-    }
+    /* Update the seed immediately, in case another instance uses it. */
+    random_save_seed();
 }
 
 void random_save_seed(void)
@@ -56,6 +44,7 @@ void random_save_seed(void)
     if (random_active) {
        random_get_savedata(&data, &len);
        write_random_seed(data, len);
+       sfree(data);
     }
 }
 
@@ -69,21 +58,12 @@ void noise_get_light(void (*func) (void *, int))
     SYSTEMTIME systime;
     DWORD adjust[2];
     BOOL rubbish;
-    SYSTEM_POWER_STATUS pwrstat;
 
     GetSystemTime(&systime);
     func(&systime, sizeof(systime));
 
     GetSystemTimeAdjustment(&adjust[0], &adjust[1], &rubbish);
     func(&adjust, sizeof(adjust));
-
-    /*
-     * Call GetSystemPowerStatus if present.
-     */
-    if (gsps) {
-       if (gsps(&pwrstat))
-           func(&pwrstat, sizeof(pwrstat));
-    }
 }
 
 /*
@@ -129,7 +109,7 @@ void noise_regular(void)
  * counter to the noise pool. It gets the scan code or mouse
  * position passed in.
  */
-void noise_ultralight(DWORD data)
+void noise_ultralight(unsigned long data)
 {
     DWORD wintime;
     LARGE_INTEGER perftime;