]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't call 'select' from emacs_gnutls_pull.
authorClaudio Bley <claudio.bley@gmail.com>
Fri, 22 Feb 2013 16:00:14 +0000 (18:00 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 22 Feb 2013 16:00:14 +0000 (18:00 +0200)
 src/w32.c (emacs_gnutls_pull): Don't call 'select', and don't loop.
 This avoids warning messages reported as part of Bug#13546.

src/ChangeLog
src/w32.c

index ff45c4b2a83c223e2eb161cd1941df2bc8865bd9..639e0054ebe38ac8539c963651e7ccbdd3664280 100644 (file)
@@ -1,3 +1,8 @@
+2013-02-22  Claudio Bley  <claudio.bley@gmail.com>
+
+       * w32.c (emacs_gnutls_pull): Don't call 'select', and don't loop.
+       This avoids warning messages reported as part of Bug#13546.
+
 2013-02-21  Ken Brown  <kbrown@cornell.edu>
 
        * sheap.c (report_sheap_usage): Fix arguments of message1_no_log.
index ed86b1238ae5b666e9a1dce003c2dae3c1ecbd91..5011642adf27c9c87f678f0a39260ea89af43707 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -7822,47 +7822,26 @@ serial_configure (struct Lisp_Process *p, Lisp_Object contact)
 ssize_t
 emacs_gnutls_pull (gnutls_transport_ptr_t p, void* buf, size_t sz)
 {
-  int n, sc, err;
+  int n, err;
   SELECT_TYPE fdset;
   EMACS_TIME timeout;
   struct Lisp_Process *process = (struct Lisp_Process *)p;
   int fd = process->infd;
 
-  for (;;)
-    {
-      n = sys_read (fd, (char*)buf, sz);
+  n = sys_read (fd, (char*)buf, sz);
 
-      if (n >= 0)
-        return n;
+  if (n >= 0)
+    return n;
 
-      err = errno;
+  err = errno;
 
-      if (err == EWOULDBLOCK)
-        {
-          /* Set a small timeout.  */
-         timeout = make_emacs_time (1, 0);
-          FD_ZERO (&fdset);
-          FD_SET ((int)fd, &fdset);
-
-          /* Use select with the timeout to poll the selector.  */
-          sc = select (fd + 1, &fdset, (SELECT_TYPE *)0, (SELECT_TYPE *)0,
-                       &timeout, NULL);
-
-          if (sc > 0)
-            continue;  /* Try again.  */
-
-          /* Translate the WSAEWOULDBLOCK alias EWOULDBLOCK to EAGAIN.
-             Also accept select return 0 as an indicator to EAGAIN.  */
-          if (sc == 0 || errno == EWOULDBLOCK)
-            err = EAGAIN;
-          else
-            err = errno; /* Other errors are just passed on.  */
-        }
+  /* Translate the WSAEWOULDBLOCK alias EWOULDBLOCK to EAGAIN. */
+  if (err == EWOULDBLOCK)
+    err = EAGAIN;
 
-      emacs_gnutls_transport_set_errno (process->gnutls_state, err);
+  emacs_gnutls_transport_set_errno (process->gnutls_state, err);
 
-      return -1;
-    }
+  return -1;
 }
 
 ssize_t