changeset 5332:c559b3d1b9e4

(Fopen_network_stream): Turn off SIGIO while connecting.
author Richard M. Stallman <rms@gnu.org>
date Fri, 24 Dec 1993 03:49:30 +0000
parents a74ffe260236
children 3e45a129209f
files src/process.c
diffstat 1 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/process.c	Fri Dec 24 03:43:13 1993 +0000
+++ b/src/process.c	Fri Dec 24 03:49:30 1993 +0000
@@ -1446,6 +1446,15 @@
   if (s < 0) 
     report_file_error ("error creating socket", Fcons (name, Qnil));
 
+  /* Kernel bugs (on Ultrix at least) cause lossage (not just EINTR)
+     when connect is interrupted.  So let's not let it get interrupted.
+     Note we do not turn off polling, because polling is only used
+     when not interrupt_input, and thus not normally used on the systems
+     which have this bug.  On systems which use polling, there's no way
+     to quit if polling is turned off.  */
+  if (interrupt_input)
+    unrequest_sigio ();
+
  loop:
   if (connect (s, (struct sockaddr *) &address, sizeof address) == -1)
     {
@@ -1453,10 +1462,18 @@
       if (errno == EINTR)
 	goto loop;
       close (s);
+
+      if (interrupt_input)
+	request_sigio ();
+
       errno = xerrno;
       report_file_error ("connection failed",
 			 Fcons (host, Fcons (name, Qnil)));
     }
+
+  if (interrupt_input)
+    request_sigio ();
+
 #else /* TERM */
   s = connect_server (0);
   if (s < 0)