@@ -75,23 +75,31 @@ jobs:
7575 env :
7676 LD_LIBRARY_PATH : /usr/local/lib
7777 run : |
78- set -euo pipefail
78+ set -uo pipefail
7979 cd psa
80- stdbuf -oL -eL ./server-tls13-ecc-psa > server.log 2>&1 &
81- for _ in $(seq 1 100); do
82- ss -tln | grep -q ':11111 ' && break
83- sleep 0.2
80+ # The PSA ECC handshake intermittently rejects with a fatal alert (-313),
81+ # and the server exits on any accept failure, so restart it and retry.
82+ ok=0
83+ for a in 1 2 3 4 5; do
84+ pkill -f server-tls13-ecc-psa 2>/dev/null || true
85+ for _ in $(seq 1 50); do ss -tln | grep -q ':11111 ' || break; sleep 0.1; done
86+ stdbuf -oL -eL ./server-tls13-ecc-psa > server.log 2>&1 &
87+ for _ in $(seq 1 100); do ss -tln | grep -q ':11111 ' && break; sleep 0.2; done
88+ ss -tln | grep -q ':11111 ' \
89+ || { echo "attempt $a: server never listened"; cat server.log; continue; }
90+ rc=0
91+ echo "hello psa" | stdbuf -oL -eL ./client-tls13-ecc-psa 127.0.0.1 > client.log 2>&1 || rc=$?
92+ # The server sends a fixed reply, not an echo (server-tls13-ecc-psa.c:185)
93+ if [ "$rc" -eq 0 ] \
94+ && grep -q 'Server: I hear ya fa shizzle' client.log \
95+ && grep -q 'Client: hello psa' server.log; then
96+ ok=1; break
97+ fi
98+ echo "attempt $a failed (client rc=$rc):"
99+ echo "--- client:"; cat client.log
100+ echo "--- server:"; cat server.log
84101 done
85- ss -tln | grep -q ':11111 ' \
86- || { echo "FAIL: server never listened on 11111"; cat server.log; exit 1; }
87- rc=0
88- echo "hello psa" | stdbuf -oL -eL ./client-tls13-ecc-psa 127.0.0.1 > client.log 2>&1 || rc=$?
89- echo "--- client:"; cat client.log
90- echo "--- server:"; cat server.log
91- [ "$rc" -eq 0 ] || { echo "FAIL: client exited $rc"; exit 1; }
92- # The server sends a fixed reply, not an echo (server-tls13-ecc-psa.c:185)
93- grep -q 'Server: I hear ya fa shizzle' client.log \
94- || { echo "FAIL: no reply back from the PSA server"; exit 1; }
95- grep -q 'Client: hello psa' server.log \
96- || { echo "FAIL: server never received our message"; exit 1; }
102+ pkill -f server-tls13-ecc-psa 2>/dev/null || true
103+ [ "$ok" -eq 1 ] \
104+ || { echo "FAIL: PSA handshake did not succeed in 5 attempts"; exit 1; }
97105 echo "verified: TLS 1.3 handshake over mbedTLS PSA"
0 commit comments