[Python-3000-checkins] r56415 - python/branches/py3k-struni/Lib/socket.py

guido.van.rossum python-3000-checkins at python.org
Tue Jul 17 22:41:19 CEST 2007


Author: guido.van.rossum
Date: Tue Jul 17 22:41:19 2007
New Revision: 56415

Modified:
   python/branches/py3k-struni/Lib/socket.py
Log:
(1) SF patch# 1755214 by Amaury Forgeot d'Arc which makes some tests
pass on Windows.

(2) Fix a typo in makefile() where using a text mode would attempt to set
    self.mode instead of text.mode.



Modified: python/branches/py3k-struni/Lib/socket.py
==============================================================================
--- python/branches/py3k-struni/Lib/socket.py	(original)
+++ python/branches/py3k-struni/Lib/socket.py	Tue Jul 17 22:41:19 2007
@@ -87,8 +87,11 @@
     __all__.append("errorTab")
 
 
-_os_has_dup = hasattr(os, "dup")
-if _os_has_dup:
+# True if os.dup() can duplicate socket descriptors.
+# (On Windows at least, os.dup only works on files)
+_can_dup_socket = hasattr(_socket, "dup")
+
+if _can_dup_socket:
     def fromfd(fd, family=AF_INET, type=SOCK_STREAM, proto=0):
         nfd = os.dup(fd)
         return socket(family, type, proto, fileno=nfd)
@@ -99,7 +102,7 @@
     """A subclass of _socket.socket adding the makefile() method."""
 
     __slots__ = ["__weakref__"]
-    if not _os_has_dup:
+    if not _can_dup_socket:
         __slots__.append("_base")
 
     def __repr__(self):
@@ -116,7 +119,7 @@
         conn, addr = _socket.socket.accept(self)
         fd = conn.fileno()
         nfd = fd
-        if _os_has_dup:
+        if _can_dup_socket:
             nfd = os.dup(fd)
         wrapper = socket(self.family, self.type, self.proto, fileno=nfd)
         if fd == nfd:
@@ -125,7 +128,7 @@
             conn.close()
         return wrapper, addr
 
-    if not _os_has_dup:
+    if not _can_dup_socket:
         def close(self):
             """Wrap close() to close the _base as well."""
             _socket.socket.close(self)
@@ -177,7 +180,7 @@
             return buffer
         text = io.TextIOWrapper(buffer, encoding, newline)
         text.name = self.fileno()
-        self.mode = mode
+        text.mode = mode
         return text
 
 


More information about the Python-3000-checkins mailing list