mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-06 13:17:44 +03:00
051ea718f2
Writing a byte to test10.socket is actually the root cause of issue #19154: depending on the timing, it's possible that PID1 closes the socket before socat (or nc, it doesn't matter which tool is actually used) tries to write that one byte to the socket. In this case writing to the socket returns EPIPE, which causes socat to exit(1) and subsequently make the test fail. Since we're only interested in connecting to the socket and triggering the rate limit of the socket, this patch removes the parts that write the single byte to the socket, which should remove the race for good. Since it shouldn't matter whether the test uses socat or nc, let's switch back to nc and hence remove the sole user of socat. The exit status of nc is however ignored because some versions might choke when the socket is closed unexpectedly.
17 lines
641 B
Desktop File
17 lines
641 B
Desktop File
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
[Unit]
|
|
Description=TEST-10-ISSUE-2467
|
|
|
|
[Service]
|
|
ExecStartPre=rm -f /failed /testok
|
|
Type=oneshot
|
|
ExecStart=rm -f /tmp/nonexistent
|
|
ExecStart=systemctl start test10.socket
|
|
ExecStart=-nc -w20 -U /run/test.ctl
|
|
# TriggerLimitIntervalSec= by default is set to 2s. A "sleep 10" should give
|
|
# systemd enough time even on slower machines, to reach the trigger limit.
|
|
ExecStart=sleep 10
|
|
ExecStart=sh -x -c 'test "$(systemctl show test10.socket -P ActiveState)" = failed'
|
|
ExecStart=sh -x -c 'test "$(systemctl show test10.socket -P Result)" = service-condition-failed'
|
|
ExecStart=sh -x -c 'echo OK >/testok'
|