mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-24 11:20:07 +01:00
client/tests: don't do dup2() dance to pass file descriptor to "tools/test-cloud-meta-mock.py"
"preexec_fn" is not great, because it is not generally safe in multi threaded code (and we don't know whether the test didn't start other threads already, like a GDBus worker thread). Well, it probably is safe, if you only call async signal safe code, but it's not clear what os.dup2() does under the hood. Just avoid that. We can pass on the FD directly.
This commit is contained in:
parent
d533072962
commit
342ee618c7
2 changed files with 3 additions and 9 deletions
|
|
@ -2160,18 +2160,14 @@ class TestNmCloudSetup(TestNmClient):
|
|||
# hallucinogenic substances.
|
||||
s.listen(5)
|
||||
|
||||
def pass_socket():
|
||||
os.dup2(s.fileno(), 3)
|
||||
|
||||
service_path = PathConfiguration.test_cloud_meta_mock_path()
|
||||
env = os.environ.copy()
|
||||
env["LISTEN_FDS"] = "1"
|
||||
env["LISTEN_FD"] = str(s.fileno())
|
||||
p = subprocess.Popen(
|
||||
[sys.executable, service_path],
|
||||
stdin=subprocess.PIPE,
|
||||
env=env,
|
||||
pass_fds=(s.fileno(),),
|
||||
preexec_fn=pass_socket,
|
||||
)
|
||||
|
||||
self.md_url = "http://%s:%d" % s.getsockname()
|
||||
|
|
|
|||
|
|
@ -68,11 +68,9 @@ class SocketHTTPServer(HTTPServer):
|
|||
|
||||
|
||||
# See sd_listen_fds(3)
|
||||
fileno = os.getenv("LISTEN_FDS")
|
||||
fileno = os.getenv("LISTEN_FD")
|
||||
if fileno is not None:
|
||||
if fileno != "1":
|
||||
raise Exception("Bad LISTEN_FDS")
|
||||
s = socket.socket(fileno=3)
|
||||
s = socket.socket(fileno=int(fileno))
|
||||
else:
|
||||
addr = ("localhost", 0)
|
||||
s = socket.socket()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue