todos and cleanups
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
This commit is contained in:
parent
197851257e
commit
c117fbc61a
|
@ -78,6 +78,7 @@ public abstract class QuicConnection extends AbstractConnection
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
// TODO make the buffer size configurable
|
||||||
ByteBuffer cipherBuffer = byteBufferPool.acquire(LibQuiche.QUICHE_MIN_CLIENT_INITIAL_LEN, true);
|
ByteBuffer cipherBuffer = byteBufferPool.acquire(LibQuiche.QUICHE_MIN_CLIENT_INITIAL_LEN, true);
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,6 +37,16 @@ public class QuicDatagramEndPoint extends AbstractEndPoint implements ManagedSel
|
||||||
{
|
{
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(QuicDatagramEndPoint.class);
|
private static final Logger LOG = LoggerFactory.getLogger(QuicDatagramEndPoint.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link #fill(ByteBuffer)} needs to pass the {@link InetSocketAddress} together with the buffer
|
||||||
|
* and {@link #flush(ByteBuffer...)} needs the {@link InetSocketAddress} passed together with the buffer.
|
||||||
|
* Since we cannot change the {@link org.eclipse.jetty.io.EndPoint} API, the {@link InetSocketAddress}
|
||||||
|
* argument must be passed on the side with this thread-local.
|
||||||
|
*
|
||||||
|
* Note: a first implementation was encoding the InetSocketAddress in the buffer(s) but this was as complex
|
||||||
|
* and required a mildly expensive encode-decode cycle each time one of those two methods was called.
|
||||||
|
* This mechanism is as complex and brittle but virtually as cheap as standard argument passing.
|
||||||
|
*/
|
||||||
public static InetAddressArgument INET_ADDRESS_ARGUMENT = new InetAddressArgument();
|
public static InetAddressArgument INET_ADDRESS_ARGUMENT = new InetAddressArgument();
|
||||||
|
|
||||||
private final AutoLock _lock = new AutoLock();
|
private final AutoLock _lock = new AutoLock();
|
||||||
|
@ -272,11 +282,6 @@ public class QuicDatagramEndPoint extends AbstractEndPoint implements ManagedSel
|
||||||
return flushedAll;
|
return flushedAll;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DatagramChannel getChannel()
|
|
||||||
{
|
|
||||||
return _channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getTransport()
|
public Object getTransport()
|
||||||
{
|
{
|
||||||
|
|
|
@ -297,6 +297,7 @@ public abstract class QuicSession
|
||||||
@Override
|
@Override
|
||||||
protected Action process() throws IOException
|
protected Action process() throws IOException
|
||||||
{
|
{
|
||||||
|
// TODO make the buffer size configurable
|
||||||
cipherBuffer = byteBufferPool.acquire(LibQuiche.QUICHE_MIN_CLIENT_INITIAL_LEN, true);
|
cipherBuffer = byteBufferPool.acquire(LibQuiche.QUICHE_MIN_CLIENT_INITIAL_LEN, true);
|
||||||
int pos = BufferUtil.flipToFill(cipherBuffer);
|
int pos = BufferUtil.flipToFill(cipherBuffer);
|
||||||
int drained = quicheConnection.drainCipherText(cipherBuffer);
|
int drained = quicheConnection.drainCipherText(cipherBuffer);
|
||||||
|
|
|
@ -59,11 +59,14 @@ public class ServerQuicConnection extends QuicConnection
|
||||||
protected QuicSession createSession(InetSocketAddress remoteAddress, ByteBuffer cipherBuffer) throws IOException
|
protected QuicSession createSession(InetSocketAddress remoteAddress, ByteBuffer cipherBuffer) throws IOException
|
||||||
{
|
{
|
||||||
ByteBufferPool byteBufferPool = getByteBufferPool();
|
ByteBufferPool byteBufferPool = getByteBufferPool();
|
||||||
|
// TODO make the token validator configurable
|
||||||
QuicheConnection quicheConnection = QuicheConnection.tryAccept(quicheConfig, new SimpleTokenValidator(remoteAddress), cipherBuffer);
|
QuicheConnection quicheConnection = QuicheConnection.tryAccept(quicheConfig, new SimpleTokenValidator(remoteAddress), cipherBuffer);
|
||||||
if (quicheConnection == null)
|
if (quicheConnection == null)
|
||||||
{
|
{
|
||||||
|
// TODO make the buffer size configurable
|
||||||
ByteBuffer negotiationBuffer = byteBufferPool.acquire(LibQuiche.QUICHE_MIN_CLIENT_INITIAL_LEN, true);
|
ByteBuffer negotiationBuffer = byteBufferPool.acquire(LibQuiche.QUICHE_MIN_CLIENT_INITIAL_LEN, true);
|
||||||
int pos = BufferUtil.flipToFill(negotiationBuffer);
|
int pos = BufferUtil.flipToFill(negotiationBuffer);
|
||||||
|
// TODO make the token minter configurable
|
||||||
if (!QuicheConnection.negotiate(new SimpleTokenMinter(remoteAddress), cipherBuffer, negotiationBuffer))
|
if (!QuicheConnection.negotiate(new SimpleTokenMinter(remoteAddress), cipherBuffer, negotiationBuffer))
|
||||||
{
|
{
|
||||||
if (LOG.isDebugEnabled())
|
if (LOG.isDebugEnabled())
|
||||||
|
|
Loading…
Reference in New Issue