]> sourceware.org Git - glibc.git/commitdiff
Better error handling for sendmmsg use in res_send
authorUlrich Drepper <drepper@gmail.com>
Fri, 30 Mar 2012 12:38:58 +0000 (08:38 -0400)
committerUlrich Drepper <drepper@gmail.com>
Fri, 30 Mar 2012 12:38:58 +0000 (08:38 -0400)
resolv/res_send.c

index 968ede09fab2d75438f86eba4e2ac33b0a568379..0a28cd784b99d45eb70150f3ac50b75b14203976 100644 (file)
@@ -1132,22 +1132,23 @@ send_dg(res_state statp,
                    int ndg = sendmmsg (pfd[0].fd, reqs, 2, MSG_NOSIGNAL);
                    if (__builtin_expect (ndg == 2, 1))
                      {
-                       assert (reqs[0].msg_len == buflen);
-                       assert (reqs[1].msg_len == buflen2);
+                       if (reqs[0].msg_len != buflen
+                           || reqs[1].msg_len != buflen2)
+                         goto fail_sendmmsg;
 
                        pfd[0].events = POLLIN;
                        nwritten += 2;
                      }
                    else if (ndg == 1 && reqs[0].msg_len == buflen)
                      goto just_one;
-                   else if (errno == EINTR || errno == EAGAIN)
+                   else if (ndg < 0 && (errno == EINTR || errno == EAGAIN))
                      goto recompute_resend;
                    else
                      {
 #ifndef __ASSUME_SENDMMSG
-                       if (have_sendmmsg == 0)
+                       if (__builtin_expect (have_sendmmsg == 0, 0))
                          {
-                           if (errno == ENOSYS)
+                           if (ndg < 0 && errno == ENOSYS)
                              {
                                have_sendmmsg = -1;
                                goto try_send;
@@ -1156,6 +1157,7 @@ send_dg(res_state statp,
                          }
 #endif
 
+                     fail_sendmmsg:
                        Perror(statp, stderr, "sendmmsg", errno);
                        goto err_out;
                      }
This page took 0.042146 seconds and 5 git commands to generate.