mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Fixes for AF_UNIX support on OS/2:
- return the full size of the sockaddr_un structure, without which bind() fails with EINVAL; - set test_socketserver to use a socket name that meets the form required by the underlying implementation; - don't bother exercising the forking AF_UNIX tests on EMX - its fork() can't handle the stress.
This commit is contained in:
parent
cf6f1b69eb
commit
daedf21852
2 changed files with 23 additions and 4 deletions
|
@ -94,6 +94,19 @@ def pickaddr(proto):
|
|||
return (host, pickport())
|
||||
else:
|
||||
fn = TESTFN + str(pickport())
|
||||
if os.name == 'os2':
|
||||
# AF_UNIX socket names on OS/2 require a specific prefix
|
||||
# which can't include a drive letter and must also use
|
||||
# backslashes as directory separators
|
||||
if fn[1] == ':':
|
||||
fn = fn[2:]
|
||||
if fn[0] in (os.sep, os.altsep):
|
||||
fn = fn[1:]
|
||||
fn = os.path.join('\socket', fn)
|
||||
if os.sep == '/':
|
||||
fn = fn.replace(os.sep, os.altsep)
|
||||
else:
|
||||
fn = fn.replace(os.altsep, os.sep)
|
||||
testfiles.append(fn)
|
||||
return fn
|
||||
|
||||
|
@ -135,11 +148,13 @@ if not hasattr(socket, 'AF_UNIX'):
|
|||
dgramservers = []
|
||||
else:
|
||||
class ForkingUnixStreamServer(ForkingMixIn, UnixStreamServer): pass
|
||||
streamservers = [UnixStreamServer, ThreadingUnixStreamServer,
|
||||
ForkingUnixStreamServer]
|
||||
streamservers = [UnixStreamServer, ThreadingUnixStreamServer]
|
||||
if hasattr(os, 'fork') and os.name not in ('os2',):
|
||||
streamservers.append(ForkingUnixStreamServer)
|
||||
class ForkingUnixDatagramServer(ForkingMixIn, UnixDatagramServer): pass
|
||||
dgramservers = [UnixDatagramServer, ThreadingUnixDatagramServer,
|
||||
ForkingUnixDatagramServer]
|
||||
dgramservers = [UnixDatagramServer, ThreadingUnixDatagramServer]
|
||||
if hasattr(os, 'fork') and os.name not in ('os2',):
|
||||
dgramservers.append(ForkingUnixDatagramServer)
|
||||
|
||||
def testall():
|
||||
testloop(socket.AF_INET, tcpservers, MyStreamHandler, teststream)
|
||||
|
|
|
@ -966,7 +966,11 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
|
|||
memcpy(addr->sun_path, path, len);
|
||||
addr->sun_path[len] = 0;
|
||||
*addr_ret = (struct sockaddr *) addr;
|
||||
#if defined(PYOS_OS2)
|
||||
*len_ret = sizeof(*addr);
|
||||
#else
|
||||
*len_ret = len + sizeof(*addr) - sizeof(addr->sun_path);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
#endif /* AF_UNIX */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue