[Python-checkins] CVS: python/dist/src/Lib asyncore.py,1.10,1.10.4.1

Anthony Baxter anthonybaxter@users.sourceforge.net
Sat, 22 Dec 2001 17:26:51 -0800


Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv6869

Modified Files:
      Tag: release21-maint
	asyncore.py 
Log Message:
partial backport of 1.25: 
select not defensive. check for EINTR and make sure it's handled painlessly.


Index: asyncore.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/asyncore.py,v
retrieving revision 1.10
retrieving revision 1.10.4.1
diff -C2 -d -r1.10 -r1.10.4.1
*** asyncore.py	2001/02/09 05:03:15	1.10
--- asyncore.py	2001/12/23 01:26:49	1.10.4.1
***************
*** 53,65 ****
  
  import os
! if os.name == 'nt':
!     EWOULDBLOCK = 10035
!     EINPROGRESS = 10036
!     EALREADY    = 10037
!     ECONNRESET  = 10054
!     ENOTCONN    = 10057
!     ESHUTDOWN   = 10058
! else:
!     from errno import EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, ENOTCONN, ESHUTDOWN
  
  try:
--- 53,58 ----
  
  import os
! from errno import EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, \
!      ENOTCONN, ESHUTDOWN, EINTR
  
  try:
***************
*** 84,89 ****
              if obj.writable():
                  w.append (fd)
!         r,w,e = select.select (r,w,e, timeout)
  
          if DEBUG:
              print r,w,e
--- 77,87 ----
              if obj.writable():
                  w.append (fd)
!         try:
!             r,w,e = select.select (r,w,e, timeout)
!         except select.error, err:
!             if err[0] != EINTR:
!                 raise
  
+ 
          if DEBUG:
              print r,w,e
***************
*** 162,166 ****
              if flags:
                  pollster.register(fd, flags)
!         r = pollster.poll (timeout)
          for fd, flags in r:
              try:
--- 160,169 ----
              if flags:
                  pollster.register(fd, flags)
!         try:
!             r = pollster.poll (timeout)
!         except select.error, err:
!             if err[0] != EINTR:
!                 raise
!             r = []
          for fd, flags in r:
              try:
***************
*** 261,265 ****
              self.socket.setsockopt (
                  socket.SOL_SOCKET, socket.SO_REUSEADDR,
!                 self.socket.getsockopt (socket.SOL_SOCKET, socket.SO_REUSEADDR) | 1
                  )
          except:
--- 264,269 ----
              self.socket.setsockopt (
                  socket.SOL_SOCKET, socket.SO_REUSEADDR,
!                 self.socket.getsockopt (socket.SOL_SOCKET,
!                                         socket.SO_REUSEADDR) | 1
                  )
          except:
***************
*** 394,398 ****
  
      def handle_error (self):
!         (file,fun,line), t, v, tbinfo = compact_traceback()
  
          # sometimes a user repr method will crash.
--- 398,402 ----
  
      def handle_error (self):
!         nil, t, v, tbinfo = compact_traceback()
  
          # sometimes a user repr method will crash.