On 14/01/2022 14:46, Jonathan Valliere wrote:
https://github.com/apache/mina/blob/c0ee516726c21115b196834ee984be786cea5818/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java#L277

in 2.2.X the decode buffer is automatically calculated based on the input
size so the entire input buffer can be decoded.  These buffers cannot be
cached anywhere like Thread-Local because the decoded buffer must be
cleanly passed onto the next filter which may or may not go asynchronous.


Hi Jonathan,

when we receive data, we first allocate a 2048 buffer (default size, can be changed with config), read the data and propagate it to the chain.

The Sslhandler first step is to allocate a big (16Kb) buffer before calling SslEngine.unwrap().

This is where I think it might make sense to use a TLS stored buffer:
- we reuse it in SslHandler for the app buffer
- if unwrap does not have any byte produced (HS), then we can simply reset the buffer - otherwise we can now allocate the proper buffer (which is likely to be way smaller) to fit the clear text data into it, instead of passing the big allocated buffer to the next filter.

The gain would be:
- avoiding allocating a buffer during the HS when unwrap does not produce anything
- creating smaller objects in the standard processing (ie data processing)

Emmanuel

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

Reply via email to