Skip to content

Commit

Permalink
#11965 introduce EMPTY_WRITABLE_BUFFER constant and use it everywhere…
Browse files Browse the repository at this point in the history
… fill() is called with an empty buffer

Signed-off-by: Ludovic Orban <lorban@bitronix.be>
  • Loading branch information
lorban committed Jul 3, 2024
1 parent e452452 commit 16b64b3
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public void onFillable()
// There are no bytes in the endPoint, so we fill zero.
// However, this will trigger state changes in SSLEngine
// that will later cause it to throw ISE("Internal error").
sslEndPoint.fill(BufferUtil.EMPTY_BUFFER);
sslEndPoint.fill(BufferUtil.EMPTY_WRITABLE_BUFFER);

// Close the connection before filling.
sslEndPoint.shutdownOutput();
Expand All @@ -76,6 +76,6 @@ public void onFillable()
// We want SSLHandshakeException to be thrown instead, because it is
// handled better (it is an IOException) by the Connection code that
// reads from the EndPoint.
assertThrows(SSLHandshakeException.class, () -> sslEndPoint.fill(BufferUtil.EMPTY_BUFFER));
assertThrows(SSLHandshakeException.class, () -> sslEndPoint.fill(BufferUtil.EMPTY_WRITABLE_BUFFER));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
package org.eclipse.jetty.io;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Map;
import java.util.concurrent.Executor;
import javax.net.ssl.SSLEngine;
Expand All @@ -26,7 +25,6 @@
public abstract class NegotiatingClientConnection extends AbstractConnection
{
private static final Logger LOG = LoggerFactory.getLogger(NegotiatingClientConnection.class);
private static final ByteBuffer EMPTY_WRITABLE_BUFFER = ByteBuffer.allocate(0);

private final SSLEngine engine;
private final ClientConnectionFactory connectionFactory;
Expand Down Expand Up @@ -101,7 +99,7 @@ private int fill()
{
try
{
return getEndPoint().fill(EMPTY_WRITABLE_BUFFER);
return getEndPoint().fill(BufferUtil.EMPTY_WRITABLE_BUFFER);
}
catch (IOException x)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ protected void onFillable()
waitingForFill = _flushState == FlushState.WAIT_FOR_FILL;
}
if (waitingForFill)
fill(BufferUtil.EMPTY_BUFFER);
fill(BufferUtil.EMPTY_WRITABLE_BUFFER);
}
}
catch (Throwable e)
Expand Down Expand Up @@ -1080,7 +1080,7 @@ public boolean flush(ByteBuffer... appOuts) throws IOException
break;
if (_fillState == FillState.IDLE)
{
int filled = fill(BufferUtil.EMPTY_BUFFER);
int filled = fill(BufferUtil.EMPTY_WRITABLE_BUFFER);
if (_sslEngine.getHandshakeStatus() != status)
continue;
if (filled < 0)
Expand Down Expand Up @@ -1270,7 +1270,7 @@ protected void onIncompleteFlush()
// Try filling ourselves
try
{
int filled = fill(BufferUtil.EMPTY_BUFFER);
int filled = fill(BufferUtil.EMPTY_WRITABLE_BUFFER);
// If this changed the status, let's try again
if (_sslEngine.getHandshakeStatus() != status)
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ public class QuicStreamEndPoint extends AbstractEndPoint
{
private static final Logger LOG = LoggerFactory.getLogger(QuicStreamEndPoint.class);
private static final ByteBuffer LAST_FLAG = ByteBuffer.allocate(0);
private static final ByteBuffer EMPTY_WRITABLE_BUFFER = ByteBuffer.allocate(0);

private final QuicSession session;
private final long streamId;
Expand Down Expand Up @@ -272,7 +271,7 @@ public boolean onReadable()
// Check if the stream was finished normally.
try
{
fill(EMPTY_WRITABLE_BUFFER);
fill(BufferUtil.EMPTY_WRITABLE_BUFFER);
}
catch (EOFException x)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,20 @@
package org.eclipse.jetty.server;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLEngineResult;

import org.eclipse.jetty.io.AbstractConnection;
import org.eclipse.jetty.io.Connection;
import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.util.BufferUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public abstract class NegotiatingServerConnection extends AbstractConnection
{
private static final Logger LOG = LoggerFactory.getLogger(NegotiatingServerConnection.class);
private static final ByteBuffer EMPTY_WRITABLE_BUFFER = ByteBuffer.allocate(0);

public interface CipherDiscriminator
{
Expand Down Expand Up @@ -145,7 +144,7 @@ private int fill()
{
try
{
return getEndPoint().fill(EMPTY_WRITABLE_BUFFER);
return getEndPoint().fill(BufferUtil.EMPTY_WRITABLE_BUFFER);
}
catch (IOException x)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,8 @@ public class BufferUtil
};

public static final byte[] EMPTY_BYTES = new byte[0];
public static final ByteBuffer EMPTY_BUFFER = ByteBuffer.wrap(EMPTY_BYTES).asReadOnlyBuffer();
public static final ByteBuffer EMPTY_WRITABLE_BUFFER = ByteBuffer.wrap(EMPTY_BYTES);
public static final ByteBuffer EMPTY_BUFFER = EMPTY_WRITABLE_BUFFER.asReadOnlyBuffer();

/**
* Allocate ByteBuffer in flush mode.
Expand Down

0 comments on commit 16b64b3

Please sign in to comment.