Remove use of -p with lsof

On machines with more modern kernels (>5.4 from testing so far) the
useage of -b seems to conflict with the usage of -p. Whilst the usage of
-b seems like a good idea to avoid blocks as we are tight looping on it,
the usage of -p seems to require the usage of stat() (specifically in
/proc) which -b forbids. All you get is a load of warnings
(suppressable by -w) but never a positive result, which means that all
servers are reported as "Failed to start". We are not keen on losing
-b, so instead parse the output of lsof (using -F to format it) to
check the if PIDs that it outputs match that we are looking for.

Signed-off-by: Paul Elliott <paul.elliott@arm.com>
diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh
index 724d627..2aad39c 100755
--- a/tests/ssl-opt.sh
+++ b/tests/ssl-opt.sh
@@ -566,7 +566,21 @@
             proto=TCP
         fi
         # Make a tight loop, server normally takes less than 1s to start.
-        while ! lsof -a -n -b -i "$proto:$1" -p "$2" >/dev/null 2>/dev/null; do
+        while true; do
+              SERVER_PIDS=$(lsof -a -n -b -i "$proto:$1" -F p | cut -c2-)
+              SERVER_FOUND=false
+              # When proxies are used, more than one PID can be listening on
+              # the same port. Each PID will be on its own line.
+              while read -r PID; do
+                  if [[ $PID == $2 ]]; then
+                      SERVER_FOUND=true
+                      break
+                  fi
+              done <<< "$SERVER_PIDS"
+
+              if ($SERVER_FOUND == true); then
+                  break
+              fi
               if [ $(( $(date +%s) - $START_TIME )) -gt $DOG_DELAY ]; then
                   echo "$3 START TIMEOUT"
                   echo "$3 START TIMEOUT" >> $4