Quit using "yes" in ssl-opt.sh with openssl

It caused s_server to send an AppData record of 16Kb every millisecond or so,
which destroyed readability of the proxy and client logs.
diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c
index 47d72b0..110a7c7 100644
--- a/programs/test/udp_proxy.c
+++ b/programs/test/udp_proxy.c
@@ -367,13 +367,12 @@
 void update_dropped( const packet *p )
 {
     size_t id = p->len % sizeof( dropped );
-
-    ++dropped[id];
-
     const unsigned char *end = p->buf + p->len;
     const unsigned char *cur = p->buf;
     size_t len = ( ( cur[11] << 8 ) | cur[12] ) + 13;
 
+    ++dropped[id];
+
     /* Avoid counting single record twice */
     if( len == p->len )
         return;
diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh
index 10fd04d..f5949bf 100755
--- a/tests/ssl-opt.sh
+++ b/tests/ssl-opt.sh
@@ -18,7 +18,7 @@
 : ${GNUTLS_CLI:=gnutls-cli}
 : ${GNUTLS_SERV:=gnutls-serv}
 
-O_SRV="$OPENSSL_CMD s_server -cert data_files/server5.crt -key data_files/server5.key"
+O_SRV="$OPENSSL_CMD s_server -www -cert data_files/server5.crt -key data_files/server5.key"
 O_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_CMD s_client"
 G_SRV="$GNUTLS_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key"
 G_CLI="$GNUTLS_CLI"
@@ -172,6 +172,28 @@
     echo "$1" | grep 'ssl_server2\|ssl_client2' > /dev/null
 }
 
+# openssl s_server doesn't have -www with DTLS
+check_osrv_dtls() {
+    if echo "$SRV_CMD" | grep 's_server.*-dtls' >/dev/null; then
+        NEEDS_INPUT=1
+        SRV_CMD="$( echo $SRV_CMD | sed s/-www// )"
+    else
+        NEEDS_INPUT=0
+    fi
+}
+
+# provide input to commands that need it
+provide_input() {
+    if [ $NEEDS_INPUT -eq 0 ]; then
+        return
+    fi
+
+    while true; do
+        echo "HTTP/1.0 200 OK"
+        sleep 1
+    done
+}
+
 # has_mem_err <log_file_name>
 has_mem_err() {
     if ( grep -F 'All heap blocks were freed -- no leaks are possible' "$1" &&
@@ -299,9 +321,9 @@
         # assume proxy starts faster than server
     fi
 
+    check_osrv_dtls
     echo "$SRV_CMD" > $SRV_OUT
-    # "yes" is for servers without -www (openssl with DTLS)
-    yes "HTTP/1.0 200 OK" | $SRV_CMD >> $SRV_OUT 2>&1 &
+    provide_input | $SRV_CMD >> $SRV_OUT 2>&1 &
     SRV_PID=$!
     wait_server_start