[Python-checkins] CVS: python/dist/src/Lib socket.py,1.11,1.12
Guido van Rossum
gvanrossum@users.sourceforge.net
2001年8月17日 18:23:22 -0700
Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv16772
Modified Files:
socket.py
Log Message:
When the socket is closed, don't just assign 0 to self._sock.
This breaks software that excepts a socket.error but not an
AttributeError.
Index: socket.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/socket.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** socket.py 2001年03月29日 04:36:08 1.11
--- socket.py 2001年08月18日 01:23:20 1.12
***************
*** 123,126 ****
--- 123,131 ----
#
+ _socketmethods = (
+ 'bind', 'connect', 'connect_ex', 'fileno', 'listen',
+ 'getpeername', 'getsockname', 'getsockopt', 'setsockopt',
+ 'recv', 'recvfrom', 'send', 'sendto', 'setblocking', 'shutdown')
+
class _socketobject:
***************
*** 129,133 ****
def close(self):
! self._sock = 0
def __del__(self):
--- 134,138 ----
def close(self):
! self._sock = _closedsocket()
def __del__(self):
***************
*** 144,155 ****
return _fileobject(self._sock, mode, bufsize)
! _s = "def %s(self, *args): return apply(self._sock.%s, args)\n\n"
! for _m in ('bind', 'connect', 'connect_ex', 'fileno', 'listen',
! 'getpeername', 'getsockname',
! 'getsockopt', 'setsockopt',
! 'recv', 'recvfrom', 'send', 'sendto',
! 'setblocking',
! 'shutdown'):
exec _s % (_m, _m)
--- 149,165 ----
return _fileobject(self._sock, mode, bufsize)
! _s = "def %s(self, *args): return self._sock.%s(*args)\n\n"
! for _m in _socketmethods:
exec _s % (_m, _m)
+
+
+ class _closedsocket:
+
+ def _bummer(self):
+ raise error(9, 'Bad file descriptor')
+
+ _s = "def %s(self, *args): self._bummer()\n\n"
+ for _m in _socketmethods:
+ exec _s % _m