+ /*
+ * Now read the test data. It may take more attemps here because
+ * it could fail once for each byte read, including all overhead
+ * bytes from the record header/padding etc.
+ */
+ for (ret = -1, i = 0, len = 0; len != sizeof(testdata) &&
+ i < MAX_ATTEMPTS; i++) {
+ ret = SSL_read(serverssl, buf + len, sizeof(buf) - len);
+ if (ret > 0) {
+ len += ret;
+ } else {
+ int ssl_error = SSL_get_error(serverssl, ret);
+
+ if (!TEST_false(ssl_error == SSL_ERROR_SYSCALL ||
+ ssl_error == SSL_ERROR_SSL))
+ goto end;
+ }
+ }
+ if (!TEST_mem_eq(testdata, sizeof(testdata), buf, len))
+ goto end;