passfd: give nicer error for recvfd at eof
[gnulib.git] / tests / test-passfd.c
index 315e6c2..3351233 100644 (file)
@@ -1,5 +1,5 @@
 /* Test of passing file descriptors.
-   Copyright (C) 2011 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -45,8 +45,9 @@ main ()
 
 # if HAVE_DECL_ALARM
   /* Avoid hanging on failure.  */
+  int alarm_value = 5;
   signal (SIGALRM, SIG_DFL);
-  alarm (5);
+  alarm (alarm_value);
 # endif
 
   fdnull = open ("/dev/null", O_RDWR);
@@ -82,6 +83,7 @@ main ()
   /* father */
   else
     {
+      ASSERT (close (pair[1]) == 0);
       fd = recvfd (pair[0], 0);
       if (fd == -1)
         {
@@ -115,6 +117,13 @@ main ()
           perror ("fstat");
           return 80;
         }
+
+      /* Check behavior when sender no longer around */
+      errno = 0;
+      fd = recvfd (pair[0], 0);
+      ASSERT (fd == -1);
+      ASSERT (errno == ENOTCONN);
+
       return 0;
     }
 #else