Skip to content

Commit 91367ca

Browse files
committed
Fix and optimisation
There is a race condition if openssl exit during a renego but after the RENEGOTIATING printing. In this case we could issue a R before the process exit and be blocked in the waiting loop. With the safety guards in place (loop count + timeout) this is harmless but not optimal. Fix this by: - reordering the sleep vs echo to let the process exit and catch the pipe error more frequently. - exit the while loop if RENEGOTIATING is not the last log line. We will catch the pipe error on the next for loop echo. - correct the k variable initialisation - correct the for (( ; ; )) variable $ convention usage - reduce the while loop count limit to 120 to align with the global timeout
1 parent 35496e5 commit 91367ca

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

testssl.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17113,8 +17113,9 @@ run_renego() {
1711317113
# too early losing all the attempts before the session establishment as OpenSSL will not buffer them
1711417114
# (only the first will be till the establishement of the session).
1711517115
(j=0; while [[ $(grep -ac '^SSL-Session:' $TMPFILE) -ne 1 ]] && [[ $j -lt 30 ]]; do sleep $ssl_reneg_wait; j=$(($j+1)); done; \
17116-
for ((i=0; i < $ssl_reneg_attempts; i++ )); do echo R; sleep $ssl_reneg_wait; j=0; \
17117-
while [[ $(grep -ac '^RENEGOTIATING' $ERRFILE) -ne $(($i+3)) ]] && [[ -f $TEMPDIR/allowed_to_loop ]] && [[ $k -lt 180 ]]; \
17116+
for ((i=0; i < $ssl_reneg_attempts; i++ )); do sleep $ssl_reneg_wait; echo R; k=0; \
17117+
while [[ $(grep -ac '^RENEGOTIATING' $ERRFILE) -ne $(($i+3)) ]] && [[ -f $TEMPDIR/allowed_to_loop ]] \
17118+
&& [[ $(tail -n1 $ERRFILE |grep -ac '^RENEGOTIATING') -eq 1 ]] && [[ $k -lt 120 ]]; \
1711817119
do sleep $ssl_reneg_wait; k=$(($k+1)); done; \
1711917120
done) | \
1712017121
$OPENSSL s_client $(s_client_options "$proto $legacycmd $STARTTLS $BUGS -connect $NODEIP:$PORT $PROXY $SNI") >$TMPFILE 2>>$ERRFILE &

0 commit comments

Comments
 (0)