* amq/pawd.c (transform_dir): use TCP first, else UDP. Destroy
authorErez Zadok <ezk@cs.sunysb.edu>
Thu, 6 Oct 2005 01:06:51 +0000 (01:06 +0000)
committerErez Zadok <ezk@cs.sunysb.edu>
Thu, 6 Oct 2005 01:06:51 +0000 (01:06 +0000)
client after use to avoid leftover TCP sockets in the kernel.

ChangeLog
NEWS
amq/pawd.c

index 064db10b2af5f26bba0ff993e7def26eea995f1e..2a0f122af866545cbd06faad38ef86871f5d33e9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2005-10-05  Erez Zadok  <ezk@cs.sunysb.edu>
 
+       * amq/pawd.c (transform_dir): use TCP first, else UDP.  Destroy
+       client after use to avoid leftover TCP sockets in the kernel.
+
        * libamu/hasmntopt.c (amu_hasmntopt): increase size of MNTMAXSTR
        from 128 to to 256, because some users have really long option
        strings.  Suggestion from jon+amd-at-spock.org.
diff --git a/NEWS b/NEWS
index a041b06f4ca628f77f0a24ab64fc7ed8f8f63a99..2f06d919025f1c63db474d1504b7e7f3d7bed0fe 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -52,6 +52,7 @@ XXX: Dan, document sun_map_syntax flag in more detail in am-utils.texi and
        * convert all sprintf to safer xsnprintf
        * convert all strcat to safer xstrlcat
        * convert all strcpy to safer xstrlcpy
+       * pawd uses TCP first, then UDP
 
 Amd now understands a new log_option called "defaults" which is synonymous
 with "fatal,error,user,warning,info" (and is also what logging happens by
index 30f5e90ecad91a19a0f14b14deea033198f2386d..44aca1c39f50b3d7c7c5420c471d66639d616fbf 100644 (file)
@@ -229,14 +229,16 @@ transform_dir(char *dir)
   server = localhost;
 #endif /* not HAVE_CNODEID */
 
-  if ((hp = gethostbyname(server)) == 0)
+  if ((hp = gethostbyname(server)) == NULL)
     return dir;
   memset(&server_addr, 0, sizeof(server_addr));
   server_addr.sin_family = AF_INET;
   server_addr.sin_addr = *(struct in_addr *) hp->h_addr;
 
-  clnt = clntudp_create(&server_addr, AMQ_PROGRAM, AMQ_VERSION, tmo, &s);
-  if (clnt == 0)
+  clnt = clnttcp_create(&server_addr, AMQ_PROGRAM, AMQ_VERSION, &s, 0, 0);
+  if (clnt == NULL)
+    clnt = clntudp_create(&server_addr, AMQ_PROGRAM, AMQ_VERSION, tmo, &s);
+  if (clnt == NULL)
     return dir;
 
   xstrlcpy(transform, dir, sizeof(transform));
@@ -244,6 +246,7 @@ transform_dir(char *dir)
          find_mlp(mlp,transform) ) {
     xstrlcpy(transform, newdir, sizeof(transform));
   }
+  clnt_destroy(clnt);
   return transform;
 }