changeset 18328:0295bbed3c39

(Fprocess_send_eof): Use shutdown, if it's a socket. Don't close the output descriptor if that is also the input descriptor.
author Richard M. Stallman <rms@gnu.org>
date Thu, 19 Jun 1997 03:03:08 +0000
parents 9963d76b1017
children ddaafa596bf5
files src/process.c
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/process.c	Thu Jun 19 02:59:08 1997 +0000
+++ b/src/process.c	Thu Jun 19 03:03:08 1997 +0000
@@ -3618,7 +3618,16 @@
     send_process (proc, "\004", 1, Qnil);
   else
     {
-      close (XINT (XPROCESS (proc)->outfd));
+      /* If this is a network connection, or socketpair is used
+	 for communication with the subprocess, call shutdown to cause EOF.
+	 (In some old system, shutdown to socketpair doesn't work.
+	 Then we just can't win.)  */
+      if (NILP (XPROCESS (proc)->pid)
+	  || XINT (XPROCESS (proc)->outfd) == XINT (XPROCESS (proc)->infd))
+	shutdown (XINT (XPROCESS (proc)->outfd), 1);
+      /* In case of socketpair, outfd == infd, so don't close it.  */
+      if (XINT (XPROCESS (proc)->outfd) != XINT (XPROCESS (proc)->infd))
+	close (XINT (XPROCESS (proc)->outfd));
       XSETINT (XPROCESS (proc)->outfd, open (NULL_DEVICE, O_WRONLY));
     }
 #endif /* VMS */