Skip to content

Large message deliveries with TLS and NIO enabled results in a "buffer closed" exception in SslEngineHelper #700

Closed
@YuryAndr

Description

@YuryAndr

Hello!

There was an issue #307 .

And it looks like it reproduced again.

Versions:
Server - RabbitMQ 3.8.11

Client -

<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.13.0</version>
</dependency>

Steps to reproduce

  • SSL and NIO are enabled
  • Send a large message to queue
  • Start consumer of the queue

Result
Connection is closed with error

2021/07/28 19:50:17.240 ERROR [rabbitmq-connection-shutdown-amqp://guest@127.0.0.1:5671/test] c.r.c.i.ForgivingExceptionHandler - An unexpected connection driver error occurred 
javax.net.ssl.SSLException: Unrecognized record version (D)TLS-0.0 , plaintext connection?
	at java.base/sun.security.ssl.SSLEngineInputRecord.bytesInCompletePacket(SSLEngineInputRecord.java:98)
	at java.base/sun.security.ssl.SSLEngineInputRecord.bytesInCompletePacket(SSLEngineInputRecord.java:64)
	at java.base/sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:548)
	at java.base/sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:443)
	at java.base/sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:422)
	at java.base/javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:634)
	at com.rabbitmq.client.impl.nio.SslEngineFrameBuilder.somethingToRead(SslEngineFrameBuilder.java:49)
	at com.rabbitmq.client.impl.nio.FrameBuilder.readFrame(FrameBuilder.java:71)
	at com.rabbitmq.client.impl.nio.NioLoop.run(NioLoop.java:156)
	at java.base/java.lang.Thread.run(Thread.java:834)
2021/07/28 19:50:17.241 ERROR [rabbitmq-connection-shutdown-amqp://guest@127.0.0.1:5671/test] c.r.c.i.ForgivingExceptionHandler - An unexpected connection driver error occurred 
javax.net.ssl.SSLException: Buffer closed
	at com.rabbitmq.client.impl.nio.SslEngineHelper.write(SslEngineHelper.java:176)
	at com.rabbitmq.client.impl.nio.SslEngineByteBufferOutputStream.doFlush(SslEngineByteBufferOutputStream.java:59)
	at com.rabbitmq.client.impl.nio.SslEngineByteBufferOutputStream.flush(SslEngineByteBufferOutputStream.java:53)
	at java.base/java.io.DataOutputStream.flush(DataOutputStream.java:123)
	at com.rabbitmq.client.impl.nio.NioLoop.run(NioLoop.java:244)
	at java.base/java.lang.Thread.run(Thread.java:834)

PS when using rabbit client without nio - it works fine

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions