Skip to content

Commit e2b934d

Browse files
committed
gh-74667: Address review: larger netdb buffer, clearer probe comment and test diagnostics
1 parent fe28011 commit e2b934d

4 files changed

Lines changed: 21 additions & 13 deletions

File tree

Lib/test/test_socket.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7546,20 +7546,26 @@ def test_getservby_getprotobyname_race(self):
75467546

75477547
def check_servbyname(name, proto, expected):
75487548
for _ in range(loops):
7549-
if socket.getservbyname(name, proto) != expected:
7550-
errors.append('getservbyname')
7549+
got = socket.getservbyname(name, proto)
7550+
if got != expected:
7551+
errors.append(f'getservbyname({name!r}, {proto!r}): '
7552+
f'{got!r} != {expected!r}')
75517553
return
75527554

75537555
def check_servbyport(port, proto, expected):
75547556
for _ in range(loops):
7555-
if socket.getservbyport(port, proto) != expected:
7556-
errors.append('getservbyport')
7557+
got = socket.getservbyport(port, proto)
7558+
if got != expected:
7559+
errors.append(f'getservbyport({port!r}, {proto!r}): '
7560+
f'{got!r} != {expected!r}')
75577561
return
75587562

75597563
def check_protobyname(name, expected):
75607564
for _ in range(loops):
7561-
if socket.getprotobyname(name) != expected:
7562-
errors.append('getprotobyname')
7565+
got = socket.getprotobyname(name)
7566+
if got != expected:
7567+
errors.append(f'getprotobyname({name!r}): '
7568+
f'{got!r} != {expected!r}')
75637569
return
75647570

75657571
threads = [

Modules/socketmodule.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6379,7 +6379,7 @@ socket_getservbyname(PyObject *self, PyObject *args)
63796379
#ifdef HAVE_GETSERVBYNAME_R
63806380
struct servent serv;
63816381
char *buf = NULL;
6382-
size_t buf_len = 1024;
6382+
size_t buf_len = 16384;
63836383
int err = 0;
63846384
#endif
63856385
if (!PyArg_ParseTuple(args, "s|s:getservbyname", &name, &proto))
@@ -6450,7 +6450,7 @@ socket_getservbyport(PyObject *self, PyObject *args)
64506450
#ifdef HAVE_GETSERVBYPORT_R
64516451
struct servent serv;
64526452
char *buf = NULL;
6453-
size_t buf_len = 1024;
6453+
size_t buf_len = 16384;
64546454
int err = 0;
64556455
#endif
64566456
if (!PyArg_ParseTuple(args, "i|s:getservbyport", &port, &proto))
@@ -6527,7 +6527,7 @@ socket_getprotobyname(PyObject *self, PyObject *args)
65276527
#ifdef HAVE_GETPROTOBYNAME_R
65286528
struct protoent proto;
65296529
char *buf = NULL;
6530-
size_t buf_len = 1024;
6530+
size_t buf_len = 16384;
65316531
int err = 0;
65326532
#endif
65336533
if (!PyArg_ParseTuple(args, "s:getprotobyname", &name))

configure

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

configure.ac

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6211,8 +6211,9 @@ AC_SUBST([HAVE_GETHOSTBYNAME_R])
62116211
AC_SUBST([HAVE_GETHOSTBYNAME])
62126212

62136213
# Check for the reentrant getservbyname_r(), getservbyport_r() and
6214-
# getprotobyname_r() functions. Unlike gethostbyname_r() they have a single,
6215-
# POSIX-style signature, so a compile test with that prototype is enough.
6214+
# getprotobyname_r() functions. These compile tests use the glibc/POSIX-TSF
6215+
# 6-argument form; platforms with a different arity (e.g. the 5-argument
6216+
# Solaris/illumos form) fail the probe and fall back to the netdb lock.
62166217
OLD_CFLAGS=$CFLAGS
62176218
CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
62186219

0 commit comments

Comments
 (0)