emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: address@hidden: Re: Problem sending bigger mails with CVS Gnus + CVS


From: Tak Ota
Subject: Re: address@hidden: Re: Problem sending bigger mails with CVS Gnus + CVS Emacs]
Date: Tue, 21 May 2002 18:41:52 -0700 (PDT)

Jason,

I've modified sys_write in the same manner that _sys_read_ahead
performs blocking IO then the problem disappeared.  Is this a right
fix?  The sys_write comment explicitly states that;

/* For now, don't bother with a non-blocking mode */

-Tak


*** emacs-21.2.50/src/w32.c     Sat May  4 07:53:43 2002
--- w32.c       Tue May 21 18:26:34 2002
***************
*** 2568,2573 ****
--- 2568,2574 ----
      case WSAEMFILE:           h_errno = EMFILE; break;
      case WSAENAMETOOLONG:     h_errno = ENAMETOOLONG; break;
      case WSAENOTEMPTY:                h_errno = ENOTEMPTY; break;
+     case WSAEWOULDBLOCK:      h_errno = EAGAIN; break;
      }
    errno = h_errno;
  }
***************
*** 3541,3548 ****
--- 3542,3561 ----
  #ifdef HAVE_SOCKETS
    if (fd_info[fd].flags & FILE_SOCKET)
      {
+       unsigned long nblock = 0;
        if (winsock_lib == NULL) abort ();
+ 
+       /* We always want this to block, so temporarily disable NDELAY.  */
+       if (fd_info[fd].flags & FILE_NDELAY)
+       pfn_ioctlsocket (SOCK_HANDLE (fd), FIONBIO, &nblock);
+ 
        nchars =  pfn_send (SOCK_HANDLE (fd), buffer, count, 0);
+ 
+       if (fd_info[fd].flags & FILE_NDELAY)
+       {
+         nblock = 1;
+         pfn_ioctlsocket (SOCK_HANDLE (fd), FIONBIO, &nblock);
+       }
        if (nchars == SOCKET_ERROR)
          {
          DebPrint(("sys_read.send failed with error %d on socket %ld\n",



reply via email to

[Prev in Thread] Current Thread [Next in Thread]