Commit 44ade2e9 authored by Richard M. Stallman's avatar Richard M. Stallman

(Fopen_network_stream): Call bind_polling_period; later unbind the binding.

(POLL_FOR_INPUT): Define, if appropriate.
parent 03d18690
......@@ -211,6 +211,12 @@ static int update_tick;
#define FD_ZERO(p) (*(p) = 0)
#endif /* no FD_SET */
/* If we support X Windows, turn on the code to poll periodically
to detect C-g. It isn't actually used when doing interrupt input. */
#ifdef HAVE_X_WINDOWS
#define POLL_FOR_INPUT
#endif
/* Mask of bits indicating the descriptors that we wait for input on */
static SELECT_TYPE input_wait_mask;
......@@ -1485,11 +1491,12 @@ Fourth arg SERVICE is name of the service desired, or an integer\n\
struct hostent host_info_fixed;
struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
int retry = 0;
int count = specpdl_ptr - specpdl;
GCPRO4 (name, buffer, host, service);
CHECK_STRING (name, 0);
CHECK_STRING (host, 0);
if (XTYPE(service) == Lisp_Int)
if (XTYPE (service) == Lisp_Int)
port = htons ((unsigned short) XINT (service));
else
{
......@@ -1543,6 +1550,13 @@ Fourth arg SERVICE is name of the service desired, or an integer\n\
if (interrupt_input)
unrequest_sigio ();
/* Slow down polling to every ten seconds.
Some kernels have a bug which causes retrying connect to fail
after a connect. */
#ifdef POLL_FOR_INPUT
bind_polling_period (10);
#endif
loop:
if (connect (s, (struct sockaddr *) &address, sizeof address) == -1
&& errno != EISCONN)
......@@ -1567,6 +1581,10 @@ Fourth arg SERVICE is name of the service desired, or an integer\n\
Fcons (host, Fcons (name, Qnil)));
}
#ifdef POLL_FOR_INPUT
unbind_to (count, Qnil);
#endif
if (interrupt_input)
request_sigio ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment