]> andersk Git - openssh.git/commitdiff
- dtucker@cvs.openbsd.org 2008/11/30 11:59:26
authordtucker <dtucker>
Mon, 1 Dec 2008 10:42:13 +0000 (10:42 +0000)
committerdtucker <dtucker>
Mon, 1 Dec 2008 10:42:13 +0000 (10:42 +0000)
     [monitor_fdpass.c]
     Retry sendmsg/recvmsg on EAGAIN and EINTR; ok djm@

ChangeLog
monitor_fdpass.c

index 5f6f282ce00dfda0cc3ba1e53d3a58b908850eeb..6e53fd476e06fdd9ce8ac0e46a4af4c3c2eb9575 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,9 @@
      packet_disconnect() on padding error, too.  should reduce the success
      probability for the CPNI-957037 Plaintext Recovery Attack to 2^-18
      ok djm@
+   - dtucker@cvs.openbsd.org 2008/11/30 11:59:26
+     [monitor_fdpass.c]
+     Retry sendmsg/recvmsg on EAGAIN and EINTR; ok djm@
 
 20081123
  - (dtucker) [monitor_fdpass.c] Reduce diff vs OpenBSD by moving some
index f68c3728a40338f4da332557e01b7b1d2ddbb15e..4b9a066bcf0f376f3479c7e34a976f251dd51218 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: monitor_fdpass.c,v 1.17 2008/03/24 16:11:07 deraadt Exp $ */
+/* $OpenBSD: monitor_fdpass.c,v 1.18 2008/11/30 11:59:26 dtucker Exp $ */
 /*
  * Copyright 2001 Niels Provos <provos@citi.umich.edu>
  * All rights reserved.
@@ -75,7 +75,10 @@ mm_send_fd(int sock, int fd)
        msg.msg_iov = &vec;
        msg.msg_iovlen = 1;
 
-       if ((n = sendmsg(sock, &msg, 0)) == -1) {
+       while ((n = sendmsg(sock, &msg, 0)) == -1 && (errno == EAGAIN ||
+           errno == EINTR))
+               debug3("%s: sendmsg(%d): %s", __func__, fd, strerror(errno));
+       if (n == -1) {
                error("%s: sendmsg(%d): %s", __func__, fd,
                    strerror(errno));
                return -1;
@@ -123,7 +126,10 @@ mm_receive_fd(int sock)
        msg.msg_controllen = sizeof(cmsgbuf.buf);
 #endif
 
-       if ((n = recvmsg(sock, &msg, 0)) == -1) {
+       while ((n = recvmsg(sock, &msg, 0)) == -1 && (errno == EAGAIN ||
+           errno == EINTR))
+               debug3("%s: recvmsg: %s", __func__, strerror(errno));
+       if (n == -1) {
                error("%s: recvmsg: %s", __func__, strerror(errno));
                return -1;
        }
This page took 0.183931 seconds and 5 git commands to generate.