Exemplo n.º 1
0
        public void TestClearResetsPseudoHeaderDivision()
        {
            DefaultHttp2Headers http2Headers = new DefaultHttp2Headers();

            http2Headers.Method = (AsciiString)"POST";
            http2Headers.Set((AsciiString)"some", (AsciiString)"value");
            http2Headers.Clear();
            http2Headers.Method = (AsciiString)"GET";
            Assert.Equal(1, http2Headers.Names().Count);
        }
Exemplo n.º 2
0
        public void FailedValidationDoesntCorruptHpack()
        {
            IByteBuffer in1 = Unpooled.Buffer(200);
            IByteBuffer in2 = Unpooled.Buffer(200);

            try
            {
                HpackEncoder hpackEncoder = new HpackEncoder(true);

                IHttp2Headers toEncode = new DefaultHttp2Headers();
                toEncode.Add((AsciiString)":method", (AsciiString)"GET");
                toEncode.Add((AsciiString)":status", (AsciiString)"200");
                toEncode.Add((AsciiString)"foo", (AsciiString)"bar");
                hpackEncoder.EncodeHeaders(1, in1, toEncode, NeverSensitiveDetector.Instance);

                IHttp2Headers decoded = new DefaultHttp2Headers();

                var expected = Assert.Throws <StreamException>(() => hpackDecoder.Decode(1, in1, decoded, true));
                Assert.Equal(1, expected.StreamId);

                // Do it again, this time without validation, to make sure the HPACK state is still sane.
                decoded.Clear();
                hpackEncoder.EncodeHeaders(1, in2, toEncode, NeverSensitiveDetector.Instance);
                hpackDecoder.Decode(1, in2, decoded, false);

                Assert.Equal(3, decoded.Size);
                Assert.Equal("GET", decoded.Method);
                Assert.Equal("200", decoded.Status);
                Assert.Equal("bar", decoded.Get((AsciiString)"foo", null));
            }
            finally
            {
                in1.Release();
                in2.Release();
            }
        }