[tomcat] branch 8.5.x updated: Improve test for invalid client preface

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[tomcat] branch 8.5.x updated: Improve test for invalid client preface

markt
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/8.5.x by this push:
     new cd573af  Improve test for invalid client preface
cd573af is described below

commit cd573afbaed8256c4d39bdf07e579b30f15e1409
Author: Mark Thomas <[hidden email]>
AuthorDate: Thu Sep 24 15:57:14 2020 +0100

    Improve test for invalid client preface
---
 .../apache/coyote/http2/TestHttp2Section_3_5.java  | 32 ++++++++++++++++++----
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/test/org/apache/coyote/http2/TestHttp2Section_3_5.java b/test/org/apache/coyote/http2/TestHttp2Section_3_5.java
index dc09ca4..e9a9e0e 100644
--- a/test/org/apache/coyote/http2/TestHttp2Section_3_5.java
+++ b/test/org/apache/coyote/http2/TestHttp2Section_3_5.java
@@ -18,22 +18,42 @@ package org.apache.coyote.http2;
 
 import java.io.IOException;
 
+import org.junit.Assert;
 import org.junit.Test;
 
 public class TestHttp2Section_3_5 extends Http2TestBase {
 
-    @Test(expected=IOException.class)
+    @Test
     public void testNoConnectionPreface() throws Exception {
         enableHttp2();
         configureAndStartWebApplication();
         openClientConnection();
         doHttpUpgrade();
-        // Should send client preface here
-        sendPing();
-        // Send several pings else server will block waiting for the client
-        // preface which is longer than a single ping.
+
+        // Server settings
+        parser.readFrame(true);
+        Assert.assertEquals("0-Settings-[3]-[200]\n" +
+                "0-Settings-End\n"
+                , output.getTrace());
+        output.clearTrace();
+
+        // Should send client preface here. This will trigger an error.
+        // Send two pings (2*(9+8)=34 bytes) as server looks for entire preface
+        // of 24 bytes.
         sendPing();
         sendPing();
-        validateHttp2InitialResponse();
+
+        // If the client preface had been valid, this would be an
+        // acknowledgement. Of the settings. As the preface was invalid, it
+        // should be a GOAWAY frame.
+        try {
+            parser.readFrame(true);
+            Assert.assertTrue(output.getTrace(), output.getTrace().startsWith("0-Goaway-[1]-[1]-["));
+        } catch (IOException ioe) {
+            // Ignore
+            // This is expected on some platforms and depends on timing. Once
+            // the server closes the connection the client may see an exception
+            // when trying to read the GOAWAY frame.
+        }
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]