]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 3 Sep 2004 08:15:41 +0000 (08:15 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 3 Sep 2004 08:15:41 +0000 (08:15 +0000)
2004-09-03  Ulrich Drepper  <drepper@redhat.com>

* nscd/nscd.c (parse_opt): Use writev instead of two write for
invalidate command.

ChangeLog
nscd/nscd.c

index eaa352a60a9e3864882478bd8752e2f630a5db02..015d2f26188fe8980f5ff3aa8946b6694933e549 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-03  Ulrich Drepper  <drepper@redhat.com>
+
+       * nscd/nscd.c (parse_opt): Use writev instead of two write for
+       invalidate command.
+
 2004-09-02  Ulrich Drepper  <drepper@redhat.com>
 
        * nscd/connections.c (nscd_run): Check early for invalid request types.
index 35e48ca348288f853a9f1311636fdea502a77074..f6b22d41797b9cde87ad234c99b723a37870a063 100644 (file)
@@ -39,6 +39,7 @@
 #include <sys/mman.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
+#include <sys/uio.h>
 #include <sys/un.h>
 
 #include "dbg_log.h"
@@ -304,12 +305,14 @@ parse_opt (int key, char *arg, struct argp_state *state)
       else
        {
          int sock = nscd_open_socket ();
-         request_header req;
-         ssize_t nbytes;
 
          if (sock == -1)
            exit (EXIT_FAILURE);
 
+         request_header req;
+         ssize_t nbytes;
+         struct iovec iov[2];
+
          if (strcmp (arg, "passwd") == 0)
            req.key_len = sizeof "passwd";
          else if (strcmp (arg, "group") == 0)
@@ -321,19 +324,18 @@ parse_opt (int key, char *arg, struct argp_state *state)
 
          req.version = NSCD_VERSION;
          req.type = INVALIDATE;
-         nbytes = TEMP_FAILURE_RETRY (write (sock, &req,
-                                             sizeof (request_header)));
-         if (nbytes != sizeof (request_header))
-           {
-             close (sock);
-             exit (EXIT_FAILURE);
-           }
 
-         nbytes = TEMP_FAILURE_RETRY (write (sock, (void *)arg, req.key_len));
+         iov[0].iov_base = &req;
+         iov[0].iov_len = sizeof (req);
+         iov[1].iov_base = (void *) key;
+         iov[1].iov_len = req.key_len;
+
+         nbytes = TEMP_FAILURE_RETRY (writev (sock, iov, 2));
 
          close (sock);
 
-         exit (nbytes != req.key_len ? EXIT_FAILURE : EXIT_SUCCESS);
+         exit (nbytes != iov[0].iov_len + iov[1].iov_len
+               ? EXIT_FAILURE : EXIT_SUCCESS);
        }
 
     case 't':