diff --git a/http-core/src/main/scala/org/apache/pekko/http/impl/engine/http2/Http2StreamHandling.scala b/http-core/src/main/scala/org/apache/pekko/http/impl/engine/http2/Http2StreamHandling.scala index 1bd369490..26decba61 100644 --- a/http-core/src/main/scala/org/apache/pekko/http/impl/engine/http2/Http2StreamHandling.scala +++ b/http-core/src/main/scala/org/apache/pekko/http/impl/engine/http2/Http2StreamHandling.scala @@ -40,7 +40,6 @@ import scala.util.control.NoStackTrace * Mixed into the Http2ServerDemux graph logic. */ @InternalApi -//noinspection ConvertibleToMethodValue,ScalaWeakerAccess,ScalaUnusedSymbol private[http2] trait Http2StreamHandling extends GraphStageLogic with LogHelper { self => // required API from demux def isServer: Boolean @@ -446,9 +445,10 @@ private[http2] trait Http2StreamHandling extends GraphStageLogic with LogHelper case _: WindowUpdateFrame => // We're not planning on sending any data on this stream anymore, so we don't care about window updates. this - case rst@RstStreamFrame(streamId, _) => - val headers = ParsedHeadersFrame(streamId, endStream = false, Seq((":status", "429")), None) - dispatchSubstream(headers, Right(Source.failed(new PeerClosedStreamException(rst.streamId, rst.errorCode))), correlationAttributes) + case rst: RstStreamFrame => + val headers = ParsedHeadersFrame(rst.streamId, endStream = false, Seq((":status", "429")), None) + dispatchSubstream(headers, Right(Source.failed(new PeerClosedStreamException(rst.streamId, rst.errorCode))), + correlationAttributes) Closed case _ => expectIncomingStream(event, Closed, HalfClosedLocal(_), correlationAttributes) diff --git a/http2-tests/src/test/scala/org/apache/pekko/http/impl/engine/http2/Http2ClientSpec.scala b/http2-tests/src/test/scala/org/apache/pekko/http/impl/engine/http2/Http2ClientSpec.scala index 33b868475..97b665724 100644 --- a/http2-tests/src/test/scala/org/apache/pekko/http/impl/engine/http2/Http2ClientSpec.scala +++ b/http2-tests/src/test/scala/org/apache/pekko/http/impl/engine/http2/Http2ClientSpec.scala @@ -72,7 +72,6 @@ import scala.collection.immutable * * if applicable: provide response frames * * validate the produced application-level responses */ -//noinspection TypeAnnotation class Http2ClientSpec extends PekkoSpecWithMaterializer(""" pekko.http.client.remote-address-header = on pekko.http.client.http2.log-frames = on @@ -292,23 +291,24 @@ class Http2ClientSpec extends PekkoSpecWithMaterializer(""" val dynamicTableUpdateTo8192 = ByteString(63, 225, 63) headerPayload.take(3) shouldBe dynamicTableUpdateTo8192 }) - "close stream if peer sends RST_STREAM frame with REFUSED_STREAM".inAssertAllStagesStopped(new TestSetup with NetProbes { - val data = ByteString("abcd") - user.emitRequest(Post("/", HttpEntity(data))) - val TheStreamId = network.expect[HeadersFrame]().streamId - network.expectDATA(TheStreamId, endStream = true, data) + "close stream if peer sends RST_STREAM frame with REFUSED_STREAM".inAssertAllStagesStopped( + new TestSetup with NetProbes { + val data = ByteString("abcd") + user.emitRequest(Post("/", HttpEntity(data))) + val TheStreamId = network.expect[HeadersFrame]().streamId + network.expectDATA(TheStreamId, endStream = true, data) - network.sendRST_STREAM(TheStreamId, ErrorCode.REFUSED_STREAM) + network.sendRST_STREAM(TheStreamId, ErrorCode.REFUSED_STREAM) - val response = user.expectResponse() - response.status should be(StatusCodes.TooManyRequests) + val response = user.expectResponse() + response.status should be(StatusCodes.TooManyRequests) - val entityDataIn = ByteStringSinkProbe(response.entity.dataBytes) - val error = entityDataIn.expectError() - error.getMessage shouldBe "Stream with ID [1] was closed by peer with code REFUSED_STREAM(0x07)" + val entityDataIn = ByteStringSinkProbe(response.entity.dataBytes) + val error = entityDataIn.expectError() + error.getMessage shouldBe "Stream with ID [1] was closed by peer with code REFUSED_STREAM(0x07)" - connectionShouldStillBeUsable() - }) + connectionShouldStillBeUsable() + }) } "support stream for response data" should {