dirmngr: Minor cleanup of the SRV RR code.
authorWerner Koch <wk@gnupg.org>
Wed, 28 Oct 2015 09:14:07 +0000 (10:14 +0100)
committerWerner Koch <wk@gnupg.org>
Wed, 28 Oct 2015 09:14:30 +0000 (10:14 +0100)
* dirmngr/dns-stuff.c: Include unistd.h.
(getsrv): Run srand only once.
* dirmngr/t-dns-stuff.c (main): Allow passing another name for --srv
and change output format.

dirmngr/dns-stuff.c
dirmngr/t-dns-stuff.c

index 3689d8f..3220d76 100644 (file)
@@ -42,6 +42,7 @@
 # include <netdb.h>
 #endif
 #include <string.h>
+#include <unistd.h>
 #ifdef USE_ADNS
 # include <adns.h>
 #endif
@@ -1103,9 +1104,16 @@ getsrv (const char *name,struct srventry **list)
 
   /* Run the RFC-2782 weighting algorithm.  We don't need very high
      quality randomness for this, so regular libc srand/rand is
-     sufficient.  Fixme: It is a bit questionaly to reinitalize srand
-     - better use a gnupg fucntion for this.  */
-  srand(time(NULL)*getpid());
+     sufficient.  */
+
+  {
+    static int done;
+    if (!done)
+      {
+        done = 1;
+        srand (time (NULL)*getpid());
+      }
+  }
 
   for (i=0; i < srvcount; i++)
     {
index 4ecbd64..191b581 100644 (file)
@@ -205,15 +205,14 @@ main (int argc, char **argv)
       struct srventry *srv;
       int rc,i;
 
-      rc=getsrv("_hkp._tcp.wwwkeys.pgp.net",&srv);
-      printf("Count=%d\n\n",rc);
+      rc=getsrv (name? name : "_hkp._tcp.wwwkeys.pgp.net", &srv);
+      printf("Count=%d\n",rc);
       for(i=0;i<rc;i++)
         {
-          printf("priority=%hu\n",srv[i].priority);
-          printf("weight=%hu\n",srv[i].weight);
-          printf("port=%hu\n",srv[i].port);
+          printf("priority=%-8hu  ",srv[i].priority);
+          printf("weight=%-8hu  ",srv[i].weight);
+          printf("port=%-5hu  ",srv[i].port);
           printf("target=%s\n",srv[i].target);
-          printf("\n");
         }
 
       xfree(srv);