You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2022/03/15 13:31:50 UTC
[mina] branch 2.2.X updated (ecc9972 -> f645440)
This is an automated email from the ASF dual-hosted git repository.
elecharny pushed a change to branch 2.2.X
in repository https://gitbox.apache.org/repos/asf/mina.git.
from ecc9972 o Make it so outbound message are written when the inbound is closed. This is necessary when a TLS error has occured and teh inbound is therefore closed, the Alert must still be sent to the remote peer. o Added some missing Javadoc o Code formatting to respect the MINA current code style (no useless final, this, added missing {}, added NL, etc)
new c41cb60 Revert "o Make it so outbound message are written when the inbound is closed."
new f645440 o Renamed SSLxxx classes to Sslxxx to keep an ascendant compatibility o Used meaningful variable nales o Removed useless 'this' o Removed useless 'final' o Transmitted the nexwt filter to the throw_pending_error() method in order to be able to write back the Alert to the remote peer o Write the Alter back to the remote peer in the receive_loop() method when the inbound has been closed following an error while processing a task o Quick exit the receive_loop() method if th [...]
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../org/apache/mina/filter/ssl/SSLHandlerG0.java | 34 +++----
...LContextFactory.java => SslContextFactory.java} | 2 +-
.../filter/ssl/{SSLEvent.java => SslEvent.java} | 2 +-
.../filter/ssl/{SSLFilter.java => SslFilter.java} | 30 +++---
.../ssl/{SSLHandler.java => SslHandler.java} | 102 ++++++++++-----------
.../transport/socket/nio/NioSocketSession.java | 4 +-
.../SSLTestHandshakeExceptionDIRMINA1077Test.java | 6 +-
.../ssl/{SSLFilterMain.java => SslFilterMain.java} | 8 +-
.../java/org/apache/mina/example/chat/Main.java | 4 +-
.../example/chat/client/ChatClientSupport.java | 4 +-
.../org/apache/mina/example/echoserver/Main.java | 4 +-
.../apache/mina/example/tcp/perf/TcpSslClient.java | 4 +-
.../apache/mina/example/tcp/perf/TcpSslServer.java | 4 +-
.../org/apache/mina/example/chat/serverContext.xml | 4 +-
.../mina/example/echoserver/AbstractTest.java | 4 +-
.../mina/example/echoserver/ConnectorTest.java | 10 +-
.../ssl/{SSLFilterTest.java => SslFilterTest.java} | 8 +-
17 files changed, 118 insertions(+), 116 deletions(-)
rename mina-core/src/main/java/org/apache/mina/filter/ssl/{SSLContextFactory.java => SslContextFactory.java} (99%)
rename mina-core/src/main/java/org/apache/mina/filter/ssl/{SSLEvent.java => SslEvent.java} (95%)
rename mina-core/src/main/java/org/apache/mina/filter/ssl/{SSLFilter.java => SslFilter.java} (93%)
rename mina-core/src/main/java/org/apache/mina/filter/ssl/{SSLHandler.java => SslHandler.java} (73%)
rename mina-core/src/test/java/org/apache/mina/filter/ssl/{SSLFilterMain.java => SslFilterMain.java} (95%)
rename mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/{SSLFilterTest.java => SslFilterTest.java} (97%)
Re: [mina] 02/02: o Renamed SSLxxx classes to Sslxxx to keep an ascendant compatibility o Used meaningful variable nales o Removed useless 'this' o Removed useless 'final' o Transmitted the nexwt filter to the throw_pending_error() method in order to be able to write back the Alert to the remote peer o Write the Alter back to the remote peer in the receive_loop() method when the inbound has been closed following an error while processing a task o Quick exit the receive_loop() method if the read message is e [...]
Posted by Gary Gregory <ga...@gmail.com>.
Ah, thank you for the clarification, having japicmp will help avoid these
types of issues in the future :-)
Gary
On Tue, Mar 15, 2022, 09:58 Emmanuel Lécharny <el...@gmail.com> wrote:
> Hi Gary,
>
> this is a working branch in which some classes have been renamed from
> SslXXX to SSLXXX, and this commit is moving back to the previous names,
> exactly for the reason you mention...
>
> So I guess you will approve this comit :-)
>
> On 15/03/2022 14:41, Gary Gregory wrote:
> > You can't rename public or protected classes/types/methods without
> breaking
> > existing applications!
> >
> > Gary
> >
> > Gary
> >
> > On Tue, Mar 15, 2022, 09:31 <el...@apache.org> wrote:
> >
> >> This is an automated email from the ASF dual-hosted git repository.
> >>
> >> elecharny pushed a commit to branch 2.2.X
> >> in repository https://gitbox.apache.org/repos/asf/mina.git
> >>
> >> commit f64544006e9714541e1b472cef5be58148a3fd01
> >> Author: emmanuel lecharny <el...@apache.org>
> >> AuthorDate: Tue Mar 15 14:31:41 2022 +0100
> >>
> >> o Renamed SSLxxx classes to Sslxxx to keep an ascendant
> compatibility
> >> o Used meaningful variable nales
> >> o Removed useless 'this'
> >> o Removed useless 'final'
> >> o Transmitted the nexwt filter to the throw_pending_error() method
> in
> >> order to be able to write back the Alert to the remote peer
> >> o Write the Alter back to the remote peer in the receive_loop()
> method
> >> when the inbound has been closed following an error while processing a
> task
> >> o Quick exit the receive_loop() method if the read message is empty
> >> o Minor formatting (added nl, etc)
> >> o Added missing javadoc
> >> ---
> >> .../org/apache/mina/filter/ssl/SSLHandlerG0.java | 381
> >> ++++++++++++++-------
> >> ...LContextFactory.java => SslContextFactory.java} | 2 +-
> >> .../filter/ssl/{SSLEvent.java => SslEvent.java} | 2 +-
> >> .../filter/ssl/{SSLFilter.java => SslFilter.java} | 30 +-
> >> .../ssl/{SSLHandler.java => SslHandler.java} | 6 +-
> >> .../transport/socket/nio/NioSocketSession.java | 4 +-
> >> .../SSLTestHandshakeExceptionDIRMINA1077Test.java | 6 +-
> >> .../ssl/{SSLFilterMain.java => SslFilterMain.java} | 8 +-
> >> .../java/org/apache/mina/example/chat/Main.java | 4 +-
> >> .../example/chat/client/ChatClientSupport.java | 4 +-
> >> .../org/apache/mina/example/echoserver/Main.java | 4 +-
> >> .../apache/mina/example/tcp/perf/TcpSslClient.java | 4 +-
> >> .../apache/mina/example/tcp/perf/TcpSslServer.java | 4 +-
> >> .../org/apache/mina/example/chat/serverContext.xml | 4 +-
> >> .../mina/example/echoserver/AbstractTest.java | 4 +-
> >> .../mina/example/echoserver/ConnectorTest.java | 10 +-
> >> .../ssl/{SSLFilterTest.java => SslFilterTest.java} | 8 +-
> >> 17 files changed, 304 insertions(+), 181 deletions(-)
> >>
> >> diff --git
> >> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
> >> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
> >> index 76f2d53..31c35f5 100644
> >> ---
> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
> >> +++
> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
> >> @@ -42,7 +42,7 @@ import org.apache.mina.core.write.WriteRequest;
> >> * @author Jonathan Valliere
> >> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> >> */
> >> -public class SSLHandlerG0 extends SSLHandler {
> >> +public class SSLHandlerG0 extends SslHandler {
> >>
> >> /**
> >> * Maximum number of queued messages waiting for encoding
> >> @@ -102,12 +102,12 @@ public class SSLHandlerG0 extends SSLHandler {
> >> /**
> >> * Instantiates a new handler
> >> *
> >> - * @param p engine
> >> - * @param e executor
> >> - * @param s session
> >> + * @param sslEngine The SSLEngine instance
> >> + * @param executor The executor instance to use to process tasks
> >> + * @param session The session to handle
> >> */
> >> - public SSLHandlerG0(SSLEngine p, Executor e, IoSession s) {
> >> - super(p, e, s);
> >> + public SSLHandlerG0(SSLEngine sslEngine, Executor executor,
> IoSession
> >> session) {
> >> + super(sslEngine, executor, session);
> >> }
> >>
> >> /**
> >> @@ -115,7 +115,7 @@ public class SSLHandlerG0 extends SSLHandler {
> >> */
> >> @Override
> >> public boolean isOpen() {
> >> - return this.mEngine.isOutboundDone() == false;
> >> + return mEngine.isOutboundDone() == false;
> >> }
> >>
> >> /**
> >> @@ -123,21 +123,24 @@ public class SSLHandlerG0 extends SSLHandler {
> >> */
> >> @Override
> >> public boolean isConnected() {
> >> - return this.mHandshakeComplete && isOpen();
> >> + return mHandshakeComplete && isOpen();
> >> }
> >>
> >> /**
> >> * {@inheritDoc}
> >> */
> >> - synchronized public void open(final NextFilter next) throws
> >> SSLException {
> >> - if (this.mHandshakeStarted == false) {
> >> - this.mHandshakeStarted = true;
> >> - if (this.mEngine.getUseClientMode()) {
> >> + @Override
> >> + synchronized public void open(NextFilter next) throws SSLException
> {
> >> + if (mHandshakeStarted == false) {
> >> + mHandshakeStarted = true;
> >> +
> >> + if (mEngine.getUseClientMode()) {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} open() - begin handshaking",
> >> toString());
> >> }
> >> - this.mEngine.beginHandshake();
> >> - this.write_handshake(next);
> >> +
> >> + mEngine.beginHandshake();
> >> + write_handshake(next);
> >> }
> >> }
> >> }
> >> @@ -145,51 +148,75 @@ public class SSLHandlerG0 extends SSLHandler {
> >> /**
> >> * {@inheritDoc}
> >> */
> >> - synchronized public void receive(final NextFilter next, final
> >> IoBuffer message) throws SSLException {
> >> - if (this.mDecodeThread == null) {
> >> + @Override
> >> + synchronized public void receive(NextFilter next, IoBuffer message)
> >> throws SSLException {
> >> + if (mDecodeThread == null) {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive() - message {}", toString(),
> >> message);
> >> }
> >> - this.mDecodeThread = Thread.currentThread();
> >> - final IoBuffer source = resume_decode_buffer(message);
> >> +
> >> + mDecodeThread = Thread.currentThread();
> >> + IoBuffer source = resume_decode_buffer(message);
> >> +
> >> try {
> >> - this.receive_loop(next, source);
> >> + receive_loop(next, source);
> >> } finally {
> >> suspend_decode_buffer(source);
> >> - this.mDecodeThread = null;
> >> + mDecodeThread = null;
> >> }
> >> } else {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive() - recursion", toString());
> >> }
> >> - this.receive_loop(next, this.mDecodeBuffer);
> >> +
> >> + receive_loop(next, mDecodeBuffer);
> >> }
> >>
> >> - this.throw_pending_error();
> >> + throw_pending_error(next);
> >> }
> >>
> >> /**
> >> * Process a received message
> >> *
> >> - * @param next
> >> - * @param message
> >> + * @param next The next filter
> >> + * @param message The message to process
> >> *
> >> - * @throws SSLException
> >> + * @throws SSLException If we get some error while processing the
> >> message
> >> */
> >> @SuppressWarnings("incomplete-switch")
> >> - protected void receive_loop(final NextFilter next, final IoBuffer
> >> message) throws SSLException {
> >> + protected void receive_loop(NextFilter next, IoBuffer message)
> throws
> >> SSLException {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive_loop() - source {}", toString(),
> >> message);
> >> }
> >>
> >> if (mEngine.isInboundDone()) {
> >> - throw new IllegalStateException("closed");
> >> + switch (mEngine.getHandshakeStatus()) {
> >> + case NEED_WRAP:
> >> + if (LOGGER.isDebugEnabled()) {
> >> + LOGGER.debug("{} receive_loop() - handshake
> needs
> >> wrap, invoking write", toString());
> >> + }
> >> +
> >> + write_handshake(next);
> >> + break;
> >> + }
> >> +
> >> + if ( mPendingError != null ) {
> >> + throw mPendingError;
> >> + } else {
> >> + throw new IllegalStateException("closed");
> >> + }
> >> }
> >>
> >> - final IoBuffer source = message;
> >> - final IoBuffer dest = allocate_app_buffer(source.remaining());
> >> + IoBuffer source = message;
> >> +
> >> + // No need to fo for another loop if the message is empty
> >> + if (source.remaining() == 0) {
> >> + return;
> >> + }
> >> +
> >> + IoBuffer dest = allocate_app_buffer(source.remaining());
> >>
> >> - final SSLEngineResult result = mEngine.unwrap(source.buf(),
> >> dest.buf());
> >> + SSLEngineResult result = mEngine.unwrap(source.buf(),
> dest.buf());
> >>
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive_loop() - bytes-consumed {},
> >> bytes-produced {}, status {}, handshake {}",
> >> @@ -201,10 +228,12 @@ public class SSLHandlerG0 extends SSLHandler {
> >> dest.free();
> >> } else {
> >> dest.flip();
> >> +
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive_loop() - result {}",
> toString(),
> >> dest);
> >> }
> >> - next.messageReceived(this.mSession, dest);
> >> +
> >> + next.messageReceived(mSession, dest);
> >> }
> >>
> >> switch (result.getHandshakeStatus()) {
> >> @@ -213,34 +242,44 @@ public class SSLHandlerG0 extends SSLHandler {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive_loop() - handshake
> needs
> >> unwrap, looping", toString());
> >> }
> >> - this.receive_loop(next, message);
> >> +
> >> + receive_loop(next, message);
> >> }
> >> +
> >> break;
> >> case NEED_TASK:
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive_loop() - handshake needs
> >> task, scheduling", toString());
> >> }
> >> - this.schedule_task(next);
> >> +
> >> + execute_task(next);
> >> +
> >> break;
> >> case NEED_WRAP:
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive_loop() - handshake needs
> >> wrap, invoking write", toString());
> >> }
> >> - this.write_handshake(next);
> >> +
> >> + write_handshake(next);
> >> break;
> >> +
> >> case FINISHED:
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive_loop() - handshake
> finished,
> >> flushing queue", toString());
> >> }
> >> - this.finish_handshake(next);
> >> +
> >> + finish_handshake(next);
> >> break;
> >> +
> >> case NOT_HANDSHAKING:
> >> if ((result.bytesProduced() != 0 ||
> >> result.bytesConsumed() != 0) && message.hasRemaining()) {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} receive_loop() - trying to
> >> decode more messages, looping", toString());
> >> }
> >> - this.receive_loop(next, message);
> >> +
> >> + receive_loop(next, message);
> >> }
> >> +
> >> break;
> >> }
> >> }
> >> @@ -248,55 +287,62 @@ public class SSLHandlerG0 extends SSLHandler {
> >> /**
> >> * {@inheritDoc}
> >> */
> >> - synchronized public void ack(final NextFilter next, final
> >> WriteRequest request) throws SSLException {
> >> - if (this.mAckQueue.remove(request)) {
> >> + @Override
> >> + synchronized public void ack(NextFilter next, WriteRequest request)
> >> throws SSLException {
> >> + if (mAckQueue.remove(request)) {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} ack() - {}", toString(), request);
> >> }
> >> +
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} ack() - checking to see if any
> messages
> >> can be flushed", toString(), request);
> >> }
> >> - this.flush(next);
> >> +
> >> + flush(next);
> >> }
> >>
> >> - this.throw_pending_error();
> >> + throw_pending_error(next);
> >> }
> >>
> >> /**
> >> * {@inheritDoc}
> >> */
> >> - synchronized public void write(final NextFilter next, final
> >> WriteRequest request)
> >> - throws SSLException, WriteRejectedException {
> >> + @Override
> >> + synchronized public void write(NextFilter next, WriteRequest
> request)
> >> throws SSLException, WriteRejectedException {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write() - source {}", toString(),
> request);
> >> }
> >>
> >> - if (this.mOutboundClosing) {
> >> + if (mOutboundClosing) {
> >> throw new WriteRejectedException(request, "closing");
> >> }
> >>
> >> - if (this.mEncodeQueue.isEmpty()) {
> >> - if (this.write_user_loop(next, request) == false) {
> >> + if (mEncodeQueue.isEmpty()) {
> >> + if (write_user_loop(next, request) == false) {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write() - unable to write right
> now,
> >> saving request for later", toString(),
> >> request);
> >> }
> >> - if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
> >> +
> >> + if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
> >> throw new BufferOverflowException();
> >> }
> >> - this.mEncodeQueue.add(request);
> >> +
> >> + mEncodeQueue.add(request);
> >> }
> >> } else {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write() - unable to write right now,
> >> saving request for later", toString(), request);
> >> }
> >> - if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
> >> +
> >> + if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
> >> throw new BufferOverflowException();
> >> }
> >> - this.mEncodeQueue.add(request);
> >> +
> >> + mEncodeQueue.add(request);
> >> }
> >>
> >> - this.throw_pending_error();
> >> + throw_pending_error(next);
> >> }
> >>
> >> /**
> >> @@ -311,16 +357,15 @@ public class SSLHandlerG0 extends SSLHandler {
> >> * @throws SSLException
> >> */
> >> @SuppressWarnings("incomplete-switch")
> >> - synchronized protected boolean write_user_loop(final NextFilter
> next,
> >> final WriteRequest request)
> >> - throws SSLException {
> >> + synchronized protected boolean write_user_loop(NextFilter next,
> >> WriteRequest request) throws SSLException {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_user_loop() - source {}",
> toString(),
> >> request);
> >> }
> >>
> >> - final IoBuffer source =
> IoBuffer.class.cast(request.getMessage());
> >> - final IoBuffer dest =
> allocate_encode_buffer(source.remaining());
> >> + IoBuffer source = IoBuffer.class.cast(request.getMessage());
> >> + IoBuffer dest = allocate_encode_buffer(source.remaining());
> >>
> >> - final SSLEngineResult result = this.mEngine.wrap(source.buf(),
> >> dest.buf());
> >> + SSLEngineResult result = mEngine.wrap(source.buf(),
> dest.buf());
> >>
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_user_loop() - bytes-consumed {},
> >> bytes-produced {}, status {}, handshake {}",
> >> @@ -334,32 +379,42 @@ public class SSLHandlerG0 extends SSLHandler {
> >> if (result.bytesConsumed() == 0) {
> >> // an handshaking message must have been produced
> >> EncryptedWriteRequest encrypted = new
> >> EncryptedWriteRequest(dest, null);
> >> +
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_user_loop() - result {}",
> >> toString(), encrypted);
> >> }
> >> - next.filterWrite(this.mSession, encrypted);
> >> +
> >> + next.filterWrite(mSession, encrypted);
> >> // do not return because we want to enter the
> handshake
> >> switch
> >> } else {
> >> // then we probably consumed some data
> >> dest.flip();
> >> +
> >> if (source.hasRemaining()) {
> >> EncryptedWriteRequest encrypted = new
> >> EncryptedWriteRequest(dest, null);
> >> - this.mAckQueue.add(encrypted);
> >> + mAckQueue.add(encrypted);
> >> +
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_user_loop() - result
> {}",
> >> toString(), encrypted);
> >> }
> >> - next.filterWrite(this.mSession, encrypted);
> >> - if (this.mAckQueue.size() < MAX_UNACK_MESSAGES) {
> >> +
> >> + next.filterWrite(mSession, encrypted);
> >> +
> >> + if (mAckQueue.size() < MAX_UNACK_MESSAGES) {
> >> return write_user_loop(next, request); //
> write
> >> additional chunks
> >> }
> >> +
> >> return false;
> >> } else {
> >> EncryptedWriteRequest encrypted = new
> >> EncryptedWriteRequest(dest, request);
> >> - this.mAckQueue.add(encrypted);
> >> + mAckQueue.add(encrypted);
> >> +
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_user_loop() - result
> {}",
> >> toString(), encrypted);
> >> }
> >> - next.filterWrite(this.mSession, encrypted);
> >> +
> >> + next.filterWrite(mSession, encrypted);
> >> +
> >> return true;
> >> }
> >> // we return because there is not reason to enter the
> >> handshake switch
> >> @@ -371,19 +426,26 @@ public class SSLHandlerG0 extends SSLHandler {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_user_loop() - handshake
> needs
> >> task, scheduling", toString());
> >> }
> >> - this.schedule_task(next);
> >> +
> >> + //schedule_task(next);
> >> + execute_task(next);
> >> break;
> >> +
> >> case NEED_WRAP:
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_user_loop() - handshake
> needs
> >> wrap, looping", toString());
> >> }
> >> - return this.write_user_loop(next, request);
> >> +
> >> + return write_user_loop(next, request);
> >> +
> >> case FINISHED:
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_user_loop() - handshake
> >> finished, flushing queue", toString());
> >> }
> >> - this.finish_handshake(next);
> >> - return this.write_user_loop(next, request);
> >> +
> >> + finish_handshake(next);
> >> +
> >> + return write_user_loop(next, request);
> >> }
> >>
> >> return false;
> >> @@ -403,8 +465,9 @@ public class SSLHandlerG0 extends SSLHandler {
> >> LOGGER.debug("{} write_handshake() - internal",
> toString());
> >> }
> >>
> >> - final IoBuffer source = ZERO;
> >> - final IoBuffer dest =
> allocate_encode_buffer(source.remaining());
> >> + IoBuffer source = ZERO;
> >> + IoBuffer dest = allocate_encode_buffer(source.remaining());
> >> +
> >> return write_handshake_loop(next, source, dest);
> >> }
> >>
> >> @@ -424,11 +487,11 @@ public class SSLHandlerG0 extends SSLHandler {
> >> */
> >> @SuppressWarnings("incomplete-switch")
> >> protected boolean write_handshake_loop(NextFilter next, IoBuffer
> >> source, IoBuffer dest) throws SSLException {
> >> - if (this.mOutboundClosing && this.mEngine.isOutboundDone()) {
> >> + if (mOutboundClosing && mEngine.isOutboundDone()) {
> >> return false;
> >> }
> >>
> >> - final SSLEngineResult result = this.mEngine.wrap(source.buf(),
> >> dest.buf());
> >> + SSLEngineResult result = mEngine.wrap(source.buf(),
> dest.buf());
> >>
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_handshake_loop() - bytes-consumed
> {},
> >> bytes-produced {}, status {}, handshake {}",
> >> @@ -455,23 +518,26 @@ public class SSLHandlerG0 extends SSLHandler {
> >> LOGGER.debug("{}
> write_handshake_loop() -
> >> handshake needs wrap, fast looping",
> >> toString());
> >> }
> >> +
> >> return write_handshake_loop(next, source,
> >> dest);
> >> }
> >> break;
> >> }
> >> }
> >>
> >> - final boolean success = dest.position() != 0;
> >> + boolean success = dest.position() != 0;
> >>
> >> if (success == false) {
> >> dest.free();
> >> } else {
> >> dest.flip();
> >> +
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_handshake_loop() - result {}",
> >> toString(), dest);
> >> }
> >> - final EncryptedWriteRequest encrypted = new
> >> EncryptedWriteRequest(dest, null);
> >> - next.filterWrite(this.mSession, encrypted);
> >> +
> >> + EncryptedWriteRequest encrypted = new
> >> EncryptedWriteRequest(dest, null);
> >> + next.filterWrite(mSession, encrypted);
> >> }
> >>
> >> switch (result.getHandshakeStatus()) {
> >> @@ -479,25 +545,33 @@ public class SSLHandlerG0 extends SSLHandler {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_handshake_loop() -
> handshake
> >> needs unwrap, invoking receive", toString());
> >> }
> >> - this.receive(next, ZERO);
> >> +
> >> + receive(next, ZERO);
> >> break;
> >> +
> >> case NEED_WRAP:
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_handshake_loop() -
> handshake
> >> needs wrap, looping", toString());
> >> }
> >> - this.write_handshake(next);
> >> +
> >> + write_handshake(next);
> >> break;
> >> +
> >> case NEED_TASK:
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_handshake_loop() -
> handshake
> >> needs task, scheduling", toString());
> >> }
> >> - this.schedule_task(next);
> >> +
> >> + //schedule_task(next);
> >> + execute_task(next);
> >> break;
> >> +
> >> case FINISHED:
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} write_handshake_loop() -
> handshake
> >> finished, flushing queue", toString());
> >> }
> >> - this.finish_handshake(next);
> >> +
> >> + finish_handshake(next);
> >> break;
> >> }
> >>
> >> @@ -510,17 +584,18 @@ public class SSLHandlerG0 extends SSLHandler {
> >> * @param next
> >> * @throws SSLException
> >> */
> >> - synchronized protected void finish_handshake(final NextFilter next)
> >> throws SSLException {
> >> - if (this.mHandshakeComplete == false) {
> >> - this.mHandshakeComplete = true;
> >> - this.mSession.setAttribute(SSLFilter.SSL_SECURED,
> >> this.mEngine.getSession());
> >> - next.event(this.mSession, SSLEvent.SECURED);
> >> + synchronized protected void finish_handshake(NextFilter next)
> throws
> >> SSLException {
> >> + if (mHandshakeComplete == false) {
> >> + mHandshakeComplete = true;
> >> + mSession.setAttribute(SslFilter.SSL_SECURED,
> >> mEngine.getSession());
> >> + next.event(mSession, SslEvent.SECURED);
> >> }
> >> +
> >> /**
> >> * There exists a bug in the JDK which emits FINISHED twice
> >> instead of once.
> >> */
> >> - this.receive(next, ZERO);
> >> - this.flush(next);
> >> + receive(next, ZERO);
> >> + flush(next);
> >> }
> >>
> >> /**
> >> @@ -530,33 +605,38 @@ public class SSLHandlerG0 extends SSLHandler {
> >> *
> >> * @throws SSLException
> >> */
> >> - synchronized public void flush(final NextFilter next) throws
> >> SSLException {
> >> - if (this.mOutboundClosing && this.mOutboundLinger == false) {
> >> + synchronized public void flush(NextFilter next) throws
> SSLException {
> >> + if (mOutboundClosing && mOutboundLinger == false) {
> >> return;
> >> }
> >>
> >> - if (this.mEncodeQueue.size() == 0) {
> >> + if (mEncodeQueue.size() == 0) {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} flush() - no saved messages",
> >> toString());
> >> }
> >> +
> >> return;
> >> }
> >>
> >> WriteRequest current = null;
> >> - while ((this.mAckQueue.size() < MAX_UNACK_MESSAGES) &&
> (current =
> >> this.mEncodeQueue.poll()) != null) {
> >> +
> >> + while ((mAckQueue.size() < MAX_UNACK_MESSAGES) && (current =
> >> mEncodeQueue.poll()) != null) {
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} flush() - {}", toString(), current);
> >> }
> >> - if (this.write_user_loop(next, current) == false) {
> >> - this.mEncodeQueue.addFirst(current);
> >> +
> >> + if (write_user_loop(next, current) == false) {
> >> + mEncodeQueue.addFirst(current);
> >> +
> >> break;
> >> }
> >> }
> >>
> >> - if (this.mOutboundClosing && this.mEncodeQueue.size() == 0) {
> >> - this.mEngine.closeOutbound();
> >> + if (mOutboundClosing && mEncodeQueue.size() == 0) {
> >> + mEngine.closeOutbound();
> >> +
> >> if (ENABLE_SOFT_CLOSURE) {
> >> - this.write_handshake(next);
> >> + write_handshake(next);
> >> }
> >> }
> >> }
> >> @@ -564,77 +644,105 @@ public class SSLHandlerG0 extends SSLHandler {
> >> /**
> >> * {@inheritDoc}
> >> */
> >> - synchronized public void close(final NextFilter next, final boolean
> >> linger) throws SSLException {
> >> - if (this.mOutboundClosing)
> >> + @Override
> >> + synchronized public void close(NextFilter next, boolean linger)
> >> throws SSLException {
> >> + if (mOutboundClosing) {
> >> return;
> >> + }
> >>
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} close() - closing session", toString());
> >> }
> >>
> >> - if (this.mHandshakeComplete) {
> >> - next.event(this.mSession, SSLEvent.UNSECURED);
> >> + if (mHandshakeComplete) {
> >> + next.event(mSession, SslEvent.UNSECURED);
> >> }
> >>
> >> - this.mOutboundLinger = linger;
> >> - this.mOutboundClosing = true;
> >> + mOutboundLinger = linger;
> >> + mOutboundClosing = true;
> >>
> >> if (linger == false) {
> >> - if (this.mEncodeQueue.size() != 0) {
> >> - next.exceptionCaught(this.mSession,
> >> - new WriteRejectedException(new
> >> ArrayList<>(this.mEncodeQueue), "closing"));
> >> - this.mEncodeQueue.clear();
> >> + if (mEncodeQueue.size() != 0) {
> >> + next.exceptionCaught(mSession, new
> >> WriteRejectedException(new ArrayList<>(mEncodeQueue), "closing"));
> >> + mEncodeQueue.clear();
> >> }
> >> - this.mEngine.closeOutbound();
> >> +
> >> + mEngine.closeOutbound();
> >> +
> >> if (ENABLE_SOFT_CLOSURE) {
> >> - this.write_handshake(next);
> >> + write_handshake(next);
> >> }
> >> } else {
> >> - this.flush(next);
> >> + flush(next);
> >> }
> >> }
> >>
> >> - synchronized protected void throw_pending_error() throws
> SSLException
> >> {
> >> - final SSLException e = this.mPendingError;
> >> - if (e != null) {
> >> - this.mPendingError = null;
> >> - throw e;
> >> + /**
> >> + * Process the pending error and loop to send the associated alert
> if
> >> we have some.
> >> + *
> >> + * @param next The next filter in the chain
> >> + * @throws SSLException The rethrown pending error
> >> + */
> >> + synchronized protected void throw_pending_error(NextFilter next)
> >> throws SSLException {
> >> + SSLException sslException = mPendingError;
> >> +
> >> + if (sslException != null) {
> >> + // Loop to send back the alert messages
> >> + receive_loop(next, null);
> >> +
> >> + mPendingError = null;
> >> +
> >> + // And finally rethrow the exception
> >> + throw sslException;
> >> }
> >> }
> >>
> >> - synchronized protected void store_pending_error(SSLException e) {
> >> - SSLException x = this.mPendingError;
> >> - if (x == null) {
> >> - this.mPendingError = e;
> >> + /**
> >> + * Store any error we've got during the handshake or message
> handling
> >> + *
> >> + * @param sslException The exfeption to store
> >> + */
> >> + synchronized protected void store_pending_error(SSLException
> >> sslException) {
> >> + if (mPendingError == null) {
> >> + mPendingError = sslException;
> >> }
> >> }
> >>
> >> - protected void schedule_task(final NextFilter next) {
> >> - if (ENABLE_ASYNC_TASKS) {
> >> - if (this.mExecutor == null) {
> >> - this.execute_task(next);
> >> - } else {
> >> - this.mExecutor.execute(new Runnable() {
> >> - @Override
> >> - public void run() {
> >> - SSLHandlerG0.this.execute_task(next);
> >> - }
> >> - });
> >> - }
> >> + /**
> >> + * Schedule a SSLEngine task for execution, either using an
> Executor,
> >> or immediately.
> >> + *
> >> + * @param next The next filter to call
> >> + */
> >> + protected void schedule_task(NextFilter next) {
> >> + if (ENABLE_ASYNC_TASKS && (mExecutor != null)) {
> >> + mExecutor.execute(new Runnable() {
> >> + @Override
> >> + public void run() {
> >> + SSLHandlerG0.this.execute_task(next);
> >> + }
> >> + });
> >> } else {
> >> - this.execute_task(next);
> >> + execute_task(next);
> >> }
> >> }
> >>
> >> - synchronized protected void execute_task(final NextFilter next) {
> >> - Runnable t = null;
> >> - while ((t = mEngine.getDelegatedTask()) != null) {
> >> + /**
> >> + * Execute a SSLEngine task. We may have more than one.
> >> + *
> >> + * If we get any exception during the processing, an error is
> stored
> >> and thrown.
> >> + *
> >> + * @param next The next filer in the chain
> >> + */
> >> + synchronized protected void execute_task(NextFilter next) {
> >> + Runnable task = null;
> >> +
> >> + while ((task = mEngine.getDelegatedTask()) != null) {
> >> try {
> >> if (LOGGER.isDebugEnabled()) {
> >> - LOGGER.debug("{} task() - executing {}",
> toString(),
> >> t);
> >> + LOGGER.debug("{} task() - executing {}",
> toString(),
> >> task);
> >> }
> >>
> >> - t.run();
> >> + task.run();
> >>
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("{} task() - writing handshake
> >> messages", toString());
> >> @@ -642,7 +750,14 @@ public class SSLHandlerG0 extends SSLHandler {
> >>
> >> write_handshake(next);
> >> } catch (SSLException e) {
> >> - this.store_pending_error(e);
> >> + store_pending_error(e);
> >> +
> >> + try {
> >> + throw_pending_error(next);
> >> + } catch ( SSLException ssle) {
> >> + // ...
> >> + }
> >> +
> >> if (LOGGER.isErrorEnabled()) {
> >> LOGGER.error("{} task() - storing error {}",
> >> toString(), e);
> >> }
> >> diff --git
> >>
> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
> >>
> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
> >> similarity index 99%
> >> rename from
> >>
> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
> >> rename to
> >>
> mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
> >> index 9763954..d19b9b3 100644
> >> ---
> >>
> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
> >> +++
> >>
> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
> >> @@ -49,7 +49,7 @@ import javax.net.ssl.TrustManagerFactory;
> >> *
> >> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> >> */
> >> -public class SSLContextFactory {
> >> +public class SslContextFactory {
> >>
> >> private String provider = null;
> >>
> >> diff --git
> >> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
> >> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
> >> similarity index 95%
> >> rename from
> >> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
> >> rename to
> mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
> >> index 21ad1d3..bd75845 100644
> >> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
> >> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
> >> @@ -27,6 +27,6 @@ import org.apache.mina.filter.FilterEvent;
> >> *
> >> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> >> */
> >> -public enum SSLEvent implements FilterEvent {
> >> +public enum SslEvent implements FilterEvent {
> >> SECURED, UNSECURED
> >> }
> >> diff --git
> >> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
> >> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
> >> similarity index 93%
> >> rename from
> >> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
> >> rename to
> mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
> >> index 61f0917..2503d26 100644
> >> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
> >> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
> >> @@ -50,21 +50,21 @@ import org.slf4j.LoggerFactory;
> >> * @author Jonathan Valliere
> >> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> >> */
> >> -public class SSLFilter extends IoFilterAdapter {
> >> +public class SslFilter extends IoFilterAdapter {
> >> /**
> >> * SSLSession object when the session is secured, otherwise null.
> >> */
> >> - static public final AttributeKey SSL_SECURED = new
> >> AttributeKey(SSLFilter.class, "status");
> >> + static public final AttributeKey SSL_SECURED = new
> >> AttributeKey(SslFilter.class, "status");
> >>
> >> /**
> >> * Returns the SSL2Handler object
> >> */
> >> - static protected final AttributeKey SSL_HANDLER = new
> >> AttributeKey(SSLFilter.class, "handler");
> >> + static protected final AttributeKey SSL_HANDLER = new
> >> AttributeKey(SslFilter.class, "handler");
> >>
> >> /**
> >> * The logger
> >> */
> >> - static protected final Logger LOGGER =
> >> LoggerFactory.getLogger(SSLFilter.class);
> >> + static protected final Logger LOGGER =
> >> LoggerFactory.getLogger(SslFilter.class);
> >>
> >> /**
> >> * Task executor for processing handshakes
> >> @@ -103,7 +103,7 @@ public class SSLFilter extends IoFilterAdapter {
> >> *
> >> * @param sslContext The SSLContext to use
> >> */
> >> - public SSLFilter(SSLContext sslContext) {
> >> + public SslFilter(SSLContext sslContext) {
> >> Objects.requireNonNull(sslContext, "ssl must not be null");
> >>
> >> this.sslContext = sslContext;
> >> @@ -191,7 +191,7 @@ public class SSLFilter extends IoFilterAdapter {
> >> @Override
> >> public void onPreAdd(IoFilterChain parent, String name, NextFilter
> >> next) throws Exception {
> >> // Check that we don't have a SSL filter already present in
> the
> >> chain
> >> - if (parent.contains(SSLFilter.class)) {
> >> + if (parent.contains(SslFilter.class)) {
> >> throw new IllegalStateException("Only one SSL filter is
> >> permitted in a chain");
> >> }
> >>
> >> @@ -232,7 +232,7 @@ public class SSLFilter extends IoFilterAdapter {
> >> * @throws SSLException Any exception thrown by the SslHandler
> closing
> >> */
> >> synchronized protected void onConnected(NextFilter next, IoSession
> >> session) throws SSLException {
> >> - SSLHandler sslHandler =
> >> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
> >> + SslHandler sslHandler =
> >> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
> >>
> >> if (sslHandler == null) {
> >> InetSocketAddress s =
> >> InetSocketAddress.class.cast(session.getRemoteAddress());
> >> @@ -254,7 +254,7 @@ public class SSLFilter extends IoFilterAdapter {
> >> */
> >> synchronized protected void onClose(NextFilter next, IoSession
> >> session, boolean linger) throws SSLException {
> >> session.removeAttribute(SSL_SECURED);
> >> - SSLHandler sslHandler =
> >> SSLHandler.class.cast(session.removeAttribute(SSL_HANDLER));
> >> + SslHandler sslHandler =
> >> SslHandler.class.cast(session.removeAttribute(SSL_HANDLER));
> >>
> >> if (sslHandler != null) {
> >> sslHandler.close(next, linger);
> >> @@ -318,11 +318,19 @@ public class SSLFilter extends IoFilterAdapter {
> >> */
> >> @Override
> >> public void messageReceived(NextFilter next, IoSession session,
> >> Object message) throws Exception {
> >> + //if (session.isServer()) {
> >> + //System.out.println( ">>> Server messageReceived" );
> >> + //} else {
> >> + //System.out.println( ">>> Client messageReceived" );
> >> + //}
> >> +
> >> + //System.out.println( message );
> >> +
> >> if (LOGGER.isDebugEnabled()) {
> >> LOGGER.debug("session {} received {}", session, message);
> >> }
> >>
> >> - SSLHandler sslHandler =
> >> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
> >> + SslHandler sslHandler =
> >> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
> >> sslHandler.receive(next, IoBuffer.class.cast(message));
> >> }
> >>
> >> @@ -337,7 +345,7 @@ public class SSLFilter extends IoFilterAdapter {
> >>
> >> if (request instanceof EncryptedWriteRequest) {
> >> EncryptedWriteRequest encryptedWriteRequest =
> >> EncryptedWriteRequest.class.cast(request);
> >> - SSLHandler sslHandler =
> >> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
> >> + SslHandler sslHandler =
> >> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
> >> sslHandler.ack(next, request);
> >>
> >> if (encryptedWriteRequest.getOriginalRequest() !=
> >> encryptedWriteRequest) {
> >> @@ -360,7 +368,7 @@ public class SSLFilter extends IoFilterAdapter {
> >> if (request instanceof EncryptedWriteRequest || request
> >> instanceof DisableEncryptWriteRequest) {
> >> super.filterWrite(next, session, request);
> >> } else {
> >> - SSLHandler sslHandler =
> >> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
> >> + SslHandler sslHandler =
> >> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
> >> sslHandler.write(next, request);
> >> }
> >> }
> >> diff --git
> >> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
> >> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
> >> similarity index 98%
> >> rename from
> >> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
> >> rename to
> >> mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
> >> index d1a0ffe..fd2c528 100644
> >> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
> >> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
> >> @@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
> >> * @author Jonathan Valliere
> >> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> >> */
> >> -public abstract class SSLHandler {
> >> +public abstract class SslHandler {
> >>
> >> /**
> >> * Minimum size of encoder buffer in packets
> >> @@ -61,7 +61,7 @@ public abstract class SSLHandler {
> >> /**
> >> * Static logger
> >> */
> >> - static protected final Logger LOGGER =
> >> LoggerFactory.getLogger(SSLHandler.class);
> >> + static protected final Logger LOGGER =
> >> LoggerFactory.getLogger(SslHandler.class);
> >>
> >> /**
> >> * Write Requests which are enqueued prior to the completion of
> the
> >> handshaking
> >> @@ -100,7 +100,7 @@ public abstract class SSLHandler {
> >> * @param e executor
> >> * @param s session
> >> */
> >> - public SSLHandler(SSLEngine p, Executor e, IoSession s) {
> >> + public SslHandler(SSLEngine p, Executor e, IoSession s) {
> >> this.mEngine = p;
> >> this.mExecutor = e;
> >> this.mSession = s;
> >> diff --git
> >>
> a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
> >>
> b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
> >> index e7ab682..69e1cc1 100644
> >> ---
> >>
> a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
> >> +++
> >>
> b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
> >> @@ -32,7 +32,7 @@ import org.apache.mina.core.service.IoProcessor;
> >> import org.apache.mina.core.service.IoService;
> >> import org.apache.mina.core.service.TransportMetadata;
> >> import org.apache.mina.core.session.IoSession;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.AbstractSocketSessionConfig;
> >> import org.apache.mina.transport.socket.SocketSessionConfig;
> >>
> >> @@ -340,6 +340,6 @@ class NioSocketSession extends NioSession {
> >> */
> >> @Override
> >> public final boolean isSecured() {
> >> - return (this.getAttribute(SSLFilter.SSL_SECURED) != null);
> >> + return (this.getAttribute(SslFilter.SSL_SECURED) != null);
> >> }
> >> }
> >> diff --git
> >>
> a/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
> >>
> b/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
> >> index cc03fef..157e5a2 100644
> >> ---
> >>
> a/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
> >> +++
> >>
> b/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
> >> @@ -40,7 +40,7 @@ import org.apache.mina.core.future.ConnectFuture;
> >> import org.apache.mina.core.session.IoSession;
> >> import org.apache.mina.filter.codec.ProtocolCodecFilter;
> >> import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> >> import org.apache.mina.transport.socket.nio.NioSocketConnector;
> >> import org.apache.mina.util.AvailablePortFinder;
> >> @@ -90,7 +90,7 @@ public class SSLTestHandshakeExceptionDIRMINA1077Test
> {
> >> DefaultIoFilterChainBuilder filters =
> acceptor.getFilterChain();
> >>
> >> // Inject the SSL filter
> >> - SSLFilter sslFilter = new SSLFilter(createSSLContext(true));
> >> + SslFilter sslFilter = new SslFilter(createSSLContext(true));
> >> filters.addLast("sslFilter", sslFilter);
> >> sslFilter.setNeedClientAuth(true);
> >>
> >> @@ -111,7 +111,7 @@ public class
> SSLTestHandshakeExceptionDIRMINA1077Test {
> >> DefaultIoFilterChainBuilder filters =
> >> nioSocketConnector.getFilterChain();
> >>
> >> // Inject the SSL filter
> >> - SSLFilter sslFilter = new SSLFilter(createSSLContext(false));
> >> + SslFilter sslFilter = new SslFilter(createSSLContext(false));
> >> filters.addLast("sslFilter", sslFilter);
> >>
> >> address = InetAddress.getByName("localhost");
> >> diff --git
> >> a/mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
> >> b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
> >> similarity index 95%
> >> rename from
> >> mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
> >> rename to
> >> mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
> >> index aeb75c6..a2dd900 100644
> >> ---
> a/mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
> >> +++
> b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
> >> @@ -26,7 +26,7 @@ import
> >> org.apache.mina.transport.socket.nio.NioSocketConnector;
> >> import org.slf4j.Logger;
> >> import org.slf4j.LoggerFactory;
> >>
> >> -public class SSLFilterMain {
> >> +public class SslFilterMain {
> >>
> >> public static void main(String[] args) throws
> >> NoSuchAlgorithmException, KeyManagementException, KeyStoreException,
> >> UnrecoverableKeyException, CertificateException,
> IOException {
> >> @@ -40,8 +40,8 @@ public class SSLFilterMain {
> >>
> >> final char[] password = "password".toCharArray();
> >>
> >> -
> ks.load(SSLFilterMain.class.getResourceAsStream("keystore.jks"),
> >> password);
> >> -
> >> ts.load(SSLFilterMain.class.getResourceAsStream("truststore.jks"),
> >> password);
> >> +
> ks.load(SslFilterMain.class.getResourceAsStream("keystore.jks"),
> >> password);
> >> +
> >> ts.load(SslFilterMain.class.getResourceAsStream("truststore.jks"),
> >> password);
> >>
> >> kmf.init(ks, password);
> >> tmf.init(ts);
> >> @@ -49,7 +49,7 @@ public class SSLFilterMain {
> >> final SSLContext context = SSLContext.getInstance("TLSv1.3");
> >> context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new
> >> SecureRandom());
> >>
> >> - final SSLFilter filter = new SSLFilter(context);
> >> + final SslFilter filter = new SslFilter(context);
> >> filter.setEnabledCipherSuites(new String[] {
> >> "TLS_AES_128_GCM_SHA256", "TLS_AES_256_GCM_SHA384" });
> >> filter.setEnabledProtocols(new String[] { "TLSv1.3" });
> >>
> >> diff --git
> >> a/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
> >> b/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
> >> index b2637f3..a936974 100644
> >> --- a/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
> >> +++ b/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
> >> @@ -28,7 +28,7 @@ import
> >> org.apache.mina.filter.codec.textline.TextLineCodecFactory;
> >> import org.apache.mina.filter.compression.CompressionFilter;
> >> import org.apache.mina.filter.logging.LoggingFilter;
> >> import org.apache.mina.filter.logging.MdcInjectionFilter;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> >>
> >> /**
> >> @@ -72,7 +72,7 @@ public class Main {
> >>
> >> private static void addSSLSupport(DefaultIoFilterChainBuilder
> chain)
> >> throws Exception {
> >> - SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
> >> + SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
> >> .getInstance(true));
> >> chain.addLast("sslFilter", sslFilter);
> >> System.out.println("SSL ON");
> >> diff --git
> >>
> a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
> >>
> b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
> >> index f5c2543..cae59ad 100644
> >> ---
> >>
> a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
> >> +++
> >>
> b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
> >> @@ -33,7 +33,7 @@ import
> >> org.apache.mina.filter.codec.textline.TextLineCodecFactory;
> >> import org.apache.mina.filter.compression.CompressionFilter;
> >> import org.apache.mina.filter.logging.LoggingFilter;
> >> import org.apache.mina.filter.logging.MdcInjectionFilter;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.nio.NioSocketConnector;
> >>
> >> /**
> >> @@ -79,7 +79,7 @@ public class ChatClientSupport {
> >> if (useSsl) {
> >> SSLContext sslContext = BogusSSLContextFactory
> >> .getInstance(false);
> >> - SSLFilter sslFilter = new SSLFilter(sslContext);
> >> + SslFilter sslFilter = new SslFilter(sslContext);
> >> connector.getFilterChain().addFirst("sslFilter",
> >> sslFilter);
> >> }
> >>
> >> diff --git
> >>
> a/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
> >>
> b/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
> >> index 7e1c7aa..078f79e 100644
> >> ---
> >>
> a/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
> >> +++
> >>
> b/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
> >> @@ -24,7 +24,7 @@ import java.net.InetSocketAddress;
> >> import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
> >> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
> >> import org.apache.mina.filter.compression.CompressionFilter;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.SocketAcceptor;
> >> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> >>
> >> @@ -68,7 +68,7 @@ public class Main {
> >>
> >> private static void addSSLSupport(DefaultIoFilterChainBuilder
> chain)
> >> throws Exception {
> >> - SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
> >> + SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
> >> .getInstance(true));
> >> chain.addLast("sslFilter", sslFilter);
> >> System.out.println("SSL ON");
> >> diff --git
> >>
> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
> >>
> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
> >> index dd469bf..dca3501 100644
> >> ---
> >>
> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
> >> +++
> >>
> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
> >> @@ -32,7 +32,7 @@ import org.apache.mina.core.service.IoConnector;
> >> import org.apache.mina.core.service.IoHandlerAdapter;
> >> import org.apache.mina.core.session.IdleStatus;
> >> import org.apache.mina.core.session.IoSession;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.nio.NioSocketConnector;
> >>
> >> /**
> >> @@ -70,7 +70,7 @@ public class TcpSslClient extends IoHandlerAdapter {
> >> // Inject teh SSL filter
> >> SSLContext sslContext = BogusSSLContextFactory
> >> .getInstance(false);
> >> - SSLFilter sslFilter = new SSLFilter(sslContext);
> >> + SslFilter sslFilter = new SslFilter(sslContext);
> >> connector.getFilterChain().addFirst("sslFilter", sslFilter);
> >>
> >> connector.setHandler(this);
> >> diff --git
> >>
> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
> >>
> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
> >> index 9bb972c..96b1f50 100644
> >> ---
> >>
> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
> >> +++
> >>
> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
> >> @@ -29,7 +29,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
> >> import org.apache.mina.core.session.IdleStatus;
> >> import org.apache.mina.core.session.IoSession;
> >> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> >>
> >> /**
> >> @@ -136,7 +136,7 @@ public class TcpSslServer extends IoHandlerAdapter {
> >>
> >> // Inject the SSL filter
> >> DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
> >> - SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
> >> + SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
> >> .getInstance(true));
> >> chain.addLast("sslFilter", sslFilter);
> >>
> >> diff --git
> >>
> a/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
> >>
> b/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
> >> index c5b7810..6e78e15 100644
> >> ---
> >>
> a/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
> >> +++
> >>
> b/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
> >> @@ -49,7 +49,7 @@
> >> <bean id="bogusTrustManagerFactory"
> >> class="org.apache.mina.filter.ssl.BogusTrustManagerFactory"/>
> >>
> >> <!-- SSLContext to be used -->
> >> - <bean id="sslContextFactory"
> >> class="org.apache.mina.filter.ssl.SSLContextFactory">
> >> + <bean id="sslContextFactory"
> >> class="org.apache.mina.filter.ssl.SslContextFactory">
> >> <property name="protocol" value="TLS"/>
> >> <property name="keyManagerFactoryAlgorithm" value="SunX509"/>
> >> <property name="keyManagerFactoryKeyStore"><ref
> >> local="keyStore"/></property>
> >> @@ -75,7 +75,7 @@
> >>
> >> <bean id="loggingFilter"
> >> class="org.apache.mina.filter.logging.LoggingFilter" />
> >>
> >> - <bean id="sslFilter" class="org.apache.mina.filter.ssl.SSLFilter">
> >> + <bean id="sslFilter" class="org.apache.mina.filter.ssl.SslFilter">
> >> <constructor-arg ref="sslContext"/>
> >> </bean>
> >>
> >> diff --git
> >>
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
> >>
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
> >> index 733017d..6f5e7df 100644
> >> ---
> >>
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
> >> +++
> >>
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
> >> @@ -30,7 +30,7 @@ import org.apache.mina.core.service.IoAcceptor;
> >> import org.apache.mina.core.session.IoSession;
> >> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
> >> import org.apache.mina.filter.FilterEvent;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.DatagramSessionConfig;
> >> import org.apache.mina.transport.socket.nio.NioDatagramAcceptor;
> >> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> >> @@ -122,7 +122,7 @@ public abstract class AbstractTest {
> >> try {
> >> session.getFilterChain().addFirst(
> >> "SSL",
> >> - new
> SSLFilter(BogusSSLContextFactory
> >> + new
> SslFilter(BogusSSLContextFactory
> >> .getInstance(true)));
> >> } catch (GeneralSecurityException e) {
> >> LOGGER.error("", e);
> >> diff --git
> >>
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
> >>
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
> >> index d78f923..18b6a6a 100644
> >> ---
> >>
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
> >> +++
> >>
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
> >> @@ -33,7 +33,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
> >> import org.apache.mina.core.session.IoSession;
> >> import org.apache.mina.core.write.WriteException;
> >> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.nio.NioDatagramConnector;
> >> import org.apache.mina.transport.socket.nio.NioSocketConnector;
> >> import org.apache.mina.util.AvailablePortFinder;
> >> @@ -58,7 +58,7 @@ public class ConnectorTest extends AbstractTest {
> >> private final int DATA_SIZE = 16;
> >>
> >> private EchoConnectorHandler handler;
> >> - private SSLFilter connectorSSLFilter;
> >> + private SslFilter connectorSslFilter;
> >>
> >> public ConnectorTest() {
> >> // Do nothing
> >> @@ -68,7 +68,7 @@ public class ConnectorTest extends AbstractTest {
> >> public void setUp() throws Exception {
> >> super.setUp();
> >> handler = new EchoConnectorHandler();
> >> - connectorSSLFilter = new SSLFilter(BogusSSLContextFactory
> >> + connectorSslFilter = new SslFilter(BogusSSLContextFactory
> >> .getInstance(false));
> >> }
> >>
> >> @@ -86,7 +86,7 @@ public class ConnectorTest extends AbstractTest {
> >> IoConnector connector = new NioSocketConnector();
> >>
> >> // Add an SSL filter to connector
> >> - connector.getFilterChain().addLast("SSL", connectorSSLFilter);
> >> + connector.getFilterChain().addLast("SSL", connectorSslFilter);
> >> testConnector(connector);
> >> }
> >>
> >> @@ -159,7 +159,7 @@ public class ConnectorTest extends AbstractTest {
> >> assertEquals((byte) '.', handler.readBuf.get());
> >>
> >> // Now start TLS connection
> >> - session.getFilterChain().addFirst("SSL",
> connectorSSLFilter);
> >> + session.getFilterChain().addFirst("SSL",
> connectorSslFilter);
> >> testConnector0(session);
> >> }
> >>
> >> diff --git
> >>
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
> >>
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
> >> similarity index 97%
> >> rename from
> >>
> mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
> >> rename to
> >>
> mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
> >> index f95d0cc..1f5bd99 100644
> >> ---
> >>
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
> >> +++
> >>
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
> >> @@ -41,7 +41,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
> >> import org.apache.mina.core.session.IoSession;
> >> import org.apache.mina.filter.codec.ProtocolCodecFilter;
> >> import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
> >> -import org.apache.mina.filter.ssl.SSLFilter;
> >> +import org.apache.mina.filter.ssl.SslFilter;
> >> import org.apache.mina.transport.socket.SocketAcceptor;
> >> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> >> import org.junit.After;
> >> @@ -53,7 +53,7 @@ import org.junit.Test;
> >> *
> >> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> >> */
> >> -public class SSLFilterTest {
> >> +public class SslFilterTest {
> >>
> >> private int port;
> >> private SocketAcceptor acceptor;
> >> @@ -84,9 +84,9 @@ public class SSLFilterTest {
> >> //
> >> http://java.sun.com/javase/javaseforbusiness/docs/TLSReadme.html
> >>
> >>
> java.lang.System.setProperty("sun.security.ssl.allowUnsafeRenegotiation",
> >> "true");
> >>
> >> - SSLFilter sslFilter = null;
> >> + SslFilter sslFilter = null;
> >> if (useSSL) {
> >> - sslFilter = new
> >> SSLFilter(BogusSSLContextFactory.getInstance(true));
> >> + sslFilter = new
> >> SslFilter(BogusSSLContextFactory.getInstance(true));
> >> acceptor.getFilterChain().addLast("sslFilter", sslFilter);
> >> }
> >> acceptor.getFilterChain().addLast("codec",
> >>
> >
>
> --
> *Emmanuel Lécharny - CTO* 205 Promenade des Anglais – 06200 NICE
> T. +33 (0)4 89 97 36 50
> P. +33 (0)6 08 33 32 61
> emmanuel.lecharny@busit.com https://www.busit.com/
>
Re: [mina] 02/02: o Renamed SSLxxx classes to Sslxxx to keep an ascendant compatibility o Used meaningful variable nales o Removed useless 'this' o Removed useless 'final' o Transmitted the nexwt filter to the throw_pending_error() method in order to be able to write back the Alert to the remote peer o Write the Alter back to the remote peer in the receive_loop() method when the inbound has been closed following an error while processing a task o Quick exit the receive_loop() method if the read message is e [...]
Posted by Emmanuel Lécharny <el...@gmail.com>.
Hi Gary,
this is a working branch in which some classes have been renamed from
SslXXX to SSLXXX, and this commit is moving back to the previous names,
exactly for the reason you mention...
So I guess you will approve this comit :-)
On 15/03/2022 14:41, Gary Gregory wrote:
> You can't rename public or protected classes/types/methods without breaking
> existing applications!
>
> Gary
>
> Gary
>
> On Tue, Mar 15, 2022, 09:31 <el...@apache.org> wrote:
>
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> elecharny pushed a commit to branch 2.2.X
>> in repository https://gitbox.apache.org/repos/asf/mina.git
>>
>> commit f64544006e9714541e1b472cef5be58148a3fd01
>> Author: emmanuel lecharny <el...@apache.org>
>> AuthorDate: Tue Mar 15 14:31:41 2022 +0100
>>
>> o Renamed SSLxxx classes to Sslxxx to keep an ascendant compatibility
>> o Used meaningful variable nales
>> o Removed useless 'this'
>> o Removed useless 'final'
>> o Transmitted the nexwt filter to the throw_pending_error() method in
>> order to be able to write back the Alert to the remote peer
>> o Write the Alter back to the remote peer in the receive_loop() method
>> when the inbound has been closed following an error while processing a task
>> o Quick exit the receive_loop() method if the read message is empty
>> o Minor formatting (added nl, etc)
>> o Added missing javadoc
>> ---
>> .../org/apache/mina/filter/ssl/SSLHandlerG0.java | 381
>> ++++++++++++++-------
>> ...LContextFactory.java => SslContextFactory.java} | 2 +-
>> .../filter/ssl/{SSLEvent.java => SslEvent.java} | 2 +-
>> .../filter/ssl/{SSLFilter.java => SslFilter.java} | 30 +-
>> .../ssl/{SSLHandler.java => SslHandler.java} | 6 +-
>> .../transport/socket/nio/NioSocketSession.java | 4 +-
>> .../SSLTestHandshakeExceptionDIRMINA1077Test.java | 6 +-
>> .../ssl/{SSLFilterMain.java => SslFilterMain.java} | 8 +-
>> .../java/org/apache/mina/example/chat/Main.java | 4 +-
>> .../example/chat/client/ChatClientSupport.java | 4 +-
>> .../org/apache/mina/example/echoserver/Main.java | 4 +-
>> .../apache/mina/example/tcp/perf/TcpSslClient.java | 4 +-
>> .../apache/mina/example/tcp/perf/TcpSslServer.java | 4 +-
>> .../org/apache/mina/example/chat/serverContext.xml | 4 +-
>> .../mina/example/echoserver/AbstractTest.java | 4 +-
>> .../mina/example/echoserver/ConnectorTest.java | 10 +-
>> .../ssl/{SSLFilterTest.java => SslFilterTest.java} | 8 +-
>> 17 files changed, 304 insertions(+), 181 deletions(-)
>>
>> diff --git
>> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
>> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
>> index 76f2d53..31c35f5 100644
>> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
>> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
>> @@ -42,7 +42,7 @@ import org.apache.mina.core.write.WriteRequest;
>> * @author Jonathan Valliere
>> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
>> */
>> -public class SSLHandlerG0 extends SSLHandler {
>> +public class SSLHandlerG0 extends SslHandler {
>>
>> /**
>> * Maximum number of queued messages waiting for encoding
>> @@ -102,12 +102,12 @@ public class SSLHandlerG0 extends SSLHandler {
>> /**
>> * Instantiates a new handler
>> *
>> - * @param p engine
>> - * @param e executor
>> - * @param s session
>> + * @param sslEngine The SSLEngine instance
>> + * @param executor The executor instance to use to process tasks
>> + * @param session The session to handle
>> */
>> - public SSLHandlerG0(SSLEngine p, Executor e, IoSession s) {
>> - super(p, e, s);
>> + public SSLHandlerG0(SSLEngine sslEngine, Executor executor, IoSession
>> session) {
>> + super(sslEngine, executor, session);
>> }
>>
>> /**
>> @@ -115,7 +115,7 @@ public class SSLHandlerG0 extends SSLHandler {
>> */
>> @Override
>> public boolean isOpen() {
>> - return this.mEngine.isOutboundDone() == false;
>> + return mEngine.isOutboundDone() == false;
>> }
>>
>> /**
>> @@ -123,21 +123,24 @@ public class SSLHandlerG0 extends SSLHandler {
>> */
>> @Override
>> public boolean isConnected() {
>> - return this.mHandshakeComplete && isOpen();
>> + return mHandshakeComplete && isOpen();
>> }
>>
>> /**
>> * {@inheritDoc}
>> */
>> - synchronized public void open(final NextFilter next) throws
>> SSLException {
>> - if (this.mHandshakeStarted == false) {
>> - this.mHandshakeStarted = true;
>> - if (this.mEngine.getUseClientMode()) {
>> + @Override
>> + synchronized public void open(NextFilter next) throws SSLException {
>> + if (mHandshakeStarted == false) {
>> + mHandshakeStarted = true;
>> +
>> + if (mEngine.getUseClientMode()) {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} open() - begin handshaking",
>> toString());
>> }
>> - this.mEngine.beginHandshake();
>> - this.write_handshake(next);
>> +
>> + mEngine.beginHandshake();
>> + write_handshake(next);
>> }
>> }
>> }
>> @@ -145,51 +148,75 @@ public class SSLHandlerG0 extends SSLHandler {
>> /**
>> * {@inheritDoc}
>> */
>> - synchronized public void receive(final NextFilter next, final
>> IoBuffer message) throws SSLException {
>> - if (this.mDecodeThread == null) {
>> + @Override
>> + synchronized public void receive(NextFilter next, IoBuffer message)
>> throws SSLException {
>> + if (mDecodeThread == null) {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive() - message {}", toString(),
>> message);
>> }
>> - this.mDecodeThread = Thread.currentThread();
>> - final IoBuffer source = resume_decode_buffer(message);
>> +
>> + mDecodeThread = Thread.currentThread();
>> + IoBuffer source = resume_decode_buffer(message);
>> +
>> try {
>> - this.receive_loop(next, source);
>> + receive_loop(next, source);
>> } finally {
>> suspend_decode_buffer(source);
>> - this.mDecodeThread = null;
>> + mDecodeThread = null;
>> }
>> } else {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive() - recursion", toString());
>> }
>> - this.receive_loop(next, this.mDecodeBuffer);
>> +
>> + receive_loop(next, mDecodeBuffer);
>> }
>>
>> - this.throw_pending_error();
>> + throw_pending_error(next);
>> }
>>
>> /**
>> * Process a received message
>> *
>> - * @param next
>> - * @param message
>> + * @param next The next filter
>> + * @param message The message to process
>> *
>> - * @throws SSLException
>> + * @throws SSLException If we get some error while processing the
>> message
>> */
>> @SuppressWarnings("incomplete-switch")
>> - protected void receive_loop(final NextFilter next, final IoBuffer
>> message) throws SSLException {
>> + protected void receive_loop(NextFilter next, IoBuffer message) throws
>> SSLException {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive_loop() - source {}", toString(),
>> message);
>> }
>>
>> if (mEngine.isInboundDone()) {
>> - throw new IllegalStateException("closed");
>> + switch (mEngine.getHandshakeStatus()) {
>> + case NEED_WRAP:
>> + if (LOGGER.isDebugEnabled()) {
>> + LOGGER.debug("{} receive_loop() - handshake needs
>> wrap, invoking write", toString());
>> + }
>> +
>> + write_handshake(next);
>> + break;
>> + }
>> +
>> + if ( mPendingError != null ) {
>> + throw mPendingError;
>> + } else {
>> + throw new IllegalStateException("closed");
>> + }
>> }
>>
>> - final IoBuffer source = message;
>> - final IoBuffer dest = allocate_app_buffer(source.remaining());
>> + IoBuffer source = message;
>> +
>> + // No need to fo for another loop if the message is empty
>> + if (source.remaining() == 0) {
>> + return;
>> + }
>> +
>> + IoBuffer dest = allocate_app_buffer(source.remaining());
>>
>> - final SSLEngineResult result = mEngine.unwrap(source.buf(),
>> dest.buf());
>> + SSLEngineResult result = mEngine.unwrap(source.buf(), dest.buf());
>>
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive_loop() - bytes-consumed {},
>> bytes-produced {}, status {}, handshake {}",
>> @@ -201,10 +228,12 @@ public class SSLHandlerG0 extends SSLHandler {
>> dest.free();
>> } else {
>> dest.flip();
>> +
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive_loop() - result {}", toString(),
>> dest);
>> }
>> - next.messageReceived(this.mSession, dest);
>> +
>> + next.messageReceived(mSession, dest);
>> }
>>
>> switch (result.getHandshakeStatus()) {
>> @@ -213,34 +242,44 @@ public class SSLHandlerG0 extends SSLHandler {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive_loop() - handshake needs
>> unwrap, looping", toString());
>> }
>> - this.receive_loop(next, message);
>> +
>> + receive_loop(next, message);
>> }
>> +
>> break;
>> case NEED_TASK:
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive_loop() - handshake needs
>> task, scheduling", toString());
>> }
>> - this.schedule_task(next);
>> +
>> + execute_task(next);
>> +
>> break;
>> case NEED_WRAP:
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive_loop() - handshake needs
>> wrap, invoking write", toString());
>> }
>> - this.write_handshake(next);
>> +
>> + write_handshake(next);
>> break;
>> +
>> case FINISHED:
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive_loop() - handshake finished,
>> flushing queue", toString());
>> }
>> - this.finish_handshake(next);
>> +
>> + finish_handshake(next);
>> break;
>> +
>> case NOT_HANDSHAKING:
>> if ((result.bytesProduced() != 0 ||
>> result.bytesConsumed() != 0) && message.hasRemaining()) {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} receive_loop() - trying to
>> decode more messages, looping", toString());
>> }
>> - this.receive_loop(next, message);
>> +
>> + receive_loop(next, message);
>> }
>> +
>> break;
>> }
>> }
>> @@ -248,55 +287,62 @@ public class SSLHandlerG0 extends SSLHandler {
>> /**
>> * {@inheritDoc}
>> */
>> - synchronized public void ack(final NextFilter next, final
>> WriteRequest request) throws SSLException {
>> - if (this.mAckQueue.remove(request)) {
>> + @Override
>> + synchronized public void ack(NextFilter next, WriteRequest request)
>> throws SSLException {
>> + if (mAckQueue.remove(request)) {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} ack() - {}", toString(), request);
>> }
>> +
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} ack() - checking to see if any messages
>> can be flushed", toString(), request);
>> }
>> - this.flush(next);
>> +
>> + flush(next);
>> }
>>
>> - this.throw_pending_error();
>> + throw_pending_error(next);
>> }
>>
>> /**
>> * {@inheritDoc}
>> */
>> - synchronized public void write(final NextFilter next, final
>> WriteRequest request)
>> - throws SSLException, WriteRejectedException {
>> + @Override
>> + synchronized public void write(NextFilter next, WriteRequest request)
>> throws SSLException, WriteRejectedException {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write() - source {}", toString(), request);
>> }
>>
>> - if (this.mOutboundClosing) {
>> + if (mOutboundClosing) {
>> throw new WriteRejectedException(request, "closing");
>> }
>>
>> - if (this.mEncodeQueue.isEmpty()) {
>> - if (this.write_user_loop(next, request) == false) {
>> + if (mEncodeQueue.isEmpty()) {
>> + if (write_user_loop(next, request) == false) {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write() - unable to write right now,
>> saving request for later", toString(),
>> request);
>> }
>> - if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
>> +
>> + if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
>> throw new BufferOverflowException();
>> }
>> - this.mEncodeQueue.add(request);
>> +
>> + mEncodeQueue.add(request);
>> }
>> } else {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write() - unable to write right now,
>> saving request for later", toString(), request);
>> }
>> - if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
>> +
>> + if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
>> throw new BufferOverflowException();
>> }
>> - this.mEncodeQueue.add(request);
>> +
>> + mEncodeQueue.add(request);
>> }
>>
>> - this.throw_pending_error();
>> + throw_pending_error(next);
>> }
>>
>> /**
>> @@ -311,16 +357,15 @@ public class SSLHandlerG0 extends SSLHandler {
>> * @throws SSLException
>> */
>> @SuppressWarnings("incomplete-switch")
>> - synchronized protected boolean write_user_loop(final NextFilter next,
>> final WriteRequest request)
>> - throws SSLException {
>> + synchronized protected boolean write_user_loop(NextFilter next,
>> WriteRequest request) throws SSLException {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_user_loop() - source {}", toString(),
>> request);
>> }
>>
>> - final IoBuffer source = IoBuffer.class.cast(request.getMessage());
>> - final IoBuffer dest = allocate_encode_buffer(source.remaining());
>> + IoBuffer source = IoBuffer.class.cast(request.getMessage());
>> + IoBuffer dest = allocate_encode_buffer(source.remaining());
>>
>> - final SSLEngineResult result = this.mEngine.wrap(source.buf(),
>> dest.buf());
>> + SSLEngineResult result = mEngine.wrap(source.buf(), dest.buf());
>>
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_user_loop() - bytes-consumed {},
>> bytes-produced {}, status {}, handshake {}",
>> @@ -334,32 +379,42 @@ public class SSLHandlerG0 extends SSLHandler {
>> if (result.bytesConsumed() == 0) {
>> // an handshaking message must have been produced
>> EncryptedWriteRequest encrypted = new
>> EncryptedWriteRequest(dest, null);
>> +
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_user_loop() - result {}",
>> toString(), encrypted);
>> }
>> - next.filterWrite(this.mSession, encrypted);
>> +
>> + next.filterWrite(mSession, encrypted);
>> // do not return because we want to enter the handshake
>> switch
>> } else {
>> // then we probably consumed some data
>> dest.flip();
>> +
>> if (source.hasRemaining()) {
>> EncryptedWriteRequest encrypted = new
>> EncryptedWriteRequest(dest, null);
>> - this.mAckQueue.add(encrypted);
>> + mAckQueue.add(encrypted);
>> +
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_user_loop() - result {}",
>> toString(), encrypted);
>> }
>> - next.filterWrite(this.mSession, encrypted);
>> - if (this.mAckQueue.size() < MAX_UNACK_MESSAGES) {
>> +
>> + next.filterWrite(mSession, encrypted);
>> +
>> + if (mAckQueue.size() < MAX_UNACK_MESSAGES) {
>> return write_user_loop(next, request); // write
>> additional chunks
>> }
>> +
>> return false;
>> } else {
>> EncryptedWriteRequest encrypted = new
>> EncryptedWriteRequest(dest, request);
>> - this.mAckQueue.add(encrypted);
>> + mAckQueue.add(encrypted);
>> +
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_user_loop() - result {}",
>> toString(), encrypted);
>> }
>> - next.filterWrite(this.mSession, encrypted);
>> +
>> + next.filterWrite(mSession, encrypted);
>> +
>> return true;
>> }
>> // we return because there is not reason to enter the
>> handshake switch
>> @@ -371,19 +426,26 @@ public class SSLHandlerG0 extends SSLHandler {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_user_loop() - handshake needs
>> task, scheduling", toString());
>> }
>> - this.schedule_task(next);
>> +
>> + //schedule_task(next);
>> + execute_task(next);
>> break;
>> +
>> case NEED_WRAP:
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_user_loop() - handshake needs
>> wrap, looping", toString());
>> }
>> - return this.write_user_loop(next, request);
>> +
>> + return write_user_loop(next, request);
>> +
>> case FINISHED:
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_user_loop() - handshake
>> finished, flushing queue", toString());
>> }
>> - this.finish_handshake(next);
>> - return this.write_user_loop(next, request);
>> +
>> + finish_handshake(next);
>> +
>> + return write_user_loop(next, request);
>> }
>>
>> return false;
>> @@ -403,8 +465,9 @@ public class SSLHandlerG0 extends SSLHandler {
>> LOGGER.debug("{} write_handshake() - internal", toString());
>> }
>>
>> - final IoBuffer source = ZERO;
>> - final IoBuffer dest = allocate_encode_buffer(source.remaining());
>> + IoBuffer source = ZERO;
>> + IoBuffer dest = allocate_encode_buffer(source.remaining());
>> +
>> return write_handshake_loop(next, source, dest);
>> }
>>
>> @@ -424,11 +487,11 @@ public class SSLHandlerG0 extends SSLHandler {
>> */
>> @SuppressWarnings("incomplete-switch")
>> protected boolean write_handshake_loop(NextFilter next, IoBuffer
>> source, IoBuffer dest) throws SSLException {
>> - if (this.mOutboundClosing && this.mEngine.isOutboundDone()) {
>> + if (mOutboundClosing && mEngine.isOutboundDone()) {
>> return false;
>> }
>>
>> - final SSLEngineResult result = this.mEngine.wrap(source.buf(),
>> dest.buf());
>> + SSLEngineResult result = mEngine.wrap(source.buf(), dest.buf());
>>
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_handshake_loop() - bytes-consumed {},
>> bytes-produced {}, status {}, handshake {}",
>> @@ -455,23 +518,26 @@ public class SSLHandlerG0 extends SSLHandler {
>> LOGGER.debug("{} write_handshake_loop() -
>> handshake needs wrap, fast looping",
>> toString());
>> }
>> +
>> return write_handshake_loop(next, source,
>> dest);
>> }
>> break;
>> }
>> }
>>
>> - final boolean success = dest.position() != 0;
>> + boolean success = dest.position() != 0;
>>
>> if (success == false) {
>> dest.free();
>> } else {
>> dest.flip();
>> +
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_handshake_loop() - result {}",
>> toString(), dest);
>> }
>> - final EncryptedWriteRequest encrypted = new
>> EncryptedWriteRequest(dest, null);
>> - next.filterWrite(this.mSession, encrypted);
>> +
>> + EncryptedWriteRequest encrypted = new
>> EncryptedWriteRequest(dest, null);
>> + next.filterWrite(mSession, encrypted);
>> }
>>
>> switch (result.getHandshakeStatus()) {
>> @@ -479,25 +545,33 @@ public class SSLHandlerG0 extends SSLHandler {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_handshake_loop() - handshake
>> needs unwrap, invoking receive", toString());
>> }
>> - this.receive(next, ZERO);
>> +
>> + receive(next, ZERO);
>> break;
>> +
>> case NEED_WRAP:
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_handshake_loop() - handshake
>> needs wrap, looping", toString());
>> }
>> - this.write_handshake(next);
>> +
>> + write_handshake(next);
>> break;
>> +
>> case NEED_TASK:
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_handshake_loop() - handshake
>> needs task, scheduling", toString());
>> }
>> - this.schedule_task(next);
>> +
>> + //schedule_task(next);
>> + execute_task(next);
>> break;
>> +
>> case FINISHED:
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} write_handshake_loop() - handshake
>> finished, flushing queue", toString());
>> }
>> - this.finish_handshake(next);
>> +
>> + finish_handshake(next);
>> break;
>> }
>>
>> @@ -510,17 +584,18 @@ public class SSLHandlerG0 extends SSLHandler {
>> * @param next
>> * @throws SSLException
>> */
>> - synchronized protected void finish_handshake(final NextFilter next)
>> throws SSLException {
>> - if (this.mHandshakeComplete == false) {
>> - this.mHandshakeComplete = true;
>> - this.mSession.setAttribute(SSLFilter.SSL_SECURED,
>> this.mEngine.getSession());
>> - next.event(this.mSession, SSLEvent.SECURED);
>> + synchronized protected void finish_handshake(NextFilter next) throws
>> SSLException {
>> + if (mHandshakeComplete == false) {
>> + mHandshakeComplete = true;
>> + mSession.setAttribute(SslFilter.SSL_SECURED,
>> mEngine.getSession());
>> + next.event(mSession, SslEvent.SECURED);
>> }
>> +
>> /**
>> * There exists a bug in the JDK which emits FINISHED twice
>> instead of once.
>> */
>> - this.receive(next, ZERO);
>> - this.flush(next);
>> + receive(next, ZERO);
>> + flush(next);
>> }
>>
>> /**
>> @@ -530,33 +605,38 @@ public class SSLHandlerG0 extends SSLHandler {
>> *
>> * @throws SSLException
>> */
>> - synchronized public void flush(final NextFilter next) throws
>> SSLException {
>> - if (this.mOutboundClosing && this.mOutboundLinger == false) {
>> + synchronized public void flush(NextFilter next) throws SSLException {
>> + if (mOutboundClosing && mOutboundLinger == false) {
>> return;
>> }
>>
>> - if (this.mEncodeQueue.size() == 0) {
>> + if (mEncodeQueue.size() == 0) {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} flush() - no saved messages",
>> toString());
>> }
>> +
>> return;
>> }
>>
>> WriteRequest current = null;
>> - while ((this.mAckQueue.size() < MAX_UNACK_MESSAGES) && (current =
>> this.mEncodeQueue.poll()) != null) {
>> +
>> + while ((mAckQueue.size() < MAX_UNACK_MESSAGES) && (current =
>> mEncodeQueue.poll()) != null) {
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} flush() - {}", toString(), current);
>> }
>> - if (this.write_user_loop(next, current) == false) {
>> - this.mEncodeQueue.addFirst(current);
>> +
>> + if (write_user_loop(next, current) == false) {
>> + mEncodeQueue.addFirst(current);
>> +
>> break;
>> }
>> }
>>
>> - if (this.mOutboundClosing && this.mEncodeQueue.size() == 0) {
>> - this.mEngine.closeOutbound();
>> + if (mOutboundClosing && mEncodeQueue.size() == 0) {
>> + mEngine.closeOutbound();
>> +
>> if (ENABLE_SOFT_CLOSURE) {
>> - this.write_handshake(next);
>> + write_handshake(next);
>> }
>> }
>> }
>> @@ -564,77 +644,105 @@ public class SSLHandlerG0 extends SSLHandler {
>> /**
>> * {@inheritDoc}
>> */
>> - synchronized public void close(final NextFilter next, final boolean
>> linger) throws SSLException {
>> - if (this.mOutboundClosing)
>> + @Override
>> + synchronized public void close(NextFilter next, boolean linger)
>> throws SSLException {
>> + if (mOutboundClosing) {
>> return;
>> + }
>>
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} close() - closing session", toString());
>> }
>>
>> - if (this.mHandshakeComplete) {
>> - next.event(this.mSession, SSLEvent.UNSECURED);
>> + if (mHandshakeComplete) {
>> + next.event(mSession, SslEvent.UNSECURED);
>> }
>>
>> - this.mOutboundLinger = linger;
>> - this.mOutboundClosing = true;
>> + mOutboundLinger = linger;
>> + mOutboundClosing = true;
>>
>> if (linger == false) {
>> - if (this.mEncodeQueue.size() != 0) {
>> - next.exceptionCaught(this.mSession,
>> - new WriteRejectedException(new
>> ArrayList<>(this.mEncodeQueue), "closing"));
>> - this.mEncodeQueue.clear();
>> + if (mEncodeQueue.size() != 0) {
>> + next.exceptionCaught(mSession, new
>> WriteRejectedException(new ArrayList<>(mEncodeQueue), "closing"));
>> + mEncodeQueue.clear();
>> }
>> - this.mEngine.closeOutbound();
>> +
>> + mEngine.closeOutbound();
>> +
>> if (ENABLE_SOFT_CLOSURE) {
>> - this.write_handshake(next);
>> + write_handshake(next);
>> }
>> } else {
>> - this.flush(next);
>> + flush(next);
>> }
>> }
>>
>> - synchronized protected void throw_pending_error() throws SSLException
>> {
>> - final SSLException e = this.mPendingError;
>> - if (e != null) {
>> - this.mPendingError = null;
>> - throw e;
>> + /**
>> + * Process the pending error and loop to send the associated alert if
>> we have some.
>> + *
>> + * @param next The next filter in the chain
>> + * @throws SSLException The rethrown pending error
>> + */
>> + synchronized protected void throw_pending_error(NextFilter next)
>> throws SSLException {
>> + SSLException sslException = mPendingError;
>> +
>> + if (sslException != null) {
>> + // Loop to send back the alert messages
>> + receive_loop(next, null);
>> +
>> + mPendingError = null;
>> +
>> + // And finally rethrow the exception
>> + throw sslException;
>> }
>> }
>>
>> - synchronized protected void store_pending_error(SSLException e) {
>> - SSLException x = this.mPendingError;
>> - if (x == null) {
>> - this.mPendingError = e;
>> + /**
>> + * Store any error we've got during the handshake or message handling
>> + *
>> + * @param sslException The exfeption to store
>> + */
>> + synchronized protected void store_pending_error(SSLException
>> sslException) {
>> + if (mPendingError == null) {
>> + mPendingError = sslException;
>> }
>> }
>>
>> - protected void schedule_task(final NextFilter next) {
>> - if (ENABLE_ASYNC_TASKS) {
>> - if (this.mExecutor == null) {
>> - this.execute_task(next);
>> - } else {
>> - this.mExecutor.execute(new Runnable() {
>> - @Override
>> - public void run() {
>> - SSLHandlerG0.this.execute_task(next);
>> - }
>> - });
>> - }
>> + /**
>> + * Schedule a SSLEngine task for execution, either using an Executor,
>> or immediately.
>> + *
>> + * @param next The next filter to call
>> + */
>> + protected void schedule_task(NextFilter next) {
>> + if (ENABLE_ASYNC_TASKS && (mExecutor != null)) {
>> + mExecutor.execute(new Runnable() {
>> + @Override
>> + public void run() {
>> + SSLHandlerG0.this.execute_task(next);
>> + }
>> + });
>> } else {
>> - this.execute_task(next);
>> + execute_task(next);
>> }
>> }
>>
>> - synchronized protected void execute_task(final NextFilter next) {
>> - Runnable t = null;
>> - while ((t = mEngine.getDelegatedTask()) != null) {
>> + /**
>> + * Execute a SSLEngine task. We may have more than one.
>> + *
>> + * If we get any exception during the processing, an error is stored
>> and thrown.
>> + *
>> + * @param next The next filer in the chain
>> + */
>> + synchronized protected void execute_task(NextFilter next) {
>> + Runnable task = null;
>> +
>> + while ((task = mEngine.getDelegatedTask()) != null) {
>> try {
>> if (LOGGER.isDebugEnabled()) {
>> - LOGGER.debug("{} task() - executing {}", toString(),
>> t);
>> + LOGGER.debug("{} task() - executing {}", toString(),
>> task);
>> }
>>
>> - t.run();
>> + task.run();
>>
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("{} task() - writing handshake
>> messages", toString());
>> @@ -642,7 +750,14 @@ public class SSLHandlerG0 extends SSLHandler {
>>
>> write_handshake(next);
>> } catch (SSLException e) {
>> - this.store_pending_error(e);
>> + store_pending_error(e);
>> +
>> + try {
>> + throw_pending_error(next);
>> + } catch ( SSLException ssle) {
>> + // ...
>> + }
>> +
>> if (LOGGER.isErrorEnabled()) {
>> LOGGER.error("{} task() - storing error {}",
>> toString(), e);
>> }
>> diff --git
>> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
>> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
>> similarity index 99%
>> rename from
>> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
>> rename to
>> mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
>> index 9763954..d19b9b3 100644
>> ---
>> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
>> +++
>> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
>> @@ -49,7 +49,7 @@ import javax.net.ssl.TrustManagerFactory;
>> *
>> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
>> */
>> -public class SSLContextFactory {
>> +public class SslContextFactory {
>>
>> private String provider = null;
>>
>> diff --git
>> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
>> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
>> similarity index 95%
>> rename from
>> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
>> rename to mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
>> index 21ad1d3..bd75845 100644
>> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
>> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
>> @@ -27,6 +27,6 @@ import org.apache.mina.filter.FilterEvent;
>> *
>> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
>> */
>> -public enum SSLEvent implements FilterEvent {
>> +public enum SslEvent implements FilterEvent {
>> SECURED, UNSECURED
>> }
>> diff --git
>> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
>> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
>> similarity index 93%
>> rename from
>> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
>> rename to mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
>> index 61f0917..2503d26 100644
>> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
>> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
>> @@ -50,21 +50,21 @@ import org.slf4j.LoggerFactory;
>> * @author Jonathan Valliere
>> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
>> */
>> -public class SSLFilter extends IoFilterAdapter {
>> +public class SslFilter extends IoFilterAdapter {
>> /**
>> * SSLSession object when the session is secured, otherwise null.
>> */
>> - static public final AttributeKey SSL_SECURED = new
>> AttributeKey(SSLFilter.class, "status");
>> + static public final AttributeKey SSL_SECURED = new
>> AttributeKey(SslFilter.class, "status");
>>
>> /**
>> * Returns the SSL2Handler object
>> */
>> - static protected final AttributeKey SSL_HANDLER = new
>> AttributeKey(SSLFilter.class, "handler");
>> + static protected final AttributeKey SSL_HANDLER = new
>> AttributeKey(SslFilter.class, "handler");
>>
>> /**
>> * The logger
>> */
>> - static protected final Logger LOGGER =
>> LoggerFactory.getLogger(SSLFilter.class);
>> + static protected final Logger LOGGER =
>> LoggerFactory.getLogger(SslFilter.class);
>>
>> /**
>> * Task executor for processing handshakes
>> @@ -103,7 +103,7 @@ public class SSLFilter extends IoFilterAdapter {
>> *
>> * @param sslContext The SSLContext to use
>> */
>> - public SSLFilter(SSLContext sslContext) {
>> + public SslFilter(SSLContext sslContext) {
>> Objects.requireNonNull(sslContext, "ssl must not be null");
>>
>> this.sslContext = sslContext;
>> @@ -191,7 +191,7 @@ public class SSLFilter extends IoFilterAdapter {
>> @Override
>> public void onPreAdd(IoFilterChain parent, String name, NextFilter
>> next) throws Exception {
>> // Check that we don't have a SSL filter already present in the
>> chain
>> - if (parent.contains(SSLFilter.class)) {
>> + if (parent.contains(SslFilter.class)) {
>> throw new IllegalStateException("Only one SSL filter is
>> permitted in a chain");
>> }
>>
>> @@ -232,7 +232,7 @@ public class SSLFilter extends IoFilterAdapter {
>> * @throws SSLException Any exception thrown by the SslHandler closing
>> */
>> synchronized protected void onConnected(NextFilter next, IoSession
>> session) throws SSLException {
>> - SSLHandler sslHandler =
>> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
>> + SslHandler sslHandler =
>> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
>>
>> if (sslHandler == null) {
>> InetSocketAddress s =
>> InetSocketAddress.class.cast(session.getRemoteAddress());
>> @@ -254,7 +254,7 @@ public class SSLFilter extends IoFilterAdapter {
>> */
>> synchronized protected void onClose(NextFilter next, IoSession
>> session, boolean linger) throws SSLException {
>> session.removeAttribute(SSL_SECURED);
>> - SSLHandler sslHandler =
>> SSLHandler.class.cast(session.removeAttribute(SSL_HANDLER));
>> + SslHandler sslHandler =
>> SslHandler.class.cast(session.removeAttribute(SSL_HANDLER));
>>
>> if (sslHandler != null) {
>> sslHandler.close(next, linger);
>> @@ -318,11 +318,19 @@ public class SSLFilter extends IoFilterAdapter {
>> */
>> @Override
>> public void messageReceived(NextFilter next, IoSession session,
>> Object message) throws Exception {
>> + //if (session.isServer()) {
>> + //System.out.println( ">>> Server messageReceived" );
>> + //} else {
>> + //System.out.println( ">>> Client messageReceived" );
>> + //}
>> +
>> + //System.out.println( message );
>> +
>> if (LOGGER.isDebugEnabled()) {
>> LOGGER.debug("session {} received {}", session, message);
>> }
>>
>> - SSLHandler sslHandler =
>> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
>> + SslHandler sslHandler =
>> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
>> sslHandler.receive(next, IoBuffer.class.cast(message));
>> }
>>
>> @@ -337,7 +345,7 @@ public class SSLFilter extends IoFilterAdapter {
>>
>> if (request instanceof EncryptedWriteRequest) {
>> EncryptedWriteRequest encryptedWriteRequest =
>> EncryptedWriteRequest.class.cast(request);
>> - SSLHandler sslHandler =
>> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
>> + SslHandler sslHandler =
>> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
>> sslHandler.ack(next, request);
>>
>> if (encryptedWriteRequest.getOriginalRequest() !=
>> encryptedWriteRequest) {
>> @@ -360,7 +368,7 @@ public class SSLFilter extends IoFilterAdapter {
>> if (request instanceof EncryptedWriteRequest || request
>> instanceof DisableEncryptWriteRequest) {
>> super.filterWrite(next, session, request);
>> } else {
>> - SSLHandler sslHandler =
>> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
>> + SslHandler sslHandler =
>> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
>> sslHandler.write(next, request);
>> }
>> }
>> diff --git
>> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
>> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
>> similarity index 98%
>> rename from
>> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
>> rename to
>> mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
>> index d1a0ffe..fd2c528 100644
>> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
>> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
>> @@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
>> * @author Jonathan Valliere
>> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
>> */
>> -public abstract class SSLHandler {
>> +public abstract class SslHandler {
>>
>> /**
>> * Minimum size of encoder buffer in packets
>> @@ -61,7 +61,7 @@ public abstract class SSLHandler {
>> /**
>> * Static logger
>> */
>> - static protected final Logger LOGGER =
>> LoggerFactory.getLogger(SSLHandler.class);
>> + static protected final Logger LOGGER =
>> LoggerFactory.getLogger(SslHandler.class);
>>
>> /**
>> * Write Requests which are enqueued prior to the completion of the
>> handshaking
>> @@ -100,7 +100,7 @@ public abstract class SSLHandler {
>> * @param e executor
>> * @param s session
>> */
>> - public SSLHandler(SSLEngine p, Executor e, IoSession s) {
>> + public SslHandler(SSLEngine p, Executor e, IoSession s) {
>> this.mEngine = p;
>> this.mExecutor = e;
>> this.mSession = s;
>> diff --git
>> a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
>> b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
>> index e7ab682..69e1cc1 100644
>> ---
>> a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
>> +++
>> b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
>> @@ -32,7 +32,7 @@ import org.apache.mina.core.service.IoProcessor;
>> import org.apache.mina.core.service.IoService;
>> import org.apache.mina.core.service.TransportMetadata;
>> import org.apache.mina.core.session.IoSession;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.AbstractSocketSessionConfig;
>> import org.apache.mina.transport.socket.SocketSessionConfig;
>>
>> @@ -340,6 +340,6 @@ class NioSocketSession extends NioSession {
>> */
>> @Override
>> public final boolean isSecured() {
>> - return (this.getAttribute(SSLFilter.SSL_SECURED) != null);
>> + return (this.getAttribute(SslFilter.SSL_SECURED) != null);
>> }
>> }
>> diff --git
>> a/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
>> b/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
>> index cc03fef..157e5a2 100644
>> ---
>> a/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
>> +++
>> b/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
>> @@ -40,7 +40,7 @@ import org.apache.mina.core.future.ConnectFuture;
>> import org.apache.mina.core.session.IoSession;
>> import org.apache.mina.filter.codec.ProtocolCodecFilter;
>> import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
>> import org.apache.mina.transport.socket.nio.NioSocketConnector;
>> import org.apache.mina.util.AvailablePortFinder;
>> @@ -90,7 +90,7 @@ public class SSLTestHandshakeExceptionDIRMINA1077Test {
>> DefaultIoFilterChainBuilder filters = acceptor.getFilterChain();
>>
>> // Inject the SSL filter
>> - SSLFilter sslFilter = new SSLFilter(createSSLContext(true));
>> + SslFilter sslFilter = new SslFilter(createSSLContext(true));
>> filters.addLast("sslFilter", sslFilter);
>> sslFilter.setNeedClientAuth(true);
>>
>> @@ -111,7 +111,7 @@ public class SSLTestHandshakeExceptionDIRMINA1077Test {
>> DefaultIoFilterChainBuilder filters =
>> nioSocketConnector.getFilterChain();
>>
>> // Inject the SSL filter
>> - SSLFilter sslFilter = new SSLFilter(createSSLContext(false));
>> + SslFilter sslFilter = new SslFilter(createSSLContext(false));
>> filters.addLast("sslFilter", sslFilter);
>>
>> address = InetAddress.getByName("localhost");
>> diff --git
>> a/mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
>> b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
>> similarity index 95%
>> rename from
>> mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
>> rename to
>> mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
>> index aeb75c6..a2dd900 100644
>> --- a/mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
>> +++ b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
>> @@ -26,7 +26,7 @@ import
>> org.apache.mina.transport.socket.nio.NioSocketConnector;
>> import org.slf4j.Logger;
>> import org.slf4j.LoggerFactory;
>>
>> -public class SSLFilterMain {
>> +public class SslFilterMain {
>>
>> public static void main(String[] args) throws
>> NoSuchAlgorithmException, KeyManagementException, KeyStoreException,
>> UnrecoverableKeyException, CertificateException, IOException {
>> @@ -40,8 +40,8 @@ public class SSLFilterMain {
>>
>> final char[] password = "password".toCharArray();
>>
>> - ks.load(SSLFilterMain.class.getResourceAsStream("keystore.jks"),
>> password);
>> -
>> ts.load(SSLFilterMain.class.getResourceAsStream("truststore.jks"),
>> password);
>> + ks.load(SslFilterMain.class.getResourceAsStream("keystore.jks"),
>> password);
>> +
>> ts.load(SslFilterMain.class.getResourceAsStream("truststore.jks"),
>> password);
>>
>> kmf.init(ks, password);
>> tmf.init(ts);
>> @@ -49,7 +49,7 @@ public class SSLFilterMain {
>> final SSLContext context = SSLContext.getInstance("TLSv1.3");
>> context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new
>> SecureRandom());
>>
>> - final SSLFilter filter = new SSLFilter(context);
>> + final SslFilter filter = new SslFilter(context);
>> filter.setEnabledCipherSuites(new String[] {
>> "TLS_AES_128_GCM_SHA256", "TLS_AES_256_GCM_SHA384" });
>> filter.setEnabledProtocols(new String[] { "TLSv1.3" });
>>
>> diff --git
>> a/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
>> b/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
>> index b2637f3..a936974 100644
>> --- a/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
>> +++ b/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
>> @@ -28,7 +28,7 @@ import
>> org.apache.mina.filter.codec.textline.TextLineCodecFactory;
>> import org.apache.mina.filter.compression.CompressionFilter;
>> import org.apache.mina.filter.logging.LoggingFilter;
>> import org.apache.mina.filter.logging.MdcInjectionFilter;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
>>
>> /**
>> @@ -72,7 +72,7 @@ public class Main {
>>
>> private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
>> throws Exception {
>> - SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
>> + SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
>> .getInstance(true));
>> chain.addLast("sslFilter", sslFilter);
>> System.out.println("SSL ON");
>> diff --git
>> a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
>> b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
>> index f5c2543..cae59ad 100644
>> ---
>> a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
>> +++
>> b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
>> @@ -33,7 +33,7 @@ import
>> org.apache.mina.filter.codec.textline.TextLineCodecFactory;
>> import org.apache.mina.filter.compression.CompressionFilter;
>> import org.apache.mina.filter.logging.LoggingFilter;
>> import org.apache.mina.filter.logging.MdcInjectionFilter;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.nio.NioSocketConnector;
>>
>> /**
>> @@ -79,7 +79,7 @@ public class ChatClientSupport {
>> if (useSsl) {
>> SSLContext sslContext = BogusSSLContextFactory
>> .getInstance(false);
>> - SSLFilter sslFilter = new SSLFilter(sslContext);
>> + SslFilter sslFilter = new SslFilter(sslContext);
>> connector.getFilterChain().addFirst("sslFilter",
>> sslFilter);
>> }
>>
>> diff --git
>> a/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
>> b/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
>> index 7e1c7aa..078f79e 100644
>> ---
>> a/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
>> +++
>> b/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
>> @@ -24,7 +24,7 @@ import java.net.InetSocketAddress;
>> import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
>> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
>> import org.apache.mina.filter.compression.CompressionFilter;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.SocketAcceptor;
>> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
>>
>> @@ -68,7 +68,7 @@ public class Main {
>>
>> private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
>> throws Exception {
>> - SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
>> + SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
>> .getInstance(true));
>> chain.addLast("sslFilter", sslFilter);
>> System.out.println("SSL ON");
>> diff --git
>> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
>> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
>> index dd469bf..dca3501 100644
>> ---
>> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
>> +++
>> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
>> @@ -32,7 +32,7 @@ import org.apache.mina.core.service.IoConnector;
>> import org.apache.mina.core.service.IoHandlerAdapter;
>> import org.apache.mina.core.session.IdleStatus;
>> import org.apache.mina.core.session.IoSession;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.nio.NioSocketConnector;
>>
>> /**
>> @@ -70,7 +70,7 @@ public class TcpSslClient extends IoHandlerAdapter {
>> // Inject teh SSL filter
>> SSLContext sslContext = BogusSSLContextFactory
>> .getInstance(false);
>> - SSLFilter sslFilter = new SSLFilter(sslContext);
>> + SslFilter sslFilter = new SslFilter(sslContext);
>> connector.getFilterChain().addFirst("sslFilter", sslFilter);
>>
>> connector.setHandler(this);
>> diff --git
>> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
>> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
>> index 9bb972c..96b1f50 100644
>> ---
>> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
>> +++
>> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
>> @@ -29,7 +29,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
>> import org.apache.mina.core.session.IdleStatus;
>> import org.apache.mina.core.session.IoSession;
>> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
>>
>> /**
>> @@ -136,7 +136,7 @@ public class TcpSslServer extends IoHandlerAdapter {
>>
>> // Inject the SSL filter
>> DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
>> - SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
>> + SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
>> .getInstance(true));
>> chain.addLast("sslFilter", sslFilter);
>>
>> diff --git
>> a/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
>> b/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
>> index c5b7810..6e78e15 100644
>> ---
>> a/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
>> +++
>> b/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
>> @@ -49,7 +49,7 @@
>> <bean id="bogusTrustManagerFactory"
>> class="org.apache.mina.filter.ssl.BogusTrustManagerFactory"/>
>>
>> <!-- SSLContext to be used -->
>> - <bean id="sslContextFactory"
>> class="org.apache.mina.filter.ssl.SSLContextFactory">
>> + <bean id="sslContextFactory"
>> class="org.apache.mina.filter.ssl.SslContextFactory">
>> <property name="protocol" value="TLS"/>
>> <property name="keyManagerFactoryAlgorithm" value="SunX509"/>
>> <property name="keyManagerFactoryKeyStore"><ref
>> local="keyStore"/></property>
>> @@ -75,7 +75,7 @@
>>
>> <bean id="loggingFilter"
>> class="org.apache.mina.filter.logging.LoggingFilter" />
>>
>> - <bean id="sslFilter" class="org.apache.mina.filter.ssl.SSLFilter">
>> + <bean id="sslFilter" class="org.apache.mina.filter.ssl.SslFilter">
>> <constructor-arg ref="sslContext"/>
>> </bean>
>>
>> diff --git
>> a/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
>> b/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
>> index 733017d..6f5e7df 100644
>> ---
>> a/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
>> +++
>> b/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
>> @@ -30,7 +30,7 @@ import org.apache.mina.core.service.IoAcceptor;
>> import org.apache.mina.core.session.IoSession;
>> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
>> import org.apache.mina.filter.FilterEvent;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.DatagramSessionConfig;
>> import org.apache.mina.transport.socket.nio.NioDatagramAcceptor;
>> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
>> @@ -122,7 +122,7 @@ public abstract class AbstractTest {
>> try {
>> session.getFilterChain().addFirst(
>> "SSL",
>> - new SSLFilter(BogusSSLContextFactory
>> + new SslFilter(BogusSSLContextFactory
>> .getInstance(true)));
>> } catch (GeneralSecurityException e) {
>> LOGGER.error("", e);
>> diff --git
>> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
>> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
>> index d78f923..18b6a6a 100644
>> ---
>> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
>> +++
>> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
>> @@ -33,7 +33,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
>> import org.apache.mina.core.session.IoSession;
>> import org.apache.mina.core.write.WriteException;
>> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.nio.NioDatagramConnector;
>> import org.apache.mina.transport.socket.nio.NioSocketConnector;
>> import org.apache.mina.util.AvailablePortFinder;
>> @@ -58,7 +58,7 @@ public class ConnectorTest extends AbstractTest {
>> private final int DATA_SIZE = 16;
>>
>> private EchoConnectorHandler handler;
>> - private SSLFilter connectorSSLFilter;
>> + private SslFilter connectorSslFilter;
>>
>> public ConnectorTest() {
>> // Do nothing
>> @@ -68,7 +68,7 @@ public class ConnectorTest extends AbstractTest {
>> public void setUp() throws Exception {
>> super.setUp();
>> handler = new EchoConnectorHandler();
>> - connectorSSLFilter = new SSLFilter(BogusSSLContextFactory
>> + connectorSslFilter = new SslFilter(BogusSSLContextFactory
>> .getInstance(false));
>> }
>>
>> @@ -86,7 +86,7 @@ public class ConnectorTest extends AbstractTest {
>> IoConnector connector = new NioSocketConnector();
>>
>> // Add an SSL filter to connector
>> - connector.getFilterChain().addLast("SSL", connectorSSLFilter);
>> + connector.getFilterChain().addLast("SSL", connectorSslFilter);
>> testConnector(connector);
>> }
>>
>> @@ -159,7 +159,7 @@ public class ConnectorTest extends AbstractTest {
>> assertEquals((byte) '.', handler.readBuf.get());
>>
>> // Now start TLS connection
>> - session.getFilterChain().addFirst("SSL", connectorSSLFilter);
>> + session.getFilterChain().addFirst("SSL", connectorSslFilter);
>> testConnector0(session);
>> }
>>
>> diff --git
>> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
>> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
>> similarity index 97%
>> rename from
>> mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
>> rename to
>> mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
>> index f95d0cc..1f5bd99 100644
>> ---
>> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
>> +++
>> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
>> @@ -41,7 +41,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
>> import org.apache.mina.core.session.IoSession;
>> import org.apache.mina.filter.codec.ProtocolCodecFilter;
>> import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
>> -import org.apache.mina.filter.ssl.SSLFilter;
>> +import org.apache.mina.filter.ssl.SslFilter;
>> import org.apache.mina.transport.socket.SocketAcceptor;
>> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
>> import org.junit.After;
>> @@ -53,7 +53,7 @@ import org.junit.Test;
>> *
>> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
>> */
>> -public class SSLFilterTest {
>> +public class SslFilterTest {
>>
>> private int port;
>> private SocketAcceptor acceptor;
>> @@ -84,9 +84,9 @@ public class SSLFilterTest {
>> //
>> http://java.sun.com/javase/javaseforbusiness/docs/TLSReadme.html
>>
>> java.lang.System.setProperty("sun.security.ssl.allowUnsafeRenegotiation",
>> "true");
>>
>> - SSLFilter sslFilter = null;
>> + SslFilter sslFilter = null;
>> if (useSSL) {
>> - sslFilter = new
>> SSLFilter(BogusSSLContextFactory.getInstance(true));
>> + sslFilter = new
>> SslFilter(BogusSSLContextFactory.getInstance(true));
>> acceptor.getFilterChain().addLast("sslFilter", sslFilter);
>> }
>> acceptor.getFilterChain().addLast("codec",
>>
>
--
*Emmanuel Lécharny - CTO* 205 Promenade des Anglais – 06200 NICE
T. +33 (0)4 89 97 36 50
P. +33 (0)6 08 33 32 61
emmanuel.lecharny@busit.com https://www.busit.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@mina.apache.org
For additional commands, e-mail: dev-help@mina.apache.org
Re: [mina] 02/02: o Renamed SSLxxx classes to Sslxxx to keep an ascendant compatibility o Used meaningful variable nales o Removed useless 'this' o Removed useless 'final' o Transmitted the nexwt filter to the throw_pending_error() method in order to be able to write back the Alert to the remote peer o Write the Alter back to the remote peer in the receive_loop() method when the inbound has been closed following an error while processing a task o Quick exit the receive_loop() method if the read message is e [...]
Posted by Gary Gregory <ga...@gmail.com>.
You can't rename public or protected classes/types/methods without breaking
existing applications!
Gary
Gary
On Tue, Mar 15, 2022, 09:31 <el...@apache.org> wrote:
> This is an automated email from the ASF dual-hosted git repository.
>
> elecharny pushed a commit to branch 2.2.X
> in repository https://gitbox.apache.org/repos/asf/mina.git
>
> commit f64544006e9714541e1b472cef5be58148a3fd01
> Author: emmanuel lecharny <el...@apache.org>
> AuthorDate: Tue Mar 15 14:31:41 2022 +0100
>
> o Renamed SSLxxx classes to Sslxxx to keep an ascendant compatibility
> o Used meaningful variable nales
> o Removed useless 'this'
> o Removed useless 'final'
> o Transmitted the nexwt filter to the throw_pending_error() method in
> order to be able to write back the Alert to the remote peer
> o Write the Alter back to the remote peer in the receive_loop() method
> when the inbound has been closed following an error while processing a task
> o Quick exit the receive_loop() method if the read message is empty
> o Minor formatting (added nl, etc)
> o Added missing javadoc
> ---
> .../org/apache/mina/filter/ssl/SSLHandlerG0.java | 381
> ++++++++++++++-------
> ...LContextFactory.java => SslContextFactory.java} | 2 +-
> .../filter/ssl/{SSLEvent.java => SslEvent.java} | 2 +-
> .../filter/ssl/{SSLFilter.java => SslFilter.java} | 30 +-
> .../ssl/{SSLHandler.java => SslHandler.java} | 6 +-
> .../transport/socket/nio/NioSocketSession.java | 4 +-
> .../SSLTestHandshakeExceptionDIRMINA1077Test.java | 6 +-
> .../ssl/{SSLFilterMain.java => SslFilterMain.java} | 8 +-
> .../java/org/apache/mina/example/chat/Main.java | 4 +-
> .../example/chat/client/ChatClientSupport.java | 4 +-
> .../org/apache/mina/example/echoserver/Main.java | 4 +-
> .../apache/mina/example/tcp/perf/TcpSslClient.java | 4 +-
> .../apache/mina/example/tcp/perf/TcpSslServer.java | 4 +-
> .../org/apache/mina/example/chat/serverContext.xml | 4 +-
> .../mina/example/echoserver/AbstractTest.java | 4 +-
> .../mina/example/echoserver/ConnectorTest.java | 10 +-
> .../ssl/{SSLFilterTest.java => SslFilterTest.java} | 8 +-
> 17 files changed, 304 insertions(+), 181 deletions(-)
>
> diff --git
> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
> index 76f2d53..31c35f5 100644
> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
> @@ -42,7 +42,7 @@ import org.apache.mina.core.write.WriteRequest;
> * @author Jonathan Valliere
> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> */
> -public class SSLHandlerG0 extends SSLHandler {
> +public class SSLHandlerG0 extends SslHandler {
>
> /**
> * Maximum number of queued messages waiting for encoding
> @@ -102,12 +102,12 @@ public class SSLHandlerG0 extends SSLHandler {
> /**
> * Instantiates a new handler
> *
> - * @param p engine
> - * @param e executor
> - * @param s session
> + * @param sslEngine The SSLEngine instance
> + * @param executor The executor instance to use to process tasks
> + * @param session The session to handle
> */
> - public SSLHandlerG0(SSLEngine p, Executor e, IoSession s) {
> - super(p, e, s);
> + public SSLHandlerG0(SSLEngine sslEngine, Executor executor, IoSession
> session) {
> + super(sslEngine, executor, session);
> }
>
> /**
> @@ -115,7 +115,7 @@ public class SSLHandlerG0 extends SSLHandler {
> */
> @Override
> public boolean isOpen() {
> - return this.mEngine.isOutboundDone() == false;
> + return mEngine.isOutboundDone() == false;
> }
>
> /**
> @@ -123,21 +123,24 @@ public class SSLHandlerG0 extends SSLHandler {
> */
> @Override
> public boolean isConnected() {
> - return this.mHandshakeComplete && isOpen();
> + return mHandshakeComplete && isOpen();
> }
>
> /**
> * {@inheritDoc}
> */
> - synchronized public void open(final NextFilter next) throws
> SSLException {
> - if (this.mHandshakeStarted == false) {
> - this.mHandshakeStarted = true;
> - if (this.mEngine.getUseClientMode()) {
> + @Override
> + synchronized public void open(NextFilter next) throws SSLException {
> + if (mHandshakeStarted == false) {
> + mHandshakeStarted = true;
> +
> + if (mEngine.getUseClientMode()) {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} open() - begin handshaking",
> toString());
> }
> - this.mEngine.beginHandshake();
> - this.write_handshake(next);
> +
> + mEngine.beginHandshake();
> + write_handshake(next);
> }
> }
> }
> @@ -145,51 +148,75 @@ public class SSLHandlerG0 extends SSLHandler {
> /**
> * {@inheritDoc}
> */
> - synchronized public void receive(final NextFilter next, final
> IoBuffer message) throws SSLException {
> - if (this.mDecodeThread == null) {
> + @Override
> + synchronized public void receive(NextFilter next, IoBuffer message)
> throws SSLException {
> + if (mDecodeThread == null) {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive() - message {}", toString(),
> message);
> }
> - this.mDecodeThread = Thread.currentThread();
> - final IoBuffer source = resume_decode_buffer(message);
> +
> + mDecodeThread = Thread.currentThread();
> + IoBuffer source = resume_decode_buffer(message);
> +
> try {
> - this.receive_loop(next, source);
> + receive_loop(next, source);
> } finally {
> suspend_decode_buffer(source);
> - this.mDecodeThread = null;
> + mDecodeThread = null;
> }
> } else {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive() - recursion", toString());
> }
> - this.receive_loop(next, this.mDecodeBuffer);
> +
> + receive_loop(next, mDecodeBuffer);
> }
>
> - this.throw_pending_error();
> + throw_pending_error(next);
> }
>
> /**
> * Process a received message
> *
> - * @param next
> - * @param message
> + * @param next The next filter
> + * @param message The message to process
> *
> - * @throws SSLException
> + * @throws SSLException If we get some error while processing the
> message
> */
> @SuppressWarnings("incomplete-switch")
> - protected void receive_loop(final NextFilter next, final IoBuffer
> message) throws SSLException {
> + protected void receive_loop(NextFilter next, IoBuffer message) throws
> SSLException {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive_loop() - source {}", toString(),
> message);
> }
>
> if (mEngine.isInboundDone()) {
> - throw new IllegalStateException("closed");
> + switch (mEngine.getHandshakeStatus()) {
> + case NEED_WRAP:
> + if (LOGGER.isDebugEnabled()) {
> + LOGGER.debug("{} receive_loop() - handshake needs
> wrap, invoking write", toString());
> + }
> +
> + write_handshake(next);
> + break;
> + }
> +
> + if ( mPendingError != null ) {
> + throw mPendingError;
> + } else {
> + throw new IllegalStateException("closed");
> + }
> }
>
> - final IoBuffer source = message;
> - final IoBuffer dest = allocate_app_buffer(source.remaining());
> + IoBuffer source = message;
> +
> + // No need to fo for another loop if the message is empty
> + if (source.remaining() == 0) {
> + return;
> + }
> +
> + IoBuffer dest = allocate_app_buffer(source.remaining());
>
> - final SSLEngineResult result = mEngine.unwrap(source.buf(),
> dest.buf());
> + SSLEngineResult result = mEngine.unwrap(source.buf(), dest.buf());
>
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive_loop() - bytes-consumed {},
> bytes-produced {}, status {}, handshake {}",
> @@ -201,10 +228,12 @@ public class SSLHandlerG0 extends SSLHandler {
> dest.free();
> } else {
> dest.flip();
> +
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive_loop() - result {}", toString(),
> dest);
> }
> - next.messageReceived(this.mSession, dest);
> +
> + next.messageReceived(mSession, dest);
> }
>
> switch (result.getHandshakeStatus()) {
> @@ -213,34 +242,44 @@ public class SSLHandlerG0 extends SSLHandler {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive_loop() - handshake needs
> unwrap, looping", toString());
> }
> - this.receive_loop(next, message);
> +
> + receive_loop(next, message);
> }
> +
> break;
> case NEED_TASK:
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive_loop() - handshake needs
> task, scheduling", toString());
> }
> - this.schedule_task(next);
> +
> + execute_task(next);
> +
> break;
> case NEED_WRAP:
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive_loop() - handshake needs
> wrap, invoking write", toString());
> }
> - this.write_handshake(next);
> +
> + write_handshake(next);
> break;
> +
> case FINISHED:
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive_loop() - handshake finished,
> flushing queue", toString());
> }
> - this.finish_handshake(next);
> +
> + finish_handshake(next);
> break;
> +
> case NOT_HANDSHAKING:
> if ((result.bytesProduced() != 0 ||
> result.bytesConsumed() != 0) && message.hasRemaining()) {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} receive_loop() - trying to
> decode more messages, looping", toString());
> }
> - this.receive_loop(next, message);
> +
> + receive_loop(next, message);
> }
> +
> break;
> }
> }
> @@ -248,55 +287,62 @@ public class SSLHandlerG0 extends SSLHandler {
> /**
> * {@inheritDoc}
> */
> - synchronized public void ack(final NextFilter next, final
> WriteRequest request) throws SSLException {
> - if (this.mAckQueue.remove(request)) {
> + @Override
> + synchronized public void ack(NextFilter next, WriteRequest request)
> throws SSLException {
> + if (mAckQueue.remove(request)) {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} ack() - {}", toString(), request);
> }
> +
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} ack() - checking to see if any messages
> can be flushed", toString(), request);
> }
> - this.flush(next);
> +
> + flush(next);
> }
>
> - this.throw_pending_error();
> + throw_pending_error(next);
> }
>
> /**
> * {@inheritDoc}
> */
> - synchronized public void write(final NextFilter next, final
> WriteRequest request)
> - throws SSLException, WriteRejectedException {
> + @Override
> + synchronized public void write(NextFilter next, WriteRequest request)
> throws SSLException, WriteRejectedException {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write() - source {}", toString(), request);
> }
>
> - if (this.mOutboundClosing) {
> + if (mOutboundClosing) {
> throw new WriteRejectedException(request, "closing");
> }
>
> - if (this.mEncodeQueue.isEmpty()) {
> - if (this.write_user_loop(next, request) == false) {
> + if (mEncodeQueue.isEmpty()) {
> + if (write_user_loop(next, request) == false) {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write() - unable to write right now,
> saving request for later", toString(),
> request);
> }
> - if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
> +
> + if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
> throw new BufferOverflowException();
> }
> - this.mEncodeQueue.add(request);
> +
> + mEncodeQueue.add(request);
> }
> } else {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write() - unable to write right now,
> saving request for later", toString(), request);
> }
> - if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
> +
> + if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
> throw new BufferOverflowException();
> }
> - this.mEncodeQueue.add(request);
> +
> + mEncodeQueue.add(request);
> }
>
> - this.throw_pending_error();
> + throw_pending_error(next);
> }
>
> /**
> @@ -311,16 +357,15 @@ public class SSLHandlerG0 extends SSLHandler {
> * @throws SSLException
> */
> @SuppressWarnings("incomplete-switch")
> - synchronized protected boolean write_user_loop(final NextFilter next,
> final WriteRequest request)
> - throws SSLException {
> + synchronized protected boolean write_user_loop(NextFilter next,
> WriteRequest request) throws SSLException {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_user_loop() - source {}", toString(),
> request);
> }
>
> - final IoBuffer source = IoBuffer.class.cast(request.getMessage());
> - final IoBuffer dest = allocate_encode_buffer(source.remaining());
> + IoBuffer source = IoBuffer.class.cast(request.getMessage());
> + IoBuffer dest = allocate_encode_buffer(source.remaining());
>
> - final SSLEngineResult result = this.mEngine.wrap(source.buf(),
> dest.buf());
> + SSLEngineResult result = mEngine.wrap(source.buf(), dest.buf());
>
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_user_loop() - bytes-consumed {},
> bytes-produced {}, status {}, handshake {}",
> @@ -334,32 +379,42 @@ public class SSLHandlerG0 extends SSLHandler {
> if (result.bytesConsumed() == 0) {
> // an handshaking message must have been produced
> EncryptedWriteRequest encrypted = new
> EncryptedWriteRequest(dest, null);
> +
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_user_loop() - result {}",
> toString(), encrypted);
> }
> - next.filterWrite(this.mSession, encrypted);
> +
> + next.filterWrite(mSession, encrypted);
> // do not return because we want to enter the handshake
> switch
> } else {
> // then we probably consumed some data
> dest.flip();
> +
> if (source.hasRemaining()) {
> EncryptedWriteRequest encrypted = new
> EncryptedWriteRequest(dest, null);
> - this.mAckQueue.add(encrypted);
> + mAckQueue.add(encrypted);
> +
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_user_loop() - result {}",
> toString(), encrypted);
> }
> - next.filterWrite(this.mSession, encrypted);
> - if (this.mAckQueue.size() < MAX_UNACK_MESSAGES) {
> +
> + next.filterWrite(mSession, encrypted);
> +
> + if (mAckQueue.size() < MAX_UNACK_MESSAGES) {
> return write_user_loop(next, request); // write
> additional chunks
> }
> +
> return false;
> } else {
> EncryptedWriteRequest encrypted = new
> EncryptedWriteRequest(dest, request);
> - this.mAckQueue.add(encrypted);
> + mAckQueue.add(encrypted);
> +
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_user_loop() - result {}",
> toString(), encrypted);
> }
> - next.filterWrite(this.mSession, encrypted);
> +
> + next.filterWrite(mSession, encrypted);
> +
> return true;
> }
> // we return because there is not reason to enter the
> handshake switch
> @@ -371,19 +426,26 @@ public class SSLHandlerG0 extends SSLHandler {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_user_loop() - handshake needs
> task, scheduling", toString());
> }
> - this.schedule_task(next);
> +
> + //schedule_task(next);
> + execute_task(next);
> break;
> +
> case NEED_WRAP:
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_user_loop() - handshake needs
> wrap, looping", toString());
> }
> - return this.write_user_loop(next, request);
> +
> + return write_user_loop(next, request);
> +
> case FINISHED:
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_user_loop() - handshake
> finished, flushing queue", toString());
> }
> - this.finish_handshake(next);
> - return this.write_user_loop(next, request);
> +
> + finish_handshake(next);
> +
> + return write_user_loop(next, request);
> }
>
> return false;
> @@ -403,8 +465,9 @@ public class SSLHandlerG0 extends SSLHandler {
> LOGGER.debug("{} write_handshake() - internal", toString());
> }
>
> - final IoBuffer source = ZERO;
> - final IoBuffer dest = allocate_encode_buffer(source.remaining());
> + IoBuffer source = ZERO;
> + IoBuffer dest = allocate_encode_buffer(source.remaining());
> +
> return write_handshake_loop(next, source, dest);
> }
>
> @@ -424,11 +487,11 @@ public class SSLHandlerG0 extends SSLHandler {
> */
> @SuppressWarnings("incomplete-switch")
> protected boolean write_handshake_loop(NextFilter next, IoBuffer
> source, IoBuffer dest) throws SSLException {
> - if (this.mOutboundClosing && this.mEngine.isOutboundDone()) {
> + if (mOutboundClosing && mEngine.isOutboundDone()) {
> return false;
> }
>
> - final SSLEngineResult result = this.mEngine.wrap(source.buf(),
> dest.buf());
> + SSLEngineResult result = mEngine.wrap(source.buf(), dest.buf());
>
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_handshake_loop() - bytes-consumed {},
> bytes-produced {}, status {}, handshake {}",
> @@ -455,23 +518,26 @@ public class SSLHandlerG0 extends SSLHandler {
> LOGGER.debug("{} write_handshake_loop() -
> handshake needs wrap, fast looping",
> toString());
> }
> +
> return write_handshake_loop(next, source,
> dest);
> }
> break;
> }
> }
>
> - final boolean success = dest.position() != 0;
> + boolean success = dest.position() != 0;
>
> if (success == false) {
> dest.free();
> } else {
> dest.flip();
> +
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_handshake_loop() - result {}",
> toString(), dest);
> }
> - final EncryptedWriteRequest encrypted = new
> EncryptedWriteRequest(dest, null);
> - next.filterWrite(this.mSession, encrypted);
> +
> + EncryptedWriteRequest encrypted = new
> EncryptedWriteRequest(dest, null);
> + next.filterWrite(mSession, encrypted);
> }
>
> switch (result.getHandshakeStatus()) {
> @@ -479,25 +545,33 @@ public class SSLHandlerG0 extends SSLHandler {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_handshake_loop() - handshake
> needs unwrap, invoking receive", toString());
> }
> - this.receive(next, ZERO);
> +
> + receive(next, ZERO);
> break;
> +
> case NEED_WRAP:
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_handshake_loop() - handshake
> needs wrap, looping", toString());
> }
> - this.write_handshake(next);
> +
> + write_handshake(next);
> break;
> +
> case NEED_TASK:
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_handshake_loop() - handshake
> needs task, scheduling", toString());
> }
> - this.schedule_task(next);
> +
> + //schedule_task(next);
> + execute_task(next);
> break;
> +
> case FINISHED:
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} write_handshake_loop() - handshake
> finished, flushing queue", toString());
> }
> - this.finish_handshake(next);
> +
> + finish_handshake(next);
> break;
> }
>
> @@ -510,17 +584,18 @@ public class SSLHandlerG0 extends SSLHandler {
> * @param next
> * @throws SSLException
> */
> - synchronized protected void finish_handshake(final NextFilter next)
> throws SSLException {
> - if (this.mHandshakeComplete == false) {
> - this.mHandshakeComplete = true;
> - this.mSession.setAttribute(SSLFilter.SSL_SECURED,
> this.mEngine.getSession());
> - next.event(this.mSession, SSLEvent.SECURED);
> + synchronized protected void finish_handshake(NextFilter next) throws
> SSLException {
> + if (mHandshakeComplete == false) {
> + mHandshakeComplete = true;
> + mSession.setAttribute(SslFilter.SSL_SECURED,
> mEngine.getSession());
> + next.event(mSession, SslEvent.SECURED);
> }
> +
> /**
> * There exists a bug in the JDK which emits FINISHED twice
> instead of once.
> */
> - this.receive(next, ZERO);
> - this.flush(next);
> + receive(next, ZERO);
> + flush(next);
> }
>
> /**
> @@ -530,33 +605,38 @@ public class SSLHandlerG0 extends SSLHandler {
> *
> * @throws SSLException
> */
> - synchronized public void flush(final NextFilter next) throws
> SSLException {
> - if (this.mOutboundClosing && this.mOutboundLinger == false) {
> + synchronized public void flush(NextFilter next) throws SSLException {
> + if (mOutboundClosing && mOutboundLinger == false) {
> return;
> }
>
> - if (this.mEncodeQueue.size() == 0) {
> + if (mEncodeQueue.size() == 0) {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} flush() - no saved messages",
> toString());
> }
> +
> return;
> }
>
> WriteRequest current = null;
> - while ((this.mAckQueue.size() < MAX_UNACK_MESSAGES) && (current =
> this.mEncodeQueue.poll()) != null) {
> +
> + while ((mAckQueue.size() < MAX_UNACK_MESSAGES) && (current =
> mEncodeQueue.poll()) != null) {
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} flush() - {}", toString(), current);
> }
> - if (this.write_user_loop(next, current) == false) {
> - this.mEncodeQueue.addFirst(current);
> +
> + if (write_user_loop(next, current) == false) {
> + mEncodeQueue.addFirst(current);
> +
> break;
> }
> }
>
> - if (this.mOutboundClosing && this.mEncodeQueue.size() == 0) {
> - this.mEngine.closeOutbound();
> + if (mOutboundClosing && mEncodeQueue.size() == 0) {
> + mEngine.closeOutbound();
> +
> if (ENABLE_SOFT_CLOSURE) {
> - this.write_handshake(next);
> + write_handshake(next);
> }
> }
> }
> @@ -564,77 +644,105 @@ public class SSLHandlerG0 extends SSLHandler {
> /**
> * {@inheritDoc}
> */
> - synchronized public void close(final NextFilter next, final boolean
> linger) throws SSLException {
> - if (this.mOutboundClosing)
> + @Override
> + synchronized public void close(NextFilter next, boolean linger)
> throws SSLException {
> + if (mOutboundClosing) {
> return;
> + }
>
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} close() - closing session", toString());
> }
>
> - if (this.mHandshakeComplete) {
> - next.event(this.mSession, SSLEvent.UNSECURED);
> + if (mHandshakeComplete) {
> + next.event(mSession, SslEvent.UNSECURED);
> }
>
> - this.mOutboundLinger = linger;
> - this.mOutboundClosing = true;
> + mOutboundLinger = linger;
> + mOutboundClosing = true;
>
> if (linger == false) {
> - if (this.mEncodeQueue.size() != 0) {
> - next.exceptionCaught(this.mSession,
> - new WriteRejectedException(new
> ArrayList<>(this.mEncodeQueue), "closing"));
> - this.mEncodeQueue.clear();
> + if (mEncodeQueue.size() != 0) {
> + next.exceptionCaught(mSession, new
> WriteRejectedException(new ArrayList<>(mEncodeQueue), "closing"));
> + mEncodeQueue.clear();
> }
> - this.mEngine.closeOutbound();
> +
> + mEngine.closeOutbound();
> +
> if (ENABLE_SOFT_CLOSURE) {
> - this.write_handshake(next);
> + write_handshake(next);
> }
> } else {
> - this.flush(next);
> + flush(next);
> }
> }
>
> - synchronized protected void throw_pending_error() throws SSLException
> {
> - final SSLException e = this.mPendingError;
> - if (e != null) {
> - this.mPendingError = null;
> - throw e;
> + /**
> + * Process the pending error and loop to send the associated alert if
> we have some.
> + *
> + * @param next The next filter in the chain
> + * @throws SSLException The rethrown pending error
> + */
> + synchronized protected void throw_pending_error(NextFilter next)
> throws SSLException {
> + SSLException sslException = mPendingError;
> +
> + if (sslException != null) {
> + // Loop to send back the alert messages
> + receive_loop(next, null);
> +
> + mPendingError = null;
> +
> + // And finally rethrow the exception
> + throw sslException;
> }
> }
>
> - synchronized protected void store_pending_error(SSLException e) {
> - SSLException x = this.mPendingError;
> - if (x == null) {
> - this.mPendingError = e;
> + /**
> + * Store any error we've got during the handshake or message handling
> + *
> + * @param sslException The exfeption to store
> + */
> + synchronized protected void store_pending_error(SSLException
> sslException) {
> + if (mPendingError == null) {
> + mPendingError = sslException;
> }
> }
>
> - protected void schedule_task(final NextFilter next) {
> - if (ENABLE_ASYNC_TASKS) {
> - if (this.mExecutor == null) {
> - this.execute_task(next);
> - } else {
> - this.mExecutor.execute(new Runnable() {
> - @Override
> - public void run() {
> - SSLHandlerG0.this.execute_task(next);
> - }
> - });
> - }
> + /**
> + * Schedule a SSLEngine task for execution, either using an Executor,
> or immediately.
> + *
> + * @param next The next filter to call
> + */
> + protected void schedule_task(NextFilter next) {
> + if (ENABLE_ASYNC_TASKS && (mExecutor != null)) {
> + mExecutor.execute(new Runnable() {
> + @Override
> + public void run() {
> + SSLHandlerG0.this.execute_task(next);
> + }
> + });
> } else {
> - this.execute_task(next);
> + execute_task(next);
> }
> }
>
> - synchronized protected void execute_task(final NextFilter next) {
> - Runnable t = null;
> - while ((t = mEngine.getDelegatedTask()) != null) {
> + /**
> + * Execute a SSLEngine task. We may have more than one.
> + *
> + * If we get any exception during the processing, an error is stored
> and thrown.
> + *
> + * @param next The next filer in the chain
> + */
> + synchronized protected void execute_task(NextFilter next) {
> + Runnable task = null;
> +
> + while ((task = mEngine.getDelegatedTask()) != null) {
> try {
> if (LOGGER.isDebugEnabled()) {
> - LOGGER.debug("{} task() - executing {}", toString(),
> t);
> + LOGGER.debug("{} task() - executing {}", toString(),
> task);
> }
>
> - t.run();
> + task.run();
>
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("{} task() - writing handshake
> messages", toString());
> @@ -642,7 +750,14 @@ public class SSLHandlerG0 extends SSLHandler {
>
> write_handshake(next);
> } catch (SSLException e) {
> - this.store_pending_error(e);
> + store_pending_error(e);
> +
> + try {
> + throw_pending_error(next);
> + } catch ( SSLException ssle) {
> + // ...
> + }
> +
> if (LOGGER.isErrorEnabled()) {
> LOGGER.error("{} task() - storing error {}",
> toString(), e);
> }
> diff --git
> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
> similarity index 99%
> rename from
> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
> rename to
> mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
> index 9763954..d19b9b3 100644
> ---
> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
> +++
> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
> @@ -49,7 +49,7 @@ import javax.net.ssl.TrustManagerFactory;
> *
> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> */
> -public class SSLContextFactory {
> +public class SslContextFactory {
>
> private String provider = null;
>
> diff --git
> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
> similarity index 95%
> rename from
> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
> rename to mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
> index 21ad1d3..bd75845 100644
> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
> @@ -27,6 +27,6 @@ import org.apache.mina.filter.FilterEvent;
> *
> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> */
> -public enum SSLEvent implements FilterEvent {
> +public enum SslEvent implements FilterEvent {
> SECURED, UNSECURED
> }
> diff --git
> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
> similarity index 93%
> rename from
> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
> rename to mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
> index 61f0917..2503d26 100644
> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
> @@ -50,21 +50,21 @@ import org.slf4j.LoggerFactory;
> * @author Jonathan Valliere
> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> */
> -public class SSLFilter extends IoFilterAdapter {
> +public class SslFilter extends IoFilterAdapter {
> /**
> * SSLSession object when the session is secured, otherwise null.
> */
> - static public final AttributeKey SSL_SECURED = new
> AttributeKey(SSLFilter.class, "status");
> + static public final AttributeKey SSL_SECURED = new
> AttributeKey(SslFilter.class, "status");
>
> /**
> * Returns the SSL2Handler object
> */
> - static protected final AttributeKey SSL_HANDLER = new
> AttributeKey(SSLFilter.class, "handler");
> + static protected final AttributeKey SSL_HANDLER = new
> AttributeKey(SslFilter.class, "handler");
>
> /**
> * The logger
> */
> - static protected final Logger LOGGER =
> LoggerFactory.getLogger(SSLFilter.class);
> + static protected final Logger LOGGER =
> LoggerFactory.getLogger(SslFilter.class);
>
> /**
> * Task executor for processing handshakes
> @@ -103,7 +103,7 @@ public class SSLFilter extends IoFilterAdapter {
> *
> * @param sslContext The SSLContext to use
> */
> - public SSLFilter(SSLContext sslContext) {
> + public SslFilter(SSLContext sslContext) {
> Objects.requireNonNull(sslContext, "ssl must not be null");
>
> this.sslContext = sslContext;
> @@ -191,7 +191,7 @@ public class SSLFilter extends IoFilterAdapter {
> @Override
> public void onPreAdd(IoFilterChain parent, String name, NextFilter
> next) throws Exception {
> // Check that we don't have a SSL filter already present in the
> chain
> - if (parent.contains(SSLFilter.class)) {
> + if (parent.contains(SslFilter.class)) {
> throw new IllegalStateException("Only one SSL filter is
> permitted in a chain");
> }
>
> @@ -232,7 +232,7 @@ public class SSLFilter extends IoFilterAdapter {
> * @throws SSLException Any exception thrown by the SslHandler closing
> */
> synchronized protected void onConnected(NextFilter next, IoSession
> session) throws SSLException {
> - SSLHandler sslHandler =
> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
> + SslHandler sslHandler =
> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
>
> if (sslHandler == null) {
> InetSocketAddress s =
> InetSocketAddress.class.cast(session.getRemoteAddress());
> @@ -254,7 +254,7 @@ public class SSLFilter extends IoFilterAdapter {
> */
> synchronized protected void onClose(NextFilter next, IoSession
> session, boolean linger) throws SSLException {
> session.removeAttribute(SSL_SECURED);
> - SSLHandler sslHandler =
> SSLHandler.class.cast(session.removeAttribute(SSL_HANDLER));
> + SslHandler sslHandler =
> SslHandler.class.cast(session.removeAttribute(SSL_HANDLER));
>
> if (sslHandler != null) {
> sslHandler.close(next, linger);
> @@ -318,11 +318,19 @@ public class SSLFilter extends IoFilterAdapter {
> */
> @Override
> public void messageReceived(NextFilter next, IoSession session,
> Object message) throws Exception {
> + //if (session.isServer()) {
> + //System.out.println( ">>> Server messageReceived" );
> + //} else {
> + //System.out.println( ">>> Client messageReceived" );
> + //}
> +
> + //System.out.println( message );
> +
> if (LOGGER.isDebugEnabled()) {
> LOGGER.debug("session {} received {}", session, message);
> }
>
> - SSLHandler sslHandler =
> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
> + SslHandler sslHandler =
> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
> sslHandler.receive(next, IoBuffer.class.cast(message));
> }
>
> @@ -337,7 +345,7 @@ public class SSLFilter extends IoFilterAdapter {
>
> if (request instanceof EncryptedWriteRequest) {
> EncryptedWriteRequest encryptedWriteRequest =
> EncryptedWriteRequest.class.cast(request);
> - SSLHandler sslHandler =
> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
> + SslHandler sslHandler =
> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
> sslHandler.ack(next, request);
>
> if (encryptedWriteRequest.getOriginalRequest() !=
> encryptedWriteRequest) {
> @@ -360,7 +368,7 @@ public class SSLFilter extends IoFilterAdapter {
> if (request instanceof EncryptedWriteRequest || request
> instanceof DisableEncryptWriteRequest) {
> super.filterWrite(next, session, request);
> } else {
> - SSLHandler sslHandler =
> SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
> + SslHandler sslHandler =
> SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
> sslHandler.write(next, request);
> }
> }
> diff --git
> a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
> b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
> similarity index 98%
> rename from
> mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
> rename to
> mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
> index d1a0ffe..fd2c528 100644
> --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
> +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
> @@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
> * @author Jonathan Valliere
> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> */
> -public abstract class SSLHandler {
> +public abstract class SslHandler {
>
> /**
> * Minimum size of encoder buffer in packets
> @@ -61,7 +61,7 @@ public abstract class SSLHandler {
> /**
> * Static logger
> */
> - static protected final Logger LOGGER =
> LoggerFactory.getLogger(SSLHandler.class);
> + static protected final Logger LOGGER =
> LoggerFactory.getLogger(SslHandler.class);
>
> /**
> * Write Requests which are enqueued prior to the completion of the
> handshaking
> @@ -100,7 +100,7 @@ public abstract class SSLHandler {
> * @param e executor
> * @param s session
> */
> - public SSLHandler(SSLEngine p, Executor e, IoSession s) {
> + public SslHandler(SSLEngine p, Executor e, IoSession s) {
> this.mEngine = p;
> this.mExecutor = e;
> this.mSession = s;
> diff --git
> a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
> b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
> index e7ab682..69e1cc1 100644
> ---
> a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
> +++
> b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
> @@ -32,7 +32,7 @@ import org.apache.mina.core.service.IoProcessor;
> import org.apache.mina.core.service.IoService;
> import org.apache.mina.core.service.TransportMetadata;
> import org.apache.mina.core.session.IoSession;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.AbstractSocketSessionConfig;
> import org.apache.mina.transport.socket.SocketSessionConfig;
>
> @@ -340,6 +340,6 @@ class NioSocketSession extends NioSession {
> */
> @Override
> public final boolean isSecured() {
> - return (this.getAttribute(SSLFilter.SSL_SECURED) != null);
> + return (this.getAttribute(SslFilter.SSL_SECURED) != null);
> }
> }
> diff --git
> a/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
> b/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
> index cc03fef..157e5a2 100644
> ---
> a/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
> +++
> b/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
> @@ -40,7 +40,7 @@ import org.apache.mina.core.future.ConnectFuture;
> import org.apache.mina.core.session.IoSession;
> import org.apache.mina.filter.codec.ProtocolCodecFilter;
> import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> import org.apache.mina.transport.socket.nio.NioSocketConnector;
> import org.apache.mina.util.AvailablePortFinder;
> @@ -90,7 +90,7 @@ public class SSLTestHandshakeExceptionDIRMINA1077Test {
> DefaultIoFilterChainBuilder filters = acceptor.getFilterChain();
>
> // Inject the SSL filter
> - SSLFilter sslFilter = new SSLFilter(createSSLContext(true));
> + SslFilter sslFilter = new SslFilter(createSSLContext(true));
> filters.addLast("sslFilter", sslFilter);
> sslFilter.setNeedClientAuth(true);
>
> @@ -111,7 +111,7 @@ public class SSLTestHandshakeExceptionDIRMINA1077Test {
> DefaultIoFilterChainBuilder filters =
> nioSocketConnector.getFilterChain();
>
> // Inject the SSL filter
> - SSLFilter sslFilter = new SSLFilter(createSSLContext(false));
> + SslFilter sslFilter = new SslFilter(createSSLContext(false));
> filters.addLast("sslFilter", sslFilter);
>
> address = InetAddress.getByName("localhost");
> diff --git
> a/mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
> b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
> similarity index 95%
> rename from
> mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
> rename to
> mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
> index aeb75c6..a2dd900 100644
> --- a/mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
> +++ b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
> @@ -26,7 +26,7 @@ import
> org.apache.mina.transport.socket.nio.NioSocketConnector;
> import org.slf4j.Logger;
> import org.slf4j.LoggerFactory;
>
> -public class SSLFilterMain {
> +public class SslFilterMain {
>
> public static void main(String[] args) throws
> NoSuchAlgorithmException, KeyManagementException, KeyStoreException,
> UnrecoverableKeyException, CertificateException, IOException {
> @@ -40,8 +40,8 @@ public class SSLFilterMain {
>
> final char[] password = "password".toCharArray();
>
> - ks.load(SSLFilterMain.class.getResourceAsStream("keystore.jks"),
> password);
> -
> ts.load(SSLFilterMain.class.getResourceAsStream("truststore.jks"),
> password);
> + ks.load(SslFilterMain.class.getResourceAsStream("keystore.jks"),
> password);
> +
> ts.load(SslFilterMain.class.getResourceAsStream("truststore.jks"),
> password);
>
> kmf.init(ks, password);
> tmf.init(ts);
> @@ -49,7 +49,7 @@ public class SSLFilterMain {
> final SSLContext context = SSLContext.getInstance("TLSv1.3");
> context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new
> SecureRandom());
>
> - final SSLFilter filter = new SSLFilter(context);
> + final SslFilter filter = new SslFilter(context);
> filter.setEnabledCipherSuites(new String[] {
> "TLS_AES_128_GCM_SHA256", "TLS_AES_256_GCM_SHA384" });
> filter.setEnabledProtocols(new String[] { "TLSv1.3" });
>
> diff --git
> a/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
> b/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
> index b2637f3..a936974 100644
> --- a/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
> +++ b/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
> @@ -28,7 +28,7 @@ import
> org.apache.mina.filter.codec.textline.TextLineCodecFactory;
> import org.apache.mina.filter.compression.CompressionFilter;
> import org.apache.mina.filter.logging.LoggingFilter;
> import org.apache.mina.filter.logging.MdcInjectionFilter;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
>
> /**
> @@ -72,7 +72,7 @@ public class Main {
>
> private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
> throws Exception {
> - SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
> + SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
> .getInstance(true));
> chain.addLast("sslFilter", sslFilter);
> System.out.println("SSL ON");
> diff --git
> a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
> b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
> index f5c2543..cae59ad 100644
> ---
> a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
> +++
> b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
> @@ -33,7 +33,7 @@ import
> org.apache.mina.filter.codec.textline.TextLineCodecFactory;
> import org.apache.mina.filter.compression.CompressionFilter;
> import org.apache.mina.filter.logging.LoggingFilter;
> import org.apache.mina.filter.logging.MdcInjectionFilter;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.nio.NioSocketConnector;
>
> /**
> @@ -79,7 +79,7 @@ public class ChatClientSupport {
> if (useSsl) {
> SSLContext sslContext = BogusSSLContextFactory
> .getInstance(false);
> - SSLFilter sslFilter = new SSLFilter(sslContext);
> + SslFilter sslFilter = new SslFilter(sslContext);
> connector.getFilterChain().addFirst("sslFilter",
> sslFilter);
> }
>
> diff --git
> a/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
> b/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
> index 7e1c7aa..078f79e 100644
> ---
> a/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
> +++
> b/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
> @@ -24,7 +24,7 @@ import java.net.InetSocketAddress;
> import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
> import org.apache.mina.filter.compression.CompressionFilter;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.SocketAcceptor;
> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
>
> @@ -68,7 +68,7 @@ public class Main {
>
> private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
> throws Exception {
> - SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
> + SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
> .getInstance(true));
> chain.addLast("sslFilter", sslFilter);
> System.out.println("SSL ON");
> diff --git
> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
> index dd469bf..dca3501 100644
> ---
> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
> +++
> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
> @@ -32,7 +32,7 @@ import org.apache.mina.core.service.IoConnector;
> import org.apache.mina.core.service.IoHandlerAdapter;
> import org.apache.mina.core.session.IdleStatus;
> import org.apache.mina.core.session.IoSession;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.nio.NioSocketConnector;
>
> /**
> @@ -70,7 +70,7 @@ public class TcpSslClient extends IoHandlerAdapter {
> // Inject teh SSL filter
> SSLContext sslContext = BogusSSLContextFactory
> .getInstance(false);
> - SSLFilter sslFilter = new SSLFilter(sslContext);
> + SslFilter sslFilter = new SslFilter(sslContext);
> connector.getFilterChain().addFirst("sslFilter", sslFilter);
>
> connector.setHandler(this);
> diff --git
> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
> index 9bb972c..96b1f50 100644
> ---
> a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
> +++
> b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
> @@ -29,7 +29,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
> import org.apache.mina.core.session.IdleStatus;
> import org.apache.mina.core.session.IoSession;
> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
>
> /**
> @@ -136,7 +136,7 @@ public class TcpSslServer extends IoHandlerAdapter {
>
> // Inject the SSL filter
> DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
> - SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
> + SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
> .getInstance(true));
> chain.addLast("sslFilter", sslFilter);
>
> diff --git
> a/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
> b/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
> index c5b7810..6e78e15 100644
> ---
> a/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
> +++
> b/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
> @@ -49,7 +49,7 @@
> <bean id="bogusTrustManagerFactory"
> class="org.apache.mina.filter.ssl.BogusTrustManagerFactory"/>
>
> <!-- SSLContext to be used -->
> - <bean id="sslContextFactory"
> class="org.apache.mina.filter.ssl.SSLContextFactory">
> + <bean id="sslContextFactory"
> class="org.apache.mina.filter.ssl.SslContextFactory">
> <property name="protocol" value="TLS"/>
> <property name="keyManagerFactoryAlgorithm" value="SunX509"/>
> <property name="keyManagerFactoryKeyStore"><ref
> local="keyStore"/></property>
> @@ -75,7 +75,7 @@
>
> <bean id="loggingFilter"
> class="org.apache.mina.filter.logging.LoggingFilter" />
>
> - <bean id="sslFilter" class="org.apache.mina.filter.ssl.SSLFilter">
> + <bean id="sslFilter" class="org.apache.mina.filter.ssl.SslFilter">
> <constructor-arg ref="sslContext"/>
> </bean>
>
> diff --git
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
> index 733017d..6f5e7df 100644
> ---
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
> +++
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
> @@ -30,7 +30,7 @@ import org.apache.mina.core.service.IoAcceptor;
> import org.apache.mina.core.session.IoSession;
> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
> import org.apache.mina.filter.FilterEvent;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.DatagramSessionConfig;
> import org.apache.mina.transport.socket.nio.NioDatagramAcceptor;
> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> @@ -122,7 +122,7 @@ public abstract class AbstractTest {
> try {
> session.getFilterChain().addFirst(
> "SSL",
> - new SSLFilter(BogusSSLContextFactory
> + new SslFilter(BogusSSLContextFactory
> .getInstance(true)));
> } catch (GeneralSecurityException e) {
> LOGGER.error("", e);
> diff --git
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
> index d78f923..18b6a6a 100644
> ---
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
> +++
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
> @@ -33,7 +33,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
> import org.apache.mina.core.session.IoSession;
> import org.apache.mina.core.write.WriteException;
> import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.nio.NioDatagramConnector;
> import org.apache.mina.transport.socket.nio.NioSocketConnector;
> import org.apache.mina.util.AvailablePortFinder;
> @@ -58,7 +58,7 @@ public class ConnectorTest extends AbstractTest {
> private final int DATA_SIZE = 16;
>
> private EchoConnectorHandler handler;
> - private SSLFilter connectorSSLFilter;
> + private SslFilter connectorSslFilter;
>
> public ConnectorTest() {
> // Do nothing
> @@ -68,7 +68,7 @@ public class ConnectorTest extends AbstractTest {
> public void setUp() throws Exception {
> super.setUp();
> handler = new EchoConnectorHandler();
> - connectorSSLFilter = new SSLFilter(BogusSSLContextFactory
> + connectorSslFilter = new SslFilter(BogusSSLContextFactory
> .getInstance(false));
> }
>
> @@ -86,7 +86,7 @@ public class ConnectorTest extends AbstractTest {
> IoConnector connector = new NioSocketConnector();
>
> // Add an SSL filter to connector
> - connector.getFilterChain().addLast("SSL", connectorSSLFilter);
> + connector.getFilterChain().addLast("SSL", connectorSslFilter);
> testConnector(connector);
> }
>
> @@ -159,7 +159,7 @@ public class ConnectorTest extends AbstractTest {
> assertEquals((byte) '.', handler.readBuf.get());
>
> // Now start TLS connection
> - session.getFilterChain().addFirst("SSL", connectorSSLFilter);
> + session.getFilterChain().addFirst("SSL", connectorSslFilter);
> testConnector0(session);
> }
>
> diff --git
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
> similarity index 97%
> rename from
> mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
> rename to
> mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
> index f95d0cc..1f5bd99 100644
> ---
> a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
> +++
> b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
> @@ -41,7 +41,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
> import org.apache.mina.core.session.IoSession;
> import org.apache.mina.filter.codec.ProtocolCodecFilter;
> import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
> -import org.apache.mina.filter.ssl.SSLFilter;
> +import org.apache.mina.filter.ssl.SslFilter;
> import org.apache.mina.transport.socket.SocketAcceptor;
> import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
> import org.junit.After;
> @@ -53,7 +53,7 @@ import org.junit.Test;
> *
> * @author <a href="http://mina.apache.org">Apache MINA Project</a>
> */
> -public class SSLFilterTest {
> +public class SslFilterTest {
>
> private int port;
> private SocketAcceptor acceptor;
> @@ -84,9 +84,9 @@ public class SSLFilterTest {
> //
> http://java.sun.com/javase/javaseforbusiness/docs/TLSReadme.html
>
> java.lang.System.setProperty("sun.security.ssl.allowUnsafeRenegotiation",
> "true");
>
> - SSLFilter sslFilter = null;
> + SslFilter sslFilter = null;
> if (useSSL) {
> - sslFilter = new
> SSLFilter(BogusSSLContextFactory.getInstance(true));
> + sslFilter = new
> SslFilter(BogusSSLContextFactory.getInstance(true));
> acceptor.getFilterChain().addLast("sslFilter", sslFilter);
> }
> acceptor.getFilterChain().addLast("codec",
>
[mina] 02/02: o Renamed SSLxxx classes to Sslxxx to keep an ascendant compatibility o Used meaningful variable nales o Removed useless 'this' o Removed useless 'final' o Transmitted the nexwt filter to the throw_pending_error() method in order to be able to write back the Alert to the remote peer o Write the Alter back to the remote peer in the receive_loop() method when the inbound has been closed following an error while processing a task o Quick exit the receive_loop() method if the read message is e [...]
Posted by el...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
elecharny pushed a commit to branch 2.2.X
in repository https://gitbox.apache.org/repos/asf/mina.git
commit f64544006e9714541e1b472cef5be58148a3fd01
Author: emmanuel lecharny <el...@apache.org>
AuthorDate: Tue Mar 15 14:31:41 2022 +0100
o Renamed SSLxxx classes to Sslxxx to keep an ascendant compatibility
o Used meaningful variable nales
o Removed useless 'this'
o Removed useless 'final'
o Transmitted the nexwt filter to the throw_pending_error() method in order to be able to write back the Alert to the remote peer
o Write the Alter back to the remote peer in the receive_loop() method when the inbound has been closed following an error while processing a task
o Quick exit the receive_loop() method if the read message is empty
o Minor formatting (added nl, etc)
o Added missing javadoc
---
.../org/apache/mina/filter/ssl/SSLHandlerG0.java | 381 ++++++++++++++-------
...LContextFactory.java => SslContextFactory.java} | 2 +-
.../filter/ssl/{SSLEvent.java => SslEvent.java} | 2 +-
.../filter/ssl/{SSLFilter.java => SslFilter.java} | 30 +-
.../ssl/{SSLHandler.java => SslHandler.java} | 6 +-
.../transport/socket/nio/NioSocketSession.java | 4 +-
.../SSLTestHandshakeExceptionDIRMINA1077Test.java | 6 +-
.../ssl/{SSLFilterMain.java => SslFilterMain.java} | 8 +-
.../java/org/apache/mina/example/chat/Main.java | 4 +-
.../example/chat/client/ChatClientSupport.java | 4 +-
.../org/apache/mina/example/echoserver/Main.java | 4 +-
.../apache/mina/example/tcp/perf/TcpSslClient.java | 4 +-
.../apache/mina/example/tcp/perf/TcpSslServer.java | 4 +-
.../org/apache/mina/example/chat/serverContext.xml | 4 +-
.../mina/example/echoserver/AbstractTest.java | 4 +-
.../mina/example/echoserver/ConnectorTest.java | 10 +-
.../ssl/{SSLFilterTest.java => SslFilterTest.java} | 8 +-
17 files changed, 304 insertions(+), 181 deletions(-)
diff --git a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
index 76f2d53..31c35f5 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
@@ -42,7 +42,7 @@ import org.apache.mina.core.write.WriteRequest;
* @author Jonathan Valliere
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class SSLHandlerG0 extends SSLHandler {
+public class SSLHandlerG0 extends SslHandler {
/**
* Maximum number of queued messages waiting for encoding
@@ -102,12 +102,12 @@ public class SSLHandlerG0 extends SSLHandler {
/**
* Instantiates a new handler
*
- * @param p engine
- * @param e executor
- * @param s session
+ * @param sslEngine The SSLEngine instance
+ * @param executor The executor instance to use to process tasks
+ * @param session The session to handle
*/
- public SSLHandlerG0(SSLEngine p, Executor e, IoSession s) {
- super(p, e, s);
+ public SSLHandlerG0(SSLEngine sslEngine, Executor executor, IoSession session) {
+ super(sslEngine, executor, session);
}
/**
@@ -115,7 +115,7 @@ public class SSLHandlerG0 extends SSLHandler {
*/
@Override
public boolean isOpen() {
- return this.mEngine.isOutboundDone() == false;
+ return mEngine.isOutboundDone() == false;
}
/**
@@ -123,21 +123,24 @@ public class SSLHandlerG0 extends SSLHandler {
*/
@Override
public boolean isConnected() {
- return this.mHandshakeComplete && isOpen();
+ return mHandshakeComplete && isOpen();
}
/**
* {@inheritDoc}
*/
- synchronized public void open(final NextFilter next) throws SSLException {
- if (this.mHandshakeStarted == false) {
- this.mHandshakeStarted = true;
- if (this.mEngine.getUseClientMode()) {
+ @Override
+ synchronized public void open(NextFilter next) throws SSLException {
+ if (mHandshakeStarted == false) {
+ mHandshakeStarted = true;
+
+ if (mEngine.getUseClientMode()) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} open() - begin handshaking", toString());
}
- this.mEngine.beginHandshake();
- this.write_handshake(next);
+
+ mEngine.beginHandshake();
+ write_handshake(next);
}
}
}
@@ -145,51 +148,75 @@ public class SSLHandlerG0 extends SSLHandler {
/**
* {@inheritDoc}
*/
- synchronized public void receive(final NextFilter next, final IoBuffer message) throws SSLException {
- if (this.mDecodeThread == null) {
+ @Override
+ synchronized public void receive(NextFilter next, IoBuffer message) throws SSLException {
+ if (mDecodeThread == null) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive() - message {}", toString(), message);
}
- this.mDecodeThread = Thread.currentThread();
- final IoBuffer source = resume_decode_buffer(message);
+
+ mDecodeThread = Thread.currentThread();
+ IoBuffer source = resume_decode_buffer(message);
+
try {
- this.receive_loop(next, source);
+ receive_loop(next, source);
} finally {
suspend_decode_buffer(source);
- this.mDecodeThread = null;
+ mDecodeThread = null;
}
} else {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive() - recursion", toString());
}
- this.receive_loop(next, this.mDecodeBuffer);
+
+ receive_loop(next, mDecodeBuffer);
}
- this.throw_pending_error();
+ throw_pending_error(next);
}
/**
* Process a received message
*
- * @param next
- * @param message
+ * @param next The next filter
+ * @param message The message to process
*
- * @throws SSLException
+ * @throws SSLException If we get some error while processing the message
*/
@SuppressWarnings("incomplete-switch")
- protected void receive_loop(final NextFilter next, final IoBuffer message) throws SSLException {
+ protected void receive_loop(NextFilter next, IoBuffer message) throws SSLException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - source {}", toString(), message);
}
if (mEngine.isInboundDone()) {
- throw new IllegalStateException("closed");
+ switch (mEngine.getHandshakeStatus()) {
+ case NEED_WRAP:
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("{} receive_loop() - handshake needs wrap, invoking write", toString());
+ }
+
+ write_handshake(next);
+ break;
+ }
+
+ if ( mPendingError != null ) {
+ throw mPendingError;
+ } else {
+ throw new IllegalStateException("closed");
+ }
}
- final IoBuffer source = message;
- final IoBuffer dest = allocate_app_buffer(source.remaining());
+ IoBuffer source = message;
+
+ // No need to fo for another loop if the message is empty
+ if (source.remaining() == 0) {
+ return;
+ }
+
+ IoBuffer dest = allocate_app_buffer(source.remaining());
- final SSLEngineResult result = mEngine.unwrap(source.buf(), dest.buf());
+ SSLEngineResult result = mEngine.unwrap(source.buf(), dest.buf());
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - bytes-consumed {}, bytes-produced {}, status {}, handshake {}",
@@ -201,10 +228,12 @@ public class SSLHandlerG0 extends SSLHandler {
dest.free();
} else {
dest.flip();
+
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - result {}", toString(), dest);
}
- next.messageReceived(this.mSession, dest);
+
+ next.messageReceived(mSession, dest);
}
switch (result.getHandshakeStatus()) {
@@ -213,34 +242,44 @@ public class SSLHandlerG0 extends SSLHandler {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - handshake needs unwrap, looping", toString());
}
- this.receive_loop(next, message);
+
+ receive_loop(next, message);
}
+
break;
case NEED_TASK:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - handshake needs task, scheduling", toString());
}
- this.schedule_task(next);
+
+ execute_task(next);
+
break;
case NEED_WRAP:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - handshake needs wrap, invoking write", toString());
}
- this.write_handshake(next);
+
+ write_handshake(next);
break;
+
case FINISHED:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - handshake finished, flushing queue", toString());
}
- this.finish_handshake(next);
+
+ finish_handshake(next);
break;
+
case NOT_HANDSHAKING:
if ((result.bytesProduced() != 0 || result.bytesConsumed() != 0) && message.hasRemaining()) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - trying to decode more messages, looping", toString());
}
- this.receive_loop(next, message);
+
+ receive_loop(next, message);
}
+
break;
}
}
@@ -248,55 +287,62 @@ public class SSLHandlerG0 extends SSLHandler {
/**
* {@inheritDoc}
*/
- synchronized public void ack(final NextFilter next, final WriteRequest request) throws SSLException {
- if (this.mAckQueue.remove(request)) {
+ @Override
+ synchronized public void ack(NextFilter next, WriteRequest request) throws SSLException {
+ if (mAckQueue.remove(request)) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} ack() - {}", toString(), request);
}
+
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} ack() - checking to see if any messages can be flushed", toString(), request);
}
- this.flush(next);
+
+ flush(next);
}
- this.throw_pending_error();
+ throw_pending_error(next);
}
/**
* {@inheritDoc}
*/
- synchronized public void write(final NextFilter next, final WriteRequest request)
- throws SSLException, WriteRejectedException {
+ @Override
+ synchronized public void write(NextFilter next, WriteRequest request) throws SSLException, WriteRejectedException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write() - source {}", toString(), request);
}
- if (this.mOutboundClosing) {
+ if (mOutboundClosing) {
throw new WriteRejectedException(request, "closing");
}
- if (this.mEncodeQueue.isEmpty()) {
- if (this.write_user_loop(next, request) == false) {
+ if (mEncodeQueue.isEmpty()) {
+ if (write_user_loop(next, request) == false) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write() - unable to write right now, saving request for later", toString(),
request);
}
- if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
+
+ if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
throw new BufferOverflowException();
}
- this.mEncodeQueue.add(request);
+
+ mEncodeQueue.add(request);
}
} else {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write() - unable to write right now, saving request for later", toString(), request);
}
- if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
+
+ if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
throw new BufferOverflowException();
}
- this.mEncodeQueue.add(request);
+
+ mEncodeQueue.add(request);
}
- this.throw_pending_error();
+ throw_pending_error(next);
}
/**
@@ -311,16 +357,15 @@ public class SSLHandlerG0 extends SSLHandler {
* @throws SSLException
*/
@SuppressWarnings("incomplete-switch")
- synchronized protected boolean write_user_loop(final NextFilter next, final WriteRequest request)
- throws SSLException {
+ synchronized protected boolean write_user_loop(NextFilter next, WriteRequest request) throws SSLException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - source {}", toString(), request);
}
- final IoBuffer source = IoBuffer.class.cast(request.getMessage());
- final IoBuffer dest = allocate_encode_buffer(source.remaining());
+ IoBuffer source = IoBuffer.class.cast(request.getMessage());
+ IoBuffer dest = allocate_encode_buffer(source.remaining());
- final SSLEngineResult result = this.mEngine.wrap(source.buf(), dest.buf());
+ SSLEngineResult result = mEngine.wrap(source.buf(), dest.buf());
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - bytes-consumed {}, bytes-produced {}, status {}, handshake {}",
@@ -334,32 +379,42 @@ public class SSLHandlerG0 extends SSLHandler {
if (result.bytesConsumed() == 0) {
// an handshaking message must have been produced
EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, null);
+
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - result {}", toString(), encrypted);
}
- next.filterWrite(this.mSession, encrypted);
+
+ next.filterWrite(mSession, encrypted);
// do not return because we want to enter the handshake switch
} else {
// then we probably consumed some data
dest.flip();
+
if (source.hasRemaining()) {
EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, null);
- this.mAckQueue.add(encrypted);
+ mAckQueue.add(encrypted);
+
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - result {}", toString(), encrypted);
}
- next.filterWrite(this.mSession, encrypted);
- if (this.mAckQueue.size() < MAX_UNACK_MESSAGES) {
+
+ next.filterWrite(mSession, encrypted);
+
+ if (mAckQueue.size() < MAX_UNACK_MESSAGES) {
return write_user_loop(next, request); // write additional chunks
}
+
return false;
} else {
EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, request);
- this.mAckQueue.add(encrypted);
+ mAckQueue.add(encrypted);
+
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - result {}", toString(), encrypted);
}
- next.filterWrite(this.mSession, encrypted);
+
+ next.filterWrite(mSession, encrypted);
+
return true;
}
// we return because there is not reason to enter the handshake switch
@@ -371,19 +426,26 @@ public class SSLHandlerG0 extends SSLHandler {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - handshake needs task, scheduling", toString());
}
- this.schedule_task(next);
+
+ //schedule_task(next);
+ execute_task(next);
break;
+
case NEED_WRAP:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - handshake needs wrap, looping", toString());
}
- return this.write_user_loop(next, request);
+
+ return write_user_loop(next, request);
+
case FINISHED:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - handshake finished, flushing queue", toString());
}
- this.finish_handshake(next);
- return this.write_user_loop(next, request);
+
+ finish_handshake(next);
+
+ return write_user_loop(next, request);
}
return false;
@@ -403,8 +465,9 @@ public class SSLHandlerG0 extends SSLHandler {
LOGGER.debug("{} write_handshake() - internal", toString());
}
- final IoBuffer source = ZERO;
- final IoBuffer dest = allocate_encode_buffer(source.remaining());
+ IoBuffer source = ZERO;
+ IoBuffer dest = allocate_encode_buffer(source.remaining());
+
return write_handshake_loop(next, source, dest);
}
@@ -424,11 +487,11 @@ public class SSLHandlerG0 extends SSLHandler {
*/
@SuppressWarnings("incomplete-switch")
protected boolean write_handshake_loop(NextFilter next, IoBuffer source, IoBuffer dest) throws SSLException {
- if (this.mOutboundClosing && this.mEngine.isOutboundDone()) {
+ if (mOutboundClosing && mEngine.isOutboundDone()) {
return false;
}
- final SSLEngineResult result = this.mEngine.wrap(source.buf(), dest.buf());
+ SSLEngineResult result = mEngine.wrap(source.buf(), dest.buf());
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - bytes-consumed {}, bytes-produced {}, status {}, handshake {}",
@@ -455,23 +518,26 @@ public class SSLHandlerG0 extends SSLHandler {
LOGGER.debug("{} write_handshake_loop() - handshake needs wrap, fast looping",
toString());
}
+
return write_handshake_loop(next, source, dest);
}
break;
}
}
- final boolean success = dest.position() != 0;
+ boolean success = dest.position() != 0;
if (success == false) {
dest.free();
} else {
dest.flip();
+
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - result {}", toString(), dest);
}
- final EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, null);
- next.filterWrite(this.mSession, encrypted);
+
+ EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, null);
+ next.filterWrite(mSession, encrypted);
}
switch (result.getHandshakeStatus()) {
@@ -479,25 +545,33 @@ public class SSLHandlerG0 extends SSLHandler {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - handshake needs unwrap, invoking receive", toString());
}
- this.receive(next, ZERO);
+
+ receive(next, ZERO);
break;
+
case NEED_WRAP:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - handshake needs wrap, looping", toString());
}
- this.write_handshake(next);
+
+ write_handshake(next);
break;
+
case NEED_TASK:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - handshake needs task, scheduling", toString());
}
- this.schedule_task(next);
+
+ //schedule_task(next);
+ execute_task(next);
break;
+
case FINISHED:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - handshake finished, flushing queue", toString());
}
- this.finish_handshake(next);
+
+ finish_handshake(next);
break;
}
@@ -510,17 +584,18 @@ public class SSLHandlerG0 extends SSLHandler {
* @param next
* @throws SSLException
*/
- synchronized protected void finish_handshake(final NextFilter next) throws SSLException {
- if (this.mHandshakeComplete == false) {
- this.mHandshakeComplete = true;
- this.mSession.setAttribute(SSLFilter.SSL_SECURED, this.mEngine.getSession());
- next.event(this.mSession, SSLEvent.SECURED);
+ synchronized protected void finish_handshake(NextFilter next) throws SSLException {
+ if (mHandshakeComplete == false) {
+ mHandshakeComplete = true;
+ mSession.setAttribute(SslFilter.SSL_SECURED, mEngine.getSession());
+ next.event(mSession, SslEvent.SECURED);
}
+
/**
* There exists a bug in the JDK which emits FINISHED twice instead of once.
*/
- this.receive(next, ZERO);
- this.flush(next);
+ receive(next, ZERO);
+ flush(next);
}
/**
@@ -530,33 +605,38 @@ public class SSLHandlerG0 extends SSLHandler {
*
* @throws SSLException
*/
- synchronized public void flush(final NextFilter next) throws SSLException {
- if (this.mOutboundClosing && this.mOutboundLinger == false) {
+ synchronized public void flush(NextFilter next) throws SSLException {
+ if (mOutboundClosing && mOutboundLinger == false) {
return;
}
- if (this.mEncodeQueue.size() == 0) {
+ if (mEncodeQueue.size() == 0) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} flush() - no saved messages", toString());
}
+
return;
}
WriteRequest current = null;
- while ((this.mAckQueue.size() < MAX_UNACK_MESSAGES) && (current = this.mEncodeQueue.poll()) != null) {
+
+ while ((mAckQueue.size() < MAX_UNACK_MESSAGES) && (current = mEncodeQueue.poll()) != null) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} flush() - {}", toString(), current);
}
- if (this.write_user_loop(next, current) == false) {
- this.mEncodeQueue.addFirst(current);
+
+ if (write_user_loop(next, current) == false) {
+ mEncodeQueue.addFirst(current);
+
break;
}
}
- if (this.mOutboundClosing && this.mEncodeQueue.size() == 0) {
- this.mEngine.closeOutbound();
+ if (mOutboundClosing && mEncodeQueue.size() == 0) {
+ mEngine.closeOutbound();
+
if (ENABLE_SOFT_CLOSURE) {
- this.write_handshake(next);
+ write_handshake(next);
}
}
}
@@ -564,77 +644,105 @@ public class SSLHandlerG0 extends SSLHandler {
/**
* {@inheritDoc}
*/
- synchronized public void close(final NextFilter next, final boolean linger) throws SSLException {
- if (this.mOutboundClosing)
+ @Override
+ synchronized public void close(NextFilter next, boolean linger) throws SSLException {
+ if (mOutboundClosing) {
return;
+ }
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} close() - closing session", toString());
}
- if (this.mHandshakeComplete) {
- next.event(this.mSession, SSLEvent.UNSECURED);
+ if (mHandshakeComplete) {
+ next.event(mSession, SslEvent.UNSECURED);
}
- this.mOutboundLinger = linger;
- this.mOutboundClosing = true;
+ mOutboundLinger = linger;
+ mOutboundClosing = true;
if (linger == false) {
- if (this.mEncodeQueue.size() != 0) {
- next.exceptionCaught(this.mSession,
- new WriteRejectedException(new ArrayList<>(this.mEncodeQueue), "closing"));
- this.mEncodeQueue.clear();
+ if (mEncodeQueue.size() != 0) {
+ next.exceptionCaught(mSession, new WriteRejectedException(new ArrayList<>(mEncodeQueue), "closing"));
+ mEncodeQueue.clear();
}
- this.mEngine.closeOutbound();
+
+ mEngine.closeOutbound();
+
if (ENABLE_SOFT_CLOSURE) {
- this.write_handshake(next);
+ write_handshake(next);
}
} else {
- this.flush(next);
+ flush(next);
}
}
- synchronized protected void throw_pending_error() throws SSLException {
- final SSLException e = this.mPendingError;
- if (e != null) {
- this.mPendingError = null;
- throw e;
+ /**
+ * Process the pending error and loop to send the associated alert if we have some.
+ *
+ * @param next The next filter in the chain
+ * @throws SSLException The rethrown pending error
+ */
+ synchronized protected void throw_pending_error(NextFilter next) throws SSLException {
+ SSLException sslException = mPendingError;
+
+ if (sslException != null) {
+ // Loop to send back the alert messages
+ receive_loop(next, null);
+
+ mPendingError = null;
+
+ // And finally rethrow the exception
+ throw sslException;
}
}
- synchronized protected void store_pending_error(SSLException e) {
- SSLException x = this.mPendingError;
- if (x == null) {
- this.mPendingError = e;
+ /**
+ * Store any error we've got during the handshake or message handling
+ *
+ * @param sslException The exfeption to store
+ */
+ synchronized protected void store_pending_error(SSLException sslException) {
+ if (mPendingError == null) {
+ mPendingError = sslException;
}
}
- protected void schedule_task(final NextFilter next) {
- if (ENABLE_ASYNC_TASKS) {
- if (this.mExecutor == null) {
- this.execute_task(next);
- } else {
- this.mExecutor.execute(new Runnable() {
- @Override
- public void run() {
- SSLHandlerG0.this.execute_task(next);
- }
- });
- }
+ /**
+ * Schedule a SSLEngine task for execution, either using an Executor, or immediately.
+ *
+ * @param next The next filter to call
+ */
+ protected void schedule_task(NextFilter next) {
+ if (ENABLE_ASYNC_TASKS && (mExecutor != null)) {
+ mExecutor.execute(new Runnable() {
+ @Override
+ public void run() {
+ SSLHandlerG0.this.execute_task(next);
+ }
+ });
} else {
- this.execute_task(next);
+ execute_task(next);
}
}
- synchronized protected void execute_task(final NextFilter next) {
- Runnable t = null;
- while ((t = mEngine.getDelegatedTask()) != null) {
+ /**
+ * Execute a SSLEngine task. We may have more than one.
+ *
+ * If we get any exception during the processing, an error is stored and thrown.
+ *
+ * @param next The next filer in the chain
+ */
+ synchronized protected void execute_task(NextFilter next) {
+ Runnable task = null;
+
+ while ((task = mEngine.getDelegatedTask()) != null) {
try {
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("{} task() - executing {}", toString(), t);
+ LOGGER.debug("{} task() - executing {}", toString(), task);
}
- t.run();
+ task.run();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} task() - writing handshake messages", toString());
@@ -642,7 +750,14 @@ public class SSLHandlerG0 extends SSLHandler {
write_handshake(next);
} catch (SSLException e) {
- this.store_pending_error(e);
+ store_pending_error(e);
+
+ try {
+ throw_pending_error(next);
+ } catch ( SSLException ssle) {
+ // ...
+ }
+
if (LOGGER.isErrorEnabled()) {
LOGGER.error("{} task() - storing error {}", toString(), e);
}
diff --git a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
similarity index 99%
rename from mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
rename to mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
index 9763954..d19b9b3 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLContextFactory.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslContextFactory.java
@@ -49,7 +49,7 @@ import javax.net.ssl.TrustManagerFactory;
*
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class SSLContextFactory {
+public class SslContextFactory {
private String provider = null;
diff --git a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
similarity index 95%
rename from mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
rename to mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
index 21ad1d3..bd75845 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLEvent.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslEvent.java
@@ -27,6 +27,6 @@ import org.apache.mina.filter.FilterEvent;
*
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public enum SSLEvent implements FilterEvent {
+public enum SslEvent implements FilterEvent {
SECURED, UNSECURED
}
diff --git a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
similarity index 93%
rename from mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
rename to mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
index 61f0917..2503d26 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLFilter.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
@@ -50,21 +50,21 @@ import org.slf4j.LoggerFactory;
* @author Jonathan Valliere
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class SSLFilter extends IoFilterAdapter {
+public class SslFilter extends IoFilterAdapter {
/**
* SSLSession object when the session is secured, otherwise null.
*/
- static public final AttributeKey SSL_SECURED = new AttributeKey(SSLFilter.class, "status");
+ static public final AttributeKey SSL_SECURED = new AttributeKey(SslFilter.class, "status");
/**
* Returns the SSL2Handler object
*/
- static protected final AttributeKey SSL_HANDLER = new AttributeKey(SSLFilter.class, "handler");
+ static protected final AttributeKey SSL_HANDLER = new AttributeKey(SslFilter.class, "handler");
/**
* The logger
*/
- static protected final Logger LOGGER = LoggerFactory.getLogger(SSLFilter.class);
+ static protected final Logger LOGGER = LoggerFactory.getLogger(SslFilter.class);
/**
* Task executor for processing handshakes
@@ -103,7 +103,7 @@ public class SSLFilter extends IoFilterAdapter {
*
* @param sslContext The SSLContext to use
*/
- public SSLFilter(SSLContext sslContext) {
+ public SslFilter(SSLContext sslContext) {
Objects.requireNonNull(sslContext, "ssl must not be null");
this.sslContext = sslContext;
@@ -191,7 +191,7 @@ public class SSLFilter extends IoFilterAdapter {
@Override
public void onPreAdd(IoFilterChain parent, String name, NextFilter next) throws Exception {
// Check that we don't have a SSL filter already present in the chain
- if (parent.contains(SSLFilter.class)) {
+ if (parent.contains(SslFilter.class)) {
throw new IllegalStateException("Only one SSL filter is permitted in a chain");
}
@@ -232,7 +232,7 @@ public class SSLFilter extends IoFilterAdapter {
* @throws SSLException Any exception thrown by the SslHandler closing
*/
synchronized protected void onConnected(NextFilter next, IoSession session) throws SSLException {
- SSLHandler sslHandler = SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
+ SslHandler sslHandler = SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
if (sslHandler == null) {
InetSocketAddress s = InetSocketAddress.class.cast(session.getRemoteAddress());
@@ -254,7 +254,7 @@ public class SSLFilter extends IoFilterAdapter {
*/
synchronized protected void onClose(NextFilter next, IoSession session, boolean linger) throws SSLException {
session.removeAttribute(SSL_SECURED);
- SSLHandler sslHandler = SSLHandler.class.cast(session.removeAttribute(SSL_HANDLER));
+ SslHandler sslHandler = SslHandler.class.cast(session.removeAttribute(SSL_HANDLER));
if (sslHandler != null) {
sslHandler.close(next, linger);
@@ -318,11 +318,19 @@ public class SSLFilter extends IoFilterAdapter {
*/
@Override
public void messageReceived(NextFilter next, IoSession session, Object message) throws Exception {
+ //if (session.isServer()) {
+ //System.out.println( ">>> Server messageReceived" );
+ //} else {
+ //System.out.println( ">>> Client messageReceived" );
+ //}
+
+ //System.out.println( message );
+
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("session {} received {}", session, message);
}
- SSLHandler sslHandler = SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
+ SslHandler sslHandler = SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
sslHandler.receive(next, IoBuffer.class.cast(message));
}
@@ -337,7 +345,7 @@ public class SSLFilter extends IoFilterAdapter {
if (request instanceof EncryptedWriteRequest) {
EncryptedWriteRequest encryptedWriteRequest = EncryptedWriteRequest.class.cast(request);
- SSLHandler sslHandler = SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
+ SslHandler sslHandler = SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
sslHandler.ack(next, request);
if (encryptedWriteRequest.getOriginalRequest() != encryptedWriteRequest) {
@@ -360,7 +368,7 @@ public class SSLFilter extends IoFilterAdapter {
if (request instanceof EncryptedWriteRequest || request instanceof DisableEncryptWriteRequest) {
super.filterWrite(next, session, request);
} else {
- SSLHandler sslHandler = SSLHandler.class.cast(session.getAttribute(SSL_HANDLER));
+ SslHandler sslHandler = SslHandler.class.cast(session.getAttribute(SSL_HANDLER));
sslHandler.write(next, request);
}
}
diff --git a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
similarity index 98%
rename from mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
rename to mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
index d1a0ffe..fd2c528 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
* @author Jonathan Valliere
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public abstract class SSLHandler {
+public abstract class SslHandler {
/**
* Minimum size of encoder buffer in packets
@@ -61,7 +61,7 @@ public abstract class SSLHandler {
/**
* Static logger
*/
- static protected final Logger LOGGER = LoggerFactory.getLogger(SSLHandler.class);
+ static protected final Logger LOGGER = LoggerFactory.getLogger(SslHandler.class);
/**
* Write Requests which are enqueued prior to the completion of the handshaking
@@ -100,7 +100,7 @@ public abstract class SSLHandler {
* @param e executor
* @param s session
*/
- public SSLHandler(SSLEngine p, Executor e, IoSession s) {
+ public SslHandler(SSLEngine p, Executor e, IoSession s) {
this.mEngine = p;
this.mExecutor = e;
this.mSession = s;
diff --git a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
index e7ab682..69e1cc1 100644
--- a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
+++ b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
@@ -32,7 +32,7 @@ import org.apache.mina.core.service.IoProcessor;
import org.apache.mina.core.service.IoService;
import org.apache.mina.core.service.TransportMetadata;
import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.AbstractSocketSessionConfig;
import org.apache.mina.transport.socket.SocketSessionConfig;
@@ -340,6 +340,6 @@ class NioSocketSession extends NioSession {
*/
@Override
public final boolean isSecured() {
- return (this.getAttribute(SSLFilter.SSL_SECURED) != null);
+ return (this.getAttribute(SslFilter.SSL_SECURED) != null);
}
}
diff --git a/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java b/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
index cc03fef..157e5a2 100644
--- a/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
+++ b/mina-core/src/test/java/org/apache/mina/core/service/SSLTestHandshakeExceptionDIRMINA1077Test.java
@@ -40,7 +40,7 @@ import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.apache.mina.util.AvailablePortFinder;
@@ -90,7 +90,7 @@ public class SSLTestHandshakeExceptionDIRMINA1077Test {
DefaultIoFilterChainBuilder filters = acceptor.getFilterChain();
// Inject the SSL filter
- SSLFilter sslFilter = new SSLFilter(createSSLContext(true));
+ SslFilter sslFilter = new SslFilter(createSSLContext(true));
filters.addLast("sslFilter", sslFilter);
sslFilter.setNeedClientAuth(true);
@@ -111,7 +111,7 @@ public class SSLTestHandshakeExceptionDIRMINA1077Test {
DefaultIoFilterChainBuilder filters = nioSocketConnector.getFilterChain();
// Inject the SSL filter
- SSLFilter sslFilter = new SSLFilter(createSSLContext(false));
+ SslFilter sslFilter = new SslFilter(createSSLContext(false));
filters.addLast("sslFilter", sslFilter);
address = InetAddress.getByName("localhost");
diff --git a/mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
similarity index 95%
rename from mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
rename to mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
index aeb75c6..a2dd900 100644
--- a/mina-core/src/test/java/org/apache/mina/filter/ssl/SSLFilterMain.java
+++ b/mina-core/src/test/java/org/apache/mina/filter/ssl/SslFilterMain.java
@@ -26,7 +26,7 @@ import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class SSLFilterMain {
+public class SslFilterMain {
public static void main(String[] args) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException,
UnrecoverableKeyException, CertificateException, IOException {
@@ -40,8 +40,8 @@ public class SSLFilterMain {
final char[] password = "password".toCharArray();
- ks.load(SSLFilterMain.class.getResourceAsStream("keystore.jks"), password);
- ts.load(SSLFilterMain.class.getResourceAsStream("truststore.jks"), password);
+ ks.load(SslFilterMain.class.getResourceAsStream("keystore.jks"), password);
+ ts.load(SslFilterMain.class.getResourceAsStream("truststore.jks"), password);
kmf.init(ks, password);
tmf.init(ts);
@@ -49,7 +49,7 @@ public class SSLFilterMain {
final SSLContext context = SSLContext.getInstance("TLSv1.3");
context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom());
- final SSLFilter filter = new SSLFilter(context);
+ final SslFilter filter = new SslFilter(context);
filter.setEnabledCipherSuites(new String[] { "TLS_AES_128_GCM_SHA256", "TLS_AES_256_GCM_SHA384" });
filter.setEnabledProtocols(new String[] { "TLSv1.3" });
diff --git a/mina-example/src/main/java/org/apache/mina/example/chat/Main.java b/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
index b2637f3..a936974 100644
--- a/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
+++ b/mina-example/src/main/java/org/apache/mina/example/chat/Main.java
@@ -28,7 +28,7 @@ import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.compression.CompressionFilter;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.filter.logging.MdcInjectionFilter;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
/**
@@ -72,7 +72,7 @@ public class Main {
private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
throws Exception {
- SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
+ SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
.getInstance(true));
chain.addLast("sslFilter", sslFilter);
System.out.println("SSL ON");
diff --git a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
index f5c2543..cae59ad 100644
--- a/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
+++ b/mina-example/src/main/java/org/apache/mina/example/chat/client/ChatClientSupport.java
@@ -33,7 +33,7 @@ import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.compression.CompressionFilter;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.filter.logging.MdcInjectionFilter;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
/**
@@ -79,7 +79,7 @@ public class ChatClientSupport {
if (useSsl) {
SSLContext sslContext = BogusSSLContextFactory
.getInstance(false);
- SSLFilter sslFilter = new SSLFilter(sslContext);
+ SslFilter sslFilter = new SslFilter(sslContext);
connector.getFilterChain().addFirst("sslFilter", sslFilter);
}
diff --git a/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java b/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
index 7e1c7aa..078f79e 100644
--- a/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
+++ b/mina-example/src/main/java/org/apache/mina/example/echoserver/Main.java
@@ -24,7 +24,7 @@ import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
import org.apache.mina.filter.compression.CompressionFilter;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
@@ -68,7 +68,7 @@ public class Main {
private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
throws Exception {
- SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
+ SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
.getInstance(true));
chain.addLast("sslFilter", sslFilter);
System.out.println("SSL ON");
diff --git a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
index dd469bf..dca3501 100644
--- a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
+++ b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslClient.java
@@ -32,7 +32,7 @@ import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
/**
@@ -70,7 +70,7 @@ public class TcpSslClient extends IoHandlerAdapter {
// Inject teh SSL filter
SSLContext sslContext = BogusSSLContextFactory
.getInstance(false);
- SSLFilter sslFilter = new SSLFilter(sslContext);
+ SslFilter sslFilter = new SslFilter(sslContext);
connector.getFilterChain().addFirst("sslFilter", sslFilter);
connector.setHandler(this);
diff --git a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
index 9bb972c..96b1f50 100644
--- a/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
+++ b/mina-example/src/main/java/org/apache/mina/example/tcp/perf/TcpSslServer.java
@@ -29,7 +29,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
/**
@@ -136,7 +136,7 @@ public class TcpSslServer extends IoHandlerAdapter {
// Inject the SSL filter
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
- SSLFilter sslFilter = new SSLFilter(BogusSSLContextFactory
+ SslFilter sslFilter = new SslFilter(BogusSSLContextFactory
.getInstance(true));
chain.addLast("sslFilter", sslFilter);
diff --git a/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml b/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
index c5b7810..6e78e15 100644
--- a/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
+++ b/mina-example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
@@ -49,7 +49,7 @@
<bean id="bogusTrustManagerFactory" class="org.apache.mina.filter.ssl.BogusTrustManagerFactory"/>
<!-- SSLContext to be used -->
- <bean id="sslContextFactory" class="org.apache.mina.filter.ssl.SSLContextFactory">
+ <bean id="sslContextFactory" class="org.apache.mina.filter.ssl.SslContextFactory">
<property name="protocol" value="TLS"/>
<property name="keyManagerFactoryAlgorithm" value="SunX509"/>
<property name="keyManagerFactoryKeyStore"><ref local="keyStore"/></property>
@@ -75,7 +75,7 @@
<bean id="loggingFilter" class="org.apache.mina.filter.logging.LoggingFilter" />
- <bean id="sslFilter" class="org.apache.mina.filter.ssl.SSLFilter">
+ <bean id="sslFilter" class="org.apache.mina.filter.ssl.SslFilter">
<constructor-arg ref="sslContext"/>
</bean>
diff --git a/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java b/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
index 733017d..6f5e7df 100644
--- a/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
+++ b/mina-example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
@@ -30,7 +30,7 @@ import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
import org.apache.mina.filter.FilterEvent;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.DatagramSessionConfig;
import org.apache.mina.transport.socket.nio.NioDatagramAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
@@ -122,7 +122,7 @@ public abstract class AbstractTest {
try {
session.getFilterChain().addFirst(
"SSL",
- new SSLFilter(BogusSSLContextFactory
+ new SslFilter(BogusSSLContextFactory
.getInstance(true)));
} catch (GeneralSecurityException e) {
LOGGER.error("", e);
diff --git a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
index d78f923..18b6a6a 100644
--- a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
+++ b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
@@ -33,7 +33,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.core.write.WriteException;
import org.apache.mina.example.echoserver.ssl.BogusSSLContextFactory;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.nio.NioDatagramConnector;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.apache.mina.util.AvailablePortFinder;
@@ -58,7 +58,7 @@ public class ConnectorTest extends AbstractTest {
private final int DATA_SIZE = 16;
private EchoConnectorHandler handler;
- private SSLFilter connectorSSLFilter;
+ private SslFilter connectorSslFilter;
public ConnectorTest() {
// Do nothing
@@ -68,7 +68,7 @@ public class ConnectorTest extends AbstractTest {
public void setUp() throws Exception {
super.setUp();
handler = new EchoConnectorHandler();
- connectorSSLFilter = new SSLFilter(BogusSSLContextFactory
+ connectorSslFilter = new SslFilter(BogusSSLContextFactory
.getInstance(false));
}
@@ -86,7 +86,7 @@ public class ConnectorTest extends AbstractTest {
IoConnector connector = new NioSocketConnector();
// Add an SSL filter to connector
- connector.getFilterChain().addLast("SSL", connectorSSLFilter);
+ connector.getFilterChain().addLast("SSL", connectorSslFilter);
testConnector(connector);
}
@@ -159,7 +159,7 @@ public class ConnectorTest extends AbstractTest {
assertEquals((byte) '.', handler.readBuf.get());
// Now start TLS connection
- session.getFilterChain().addFirst("SSL", connectorSSLFilter);
+ session.getFilterChain().addFirst("SSL", connectorSslFilter);
testConnector0(session);
}
diff --git a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
similarity index 97%
rename from mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
rename to mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
index f95d0cc..1f5bd99 100644
--- a/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SSLFilterTest.java
+++ b/mina-example/src/test/java/org/apache/mina/example/echoserver/ssl/SslFilterTest.java
@@ -41,7 +41,7 @@ import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
-import org.apache.mina.filter.ssl.SSLFilter;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.junit.After;
@@ -53,7 +53,7 @@ import org.junit.Test;
*
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class SSLFilterTest {
+public class SslFilterTest {
private int port;
private SocketAcceptor acceptor;
@@ -84,9 +84,9 @@ public class SSLFilterTest {
// http://java.sun.com/javase/javaseforbusiness/docs/TLSReadme.html
java.lang.System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
- SSLFilter sslFilter = null;
+ SslFilter sslFilter = null;
if (useSSL) {
- sslFilter = new SSLFilter(BogusSSLContextFactory.getInstance(true));
+ sslFilter = new SslFilter(BogusSSLContextFactory.getInstance(true));
acceptor.getFilterChain().addLast("sslFilter", sslFilter);
}
acceptor.getFilterChain().addLast("codec",
[mina] 01/02: Revert "o Make it so outbound message are written when the inbound is closed."
Posted by el...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
elecharny pushed a commit to branch 2.2.X
in repository https://gitbox.apache.org/repos/asf/mina.git
commit c41cb60e52d92244d44d8c8e04974758ffe7953f
Author: emmanuel lecharny <el...@apache.org>
AuthorDate: Tue Mar 8 10:00:18 2022 +0100
Revert "o Make it so outbound message are written when the inbound is closed."
This reverts commit ecc99727fbab3da47e1a382360ca9d0355af2344.
---
.../org/apache/mina/filter/ssl/SSLHandler.java | 98 +++---
.../org/apache/mina/filter/ssl/SSLHandlerG0.java | 375 +++++++--------------
2 files changed, 176 insertions(+), 297 deletions(-)
diff --git a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
index 661d878..d1a0ffe 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandler.java
@@ -96,23 +96,23 @@ public abstract class SSLHandler {
/**
* Instantiates a new handler
*
- * @param sslEngine The SSLEngine instance
- * @param executor The executor instance to use to process tasks
- * @param session The session to handle
+ * @param p engine
+ * @param e executor
+ * @param s session
*/
- public SSLHandler(SSLEngine sslEngine, Executor executor, IoSession session) {
- this.mEngine = sslEngine;
- this.mExecutor = executor;
- this.mSession = session;
+ public SSLHandler(SSLEngine p, Executor e, IoSession s) {
+ this.mEngine = p;
+ this.mExecutor = e;
+ this.mSession = s;
}
/**
- * @return {@code true} if the encryption session is open
+ * {@code true} if the encryption session is open
*/
abstract public boolean isOpen();
/**
- * @return {@code true} if the encryption session is connected and secure
+ * {@code true} if the encryption session is connected and secure
*/
abstract public boolean isConnected();
@@ -120,21 +120,23 @@ public abstract class SSLHandler {
* Opens the encryption session, this may include sending the initial handshake
* message
*
- * @param next The next filter in the chain
+ * @param session
+ * @param next
*
- * @throws SSLException If we get an SSL exception while processing the opening
+ * @throws SSLException
*/
abstract public void open(NextFilter next) throws SSLException;
/**
* Decodes encrypted messages and passes the results to the {@code next} filter.
*
- * @param next The next filter in the chain
- * @param message The message to process
+ * @param message
+ * @param session
+ * @param next
*
- * @throws SSLException If we get an SSL exception while processing the message
+ * @throws SSLException
*/
- abstract public void receive(NextFilter next, IoBuffer message) throws SSLException;
+ abstract public void receive(NextFilter next, final IoBuffer message) throws SSLException;
/**
* Acknowledge that a {@link WriteRequest} has been successfully written to the
@@ -144,12 +146,13 @@ public abstract class SSLHandler {
* specific number of pending write operations at any moment of time. When one
* {@code WriteRequest} is acknowledged, another can be encoded and written.
*
- * @param next The next filter in the chain
- * @param request The written request
+ * @param request
+ * @param session
+ * @param next
*
- * @throws SSLException If we get an SSL exception while processing the ack
+ * @throws SSLException
*/
- abstract public void ack(NextFilter next, WriteRequest request) throws SSLException;
+ abstract public void ack(NextFilter next, final WriteRequest request) throws SSLException;
/**
* Encrypts and writes the specified {@link WriteRequest} to the
@@ -158,23 +161,24 @@ public abstract class SSLHandler {
* The encryption session may be currently handshaking preventing application
* messages from being written.
*
- * @param next The next filter in the chain
- * @param request The message to write
+ * @param request
+ * @param session
+ * @param next
*
- * @throws SSLException If we get an SSL exception while writing the message
+ * @throws SSLException
* @throws WriteRejectedException when the session is closing
*/
- abstract public void write(NextFilter next, WriteRequest request) throws SSLException, WriteRejectedException;
+ abstract public void write(NextFilter next, final WriteRequest request) throws SSLException, WriteRejectedException;
/**
* Closes the encryption session and writes any required messages
*
- * @param next The next filter in the chain
+ * @param next
* @param linger if true, write any queued messages before closing
*
- * @throws SSLException If we get an SSL exception while processing the opening session closure
- **/
- abstract public void close(NextFilter next, boolean linger) throws SSLException;
+ * @throws SSLException
+ */
+ abstract public void close(NextFilter next, final boolean linger) throws SSLException;
/**
* {@inheritDoc}
@@ -187,14 +191,14 @@ public abstract class SSLHandler {
b.append(Integer.toHexString(this.hashCode()));
b.append("[mode=");
- if (mEngine.getUseClientMode()) {
+ if (this.mEngine.getUseClientMode()) {
b.append("client");
} else {
b.append("server");
}
b.append(", connected=");
- b.append(isConnected());
+ b.append(this.isConnected());
b.append("]");
@@ -208,23 +212,20 @@ public abstract class SSLHandler {
* @return buffer to decode
*/
protected IoBuffer resume_decode_buffer(IoBuffer source) {
- if (mDecodeBuffer == null) {
+ if (mDecodeBuffer == null)
if (source == null) {
return ZERO;
} else {
mDecodeBuffer = source;
-
return source;
}
- } else {
+ else {
if (source != null && source != ZERO) {
mDecodeBuffer.expand(source.remaining());
mDecodeBuffer.put(source);
source.free();
}
-
mDecodeBuffer.flip();
-
return mDecodeBuffer;
}
}
@@ -238,18 +239,17 @@ public abstract class SSLHandler {
protected void suspend_decode_buffer(IoBuffer source) {
if (source.hasRemaining()) {
if (source.isDerived()) {
- mDecodeBuffer = IoBuffer.allocate(source.remaining());
- mDecodeBuffer.put(source);
+ this.mDecodeBuffer = IoBuffer.allocate(source.remaining());
+ this.mDecodeBuffer.put(source);
} else {
source.compact();
- mDecodeBuffer = source;
+ this.mDecodeBuffer = source;
}
} else {
if (source != ZERO) {
source.free();
}
-
- mDecodeBuffer = null;
+ this.mDecodeBuffer = null;
}
}
@@ -260,15 +260,11 @@ public abstract class SSLHandler {
* @return buffer
*/
protected IoBuffer allocate_encode_buffer(int estimate) {
- SSLSession session = mEngine.getHandshakeSession();
-
- if (session == null) {
- session = mEngine.getSession();
- }
-
+ SSLSession session = this.mEngine.getHandshakeSession();
+ if (session == null)
+ session = this.mEngine.getSession();
int packets = Math.max(MIN_ENCODER_BUFFER_PACKETS,
Math.min(MAX_ENCODER_BUFFER_PACKETS, 1 + (estimate / session.getApplicationBufferSize())));
-
return IoBuffer.allocate(packets * session.getPacketBufferSize());
}
@@ -279,14 +275,10 @@ public abstract class SSLHandler {
* @return buffer
*/
protected IoBuffer allocate_app_buffer(int estimate) {
- SSLSession session = mEngine.getHandshakeSession();
-
- if (session == null) {
- session = mEngine.getSession();
- }
-
+ SSLSession session = this.mEngine.getHandshakeSession();
+ if (session == null)
+ session = this.mEngine.getSession();
int packets = 1 + (estimate / session.getPacketBufferSize());
-
return IoBuffer.allocate(packets * session.getApplicationBufferSize());
}
}
diff --git a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
index 3a591c8..76f2d53 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SSLHandlerG0.java
@@ -102,12 +102,12 @@ public class SSLHandlerG0 extends SSLHandler {
/**
* Instantiates a new handler
*
- * @param sslEngine The SSLEngine instance
- * @param executor The executor instance to use to process tasks
- * @param session The session to handle
+ * @param p engine
+ * @param e executor
+ * @param s session
*/
- public SSLHandlerG0(SSLEngine sslEngine, Executor executor, IoSession session) {
- super(sslEngine, executor, session);
+ public SSLHandlerG0(SSLEngine p, Executor e, IoSession s) {
+ super(p, e, s);
}
/**
@@ -115,7 +115,7 @@ public class SSLHandlerG0 extends SSLHandler {
*/
@Override
public boolean isOpen() {
- return mEngine.isOutboundDone() == false;
+ return this.mEngine.isOutboundDone() == false;
}
/**
@@ -123,24 +123,21 @@ public class SSLHandlerG0 extends SSLHandler {
*/
@Override
public boolean isConnected() {
- return mHandshakeComplete && isOpen();
+ return this.mHandshakeComplete && isOpen();
}
/**
* {@inheritDoc}
*/
- @Override
- synchronized public void open(NextFilter next) throws SSLException {
- if (mHandshakeStarted == false) {
- mHandshakeStarted = true;
-
- if (mEngine.getUseClientMode()) {
+ synchronized public void open(final NextFilter next) throws SSLException {
+ if (this.mHandshakeStarted == false) {
+ this.mHandshakeStarted = true;
+ if (this.mEngine.getUseClientMode()) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} open() - begin handshaking", toString());
}
-
- mEngine.beginHandshake();
- write_handshake(next);
+ this.mEngine.beginHandshake();
+ this.write_handshake(next);
}
}
}
@@ -148,65 +145,51 @@ public class SSLHandlerG0 extends SSLHandler {
/**
* {@inheritDoc}
*/
- @Override
- synchronized public void receive(NextFilter next, IoBuffer message) throws SSLException {
- if (mDecodeThread == null) {
+ synchronized public void receive(final NextFilter next, final IoBuffer message) throws SSLException {
+ if (this.mDecodeThread == null) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive() - message {}", toString(), message);
}
-
- mDecodeThread = Thread.currentThread();
- IoBuffer source = resume_decode_buffer(message);
-
+ this.mDecodeThread = Thread.currentThread();
+ final IoBuffer source = resume_decode_buffer(message);
try {
- receive_loop(next, source);
+ this.receive_loop(next, source);
} finally {
suspend_decode_buffer(source);
- mDecodeThread = null;
+ this.mDecodeThread = null;
}
} else {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive() - recursion", toString());
}
-
- receive_loop(next, mDecodeBuffer);
+ this.receive_loop(next, this.mDecodeBuffer);
}
- throw_pending_error(next);
+ this.throw_pending_error();
}
/**
* Process a received message
*
- * @param next The next filter
- * @param message The message to process
+ * @param next
+ * @param message
*
- * @throws SSLException If we get some error while processing the message
+ * @throws SSLException
*/
@SuppressWarnings("incomplete-switch")
- protected void receive_loop(NextFilter next, IoBuffer message) throws SSLException {
+ protected void receive_loop(final NextFilter next, final IoBuffer message) throws SSLException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - source {}", toString(), message);
}
if (mEngine.isInboundDone()) {
- switch (mEngine.getHandshakeStatus()) {
- case NEED_WRAP:
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("{} receive_loop() - handshake needs wrap, invoking write", toString());
- }
-
- write_handshake(next);
- break;
- }
-
throw new IllegalStateException("closed");
}
- IoBuffer source = message;
- IoBuffer dest = allocate_app_buffer(source.remaining());
+ final IoBuffer source = message;
+ final IoBuffer dest = allocate_app_buffer(source.remaining());
- SSLEngineResult result = mEngine.unwrap(source.buf(), dest.buf());
+ final SSLEngineResult result = mEngine.unwrap(source.buf(), dest.buf());
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - bytes-consumed {}, bytes-produced {}, status {}, handshake {}",
@@ -218,12 +201,10 @@ public class SSLHandlerG0 extends SSLHandler {
dest.free();
} else {
dest.flip();
-
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - result {}", toString(), dest);
}
-
- next.messageReceived(mSession, dest);
+ next.messageReceived(this.mSession, dest);
}
switch (result.getHandshakeStatus()) {
@@ -232,44 +213,34 @@ public class SSLHandlerG0 extends SSLHandler {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - handshake needs unwrap, looping", toString());
}
-
- receive_loop(next, message);
+ this.receive_loop(next, message);
}
-
break;
case NEED_TASK:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - handshake needs task, scheduling", toString());
}
-
- execute_task(next);
-
+ this.schedule_task(next);
break;
case NEED_WRAP:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - handshake needs wrap, invoking write", toString());
}
-
- write_handshake(next);
+ this.write_handshake(next);
break;
-
case FINISHED:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - handshake finished, flushing queue", toString());
}
-
- finish_handshake(next);
+ this.finish_handshake(next);
break;
-
case NOT_HANDSHAKING:
if ((result.bytesProduced() != 0 || result.bytesConsumed() != 0) && message.hasRemaining()) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} receive_loop() - trying to decode more messages, looping", toString());
}
-
- receive_loop(next, message);
+ this.receive_loop(next, message);
}
-
break;
}
}
@@ -277,62 +248,55 @@ public class SSLHandlerG0 extends SSLHandler {
/**
* {@inheritDoc}
*/
- @Override
- synchronized public void ack(NextFilter next, WriteRequest request) throws SSLException {
- if (mAckQueue.remove(request)) {
+ synchronized public void ack(final NextFilter next, final WriteRequest request) throws SSLException {
+ if (this.mAckQueue.remove(request)) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} ack() - {}", toString(), request);
}
-
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} ack() - checking to see if any messages can be flushed", toString(), request);
}
-
- flush(next);
+ this.flush(next);
}
- throw_pending_error(next);
+ this.throw_pending_error();
}
/**
* {@inheritDoc}
*/
- @Override
- synchronized public void write(NextFilter next, WriteRequest request) throws SSLException, WriteRejectedException {
+ synchronized public void write(final NextFilter next, final WriteRequest request)
+ throws SSLException, WriteRejectedException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write() - source {}", toString(), request);
}
- if (mOutboundClosing) {
+ if (this.mOutboundClosing) {
throw new WriteRejectedException(request, "closing");
}
- if (mEncodeQueue.isEmpty()) {
- if (write_user_loop(next, request) == false) {
+ if (this.mEncodeQueue.isEmpty()) {
+ if (this.write_user_loop(next, request) == false) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write() - unable to write right now, saving request for later", toString(),
request);
}
-
- if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
+ if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
throw new BufferOverflowException();
}
-
- mEncodeQueue.add(request);
+ this.mEncodeQueue.add(request);
}
} else {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write() - unable to write right now, saving request for later", toString(), request);
}
-
- if (mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
+ if (this.mEncodeQueue.size() == MAX_QUEUED_MESSAGES) {
throw new BufferOverflowException();
}
-
- mEncodeQueue.add(request);
+ this.mEncodeQueue.add(request);
}
- throw_pending_error(next);
+ this.throw_pending_error();
}
/**
@@ -347,15 +311,16 @@ public class SSLHandlerG0 extends SSLHandler {
* @throws SSLException
*/
@SuppressWarnings("incomplete-switch")
- synchronized protected boolean write_user_loop(NextFilter next, WriteRequest request) throws SSLException {
+ synchronized protected boolean write_user_loop(final NextFilter next, final WriteRequest request)
+ throws SSLException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - source {}", toString(), request);
}
- IoBuffer source = IoBuffer.class.cast(request.getMessage());
- IoBuffer dest = allocate_encode_buffer(source.remaining());
+ final IoBuffer source = IoBuffer.class.cast(request.getMessage());
+ final IoBuffer dest = allocate_encode_buffer(source.remaining());
- SSLEngineResult result = mEngine.wrap(source.buf(), dest.buf());
+ final SSLEngineResult result = this.mEngine.wrap(source.buf(), dest.buf());
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - bytes-consumed {}, bytes-produced {}, status {}, handshake {}",
@@ -369,42 +334,32 @@ public class SSLHandlerG0 extends SSLHandler {
if (result.bytesConsumed() == 0) {
// an handshaking message must have been produced
EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, null);
-
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - result {}", toString(), encrypted);
}
-
- next.filterWrite(mSession, encrypted);
+ next.filterWrite(this.mSession, encrypted);
// do not return because we want to enter the handshake switch
} else {
// then we probably consumed some data
dest.flip();
-
if (source.hasRemaining()) {
EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, null);
- mAckQueue.add(encrypted);
-
+ this.mAckQueue.add(encrypted);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - result {}", toString(), encrypted);
}
-
- next.filterWrite(mSession, encrypted);
-
- if (mAckQueue.size() < MAX_UNACK_MESSAGES) {
+ next.filterWrite(this.mSession, encrypted);
+ if (this.mAckQueue.size() < MAX_UNACK_MESSAGES) {
return write_user_loop(next, request); // write additional chunks
}
-
return false;
} else {
EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, request);
- mAckQueue.add(encrypted);
-
+ this.mAckQueue.add(encrypted);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - result {}", toString(), encrypted);
}
-
- next.filterWrite(mSession, encrypted);
-
+ next.filterWrite(this.mSession, encrypted);
return true;
}
// we return because there is not reason to enter the handshake switch
@@ -416,26 +371,19 @@ public class SSLHandlerG0 extends SSLHandler {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - handshake needs task, scheduling", toString());
}
-
- //schedule_task(next);
- execute_task(next);
+ this.schedule_task(next);
break;
-
case NEED_WRAP:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - handshake needs wrap, looping", toString());
}
-
- return write_user_loop(next, request);
-
+ return this.write_user_loop(next, request);
case FINISHED:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_user_loop() - handshake finished, flushing queue", toString());
}
-
- finish_handshake(next);
-
- return write_user_loop(next, request);
+ this.finish_handshake(next);
+ return this.write_user_loop(next, request);
}
return false;
@@ -455,9 +403,8 @@ public class SSLHandlerG0 extends SSLHandler {
LOGGER.debug("{} write_handshake() - internal", toString());
}
- IoBuffer source = ZERO;
- IoBuffer dest = allocate_encode_buffer(source.remaining());
-
+ final IoBuffer source = ZERO;
+ final IoBuffer dest = allocate_encode_buffer(source.remaining());
return write_handshake_loop(next, source, dest);
}
@@ -477,11 +424,11 @@ public class SSLHandlerG0 extends SSLHandler {
*/
@SuppressWarnings("incomplete-switch")
protected boolean write_handshake_loop(NextFilter next, IoBuffer source, IoBuffer dest) throws SSLException {
- if (mOutboundClosing && mEngine.isOutboundDone()) {
+ if (this.mOutboundClosing && this.mEngine.isOutboundDone()) {
return false;
}
- SSLEngineResult result = mEngine.wrap(source.buf(), dest.buf());
+ final SSLEngineResult result = this.mEngine.wrap(source.buf(), dest.buf());
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - bytes-consumed {}, bytes-produced {}, status {}, handshake {}",
@@ -508,26 +455,23 @@ public class SSLHandlerG0 extends SSLHandler {
LOGGER.debug("{} write_handshake_loop() - handshake needs wrap, fast looping",
toString());
}
-
return write_handshake_loop(next, source, dest);
}
break;
}
}
- boolean success = dest.position() != 0;
+ final boolean success = dest.position() != 0;
if (success == false) {
dest.free();
} else {
dest.flip();
-
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - result {}", toString(), dest);
}
-
- EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, null);
- next.filterWrite(mSession, encrypted);
+ final EncryptedWriteRequest encrypted = new EncryptedWriteRequest(dest, null);
+ next.filterWrite(this.mSession, encrypted);
}
switch (result.getHandshakeStatus()) {
@@ -535,33 +479,25 @@ public class SSLHandlerG0 extends SSLHandler {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - handshake needs unwrap, invoking receive", toString());
}
-
- receive(next, ZERO);
+ this.receive(next, ZERO);
break;
-
case NEED_WRAP:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - handshake needs wrap, looping", toString());
}
-
- write_handshake(next);
+ this.write_handshake(next);
break;
-
case NEED_TASK:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - handshake needs task, scheduling", toString());
}
-
- //schedule_task(next);
- execute_task(next);
+ this.schedule_task(next);
break;
-
case FINISHED:
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} write_handshake_loop() - handshake finished, flushing queue", toString());
}
-
- finish_handshake(next);
+ this.finish_handshake(next);
break;
}
@@ -574,18 +510,17 @@ public class SSLHandlerG0 extends SSLHandler {
* @param next
* @throws SSLException
*/
- synchronized protected void finish_handshake(NextFilter next) throws SSLException {
- if (mHandshakeComplete == false) {
- mHandshakeComplete = true;
- mSession.setAttribute(SSLFilter.SSL_SECURED, mEngine.getSession());
- next.event(mSession, SSLEvent.SECURED);
+ synchronized protected void finish_handshake(final NextFilter next) throws SSLException {
+ if (this.mHandshakeComplete == false) {
+ this.mHandshakeComplete = true;
+ this.mSession.setAttribute(SSLFilter.SSL_SECURED, this.mEngine.getSession());
+ next.event(this.mSession, SSLEvent.SECURED);
}
-
/**
* There exists a bug in the JDK which emits FINISHED twice instead of once.
*/
- receive(next, ZERO);
- flush(next);
+ this.receive(next, ZERO);
+ this.flush(next);
}
/**
@@ -595,38 +530,33 @@ public class SSLHandlerG0 extends SSLHandler {
*
* @throws SSLException
*/
- synchronized public void flush(NextFilter next) throws SSLException {
- if (mOutboundClosing && mOutboundLinger == false) {
+ synchronized public void flush(final NextFilter next) throws SSLException {
+ if (this.mOutboundClosing && this.mOutboundLinger == false) {
return;
}
- if (mEncodeQueue.size() == 0) {
+ if (this.mEncodeQueue.size() == 0) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} flush() - no saved messages", toString());
}
-
return;
}
WriteRequest current = null;
-
- while ((mAckQueue.size() < MAX_UNACK_MESSAGES) && (current = mEncodeQueue.poll()) != null) {
+ while ((this.mAckQueue.size() < MAX_UNACK_MESSAGES) && (current = this.mEncodeQueue.poll()) != null) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} flush() - {}", toString(), current);
}
-
- if (write_user_loop(next, current) == false) {
- mEncodeQueue.addFirst(current);
-
+ if (this.write_user_loop(next, current) == false) {
+ this.mEncodeQueue.addFirst(current);
break;
}
}
- if (mOutboundClosing && mEncodeQueue.size() == 0) {
- mEngine.closeOutbound();
-
+ if (this.mOutboundClosing && this.mEncodeQueue.size() == 0) {
+ this.mEngine.closeOutbound();
if (ENABLE_SOFT_CLOSURE) {
- write_handshake(next);
+ this.write_handshake(next);
}
}
}
@@ -634,113 +564,77 @@ public class SSLHandlerG0 extends SSLHandler {
/**
* {@inheritDoc}
*/
- @Override
- synchronized public void close(NextFilter next, boolean linger) throws SSLException {
- if (mOutboundClosing) {
+ synchronized public void close(final NextFilter next, final boolean linger) throws SSLException {
+ if (this.mOutboundClosing)
return;
- }
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} close() - closing session", toString());
}
- if (mHandshakeComplete) {
- next.event(mSession, SSLEvent.UNSECURED);
+ if (this.mHandshakeComplete) {
+ next.event(this.mSession, SSLEvent.UNSECURED);
}
- mOutboundLinger = linger;
- mOutboundClosing = true;
+ this.mOutboundLinger = linger;
+ this.mOutboundClosing = true;
if (linger == false) {
- if (mEncodeQueue.size() != 0) {
- next.exceptionCaught(mSession, new WriteRejectedException(new ArrayList<>(mEncodeQueue), "closing"));
- mEncodeQueue.clear();
+ if (this.mEncodeQueue.size() != 0) {
+ next.exceptionCaught(this.mSession,
+ new WriteRejectedException(new ArrayList<>(this.mEncodeQueue), "closing"));
+ this.mEncodeQueue.clear();
}
-
- mEngine.closeOutbound();
-
+ this.mEngine.closeOutbound();
if (ENABLE_SOFT_CLOSURE) {
- write_handshake(next);
+ this.write_handshake(next);
}
} else {
- flush(next);
+ this.flush(next);
}
}
- /**
- * Process the pending error and loop to send the associated alert if we have some.
- *
- * @param next The next filter in the chain
- * @throws SSLException The rethrown pending error
- */
- synchronized protected void throw_pending_error(NextFilter next) throws SSLException {
- SSLException sslException = mPendingError;
-
- if (sslException != null) {
- mPendingError = null;
-
- // Loop to send back the alert messages
- receive_loop(next, null);
-
- // And finally rethrow the exception
- throw sslException;
+ synchronized protected void throw_pending_error() throws SSLException {
+ final SSLException e = this.mPendingError;
+ if (e != null) {
+ this.mPendingError = null;
+ throw e;
}
}
- /**
- * Store any error we've got during the handshake or message handling
- *
- * @param sslException The exfeption to store
- */
- synchronized protected void store_pending_error(SSLException sslException) {
- if (mPendingError == null) {
- mPendingError = sslException;
+ synchronized protected void store_pending_error(SSLException e) {
+ SSLException x = this.mPendingError;
+ if (x == null) {
+ this.mPendingError = e;
}
}
- /**
- * Schedule a SSLEngine task for execution, either using an Executor, or immediately.
- *
- * @param next The next filter to call
- */
- protected void schedule_task(NextFilter next) {
- if (ENABLE_ASYNC_TASKS && (mExecutor != null)) {
- mExecutor.execute(new Runnable() {
- @Override
- public void run() {
- SSLHandlerG0.this.execute_task(next);
- }
- });
+ protected void schedule_task(final NextFilter next) {
+ if (ENABLE_ASYNC_TASKS) {
+ if (this.mExecutor == null) {
+ this.execute_task(next);
+ } else {
+ this.mExecutor.execute(new Runnable() {
+ @Override
+ public void run() {
+ SSLHandlerG0.this.execute_task(next);
+ }
+ });
+ }
} else {
- execute_task(next);
+ this.execute_task(next);
}
}
- /**
- * Execute a SSLEngine task. We may have more than one.
- *
- * If we get any exception during the processing, an error is stored and thrown.
- *
- * @param next The next filer in the chain
- */
- synchronized protected void execute_task(NextFilter next) {
- Runnable task = null;
- int nbTask = 0;
-
- while ((task = mEngine.getDelegatedTask()) != null) {
+ synchronized protected void execute_task(final NextFilter next) {
+ Runnable t = null;
+ while ((t = mEngine.getDelegatedTask()) != null) {
try {
- System.out.println( "--->>>>> Task number " + nbTask);
- nbTask++;
-
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("{} task() - executing {}", toString(), task);
+ LOGGER.debug("{} task() - executing {}", toString(), t);
}
- if (ENABLE_ASYNC_TASKS && (mExecutor != null)) {
- mExecutor.execute(task);
- } else {
- task.run();
- }
+ t.run();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("{} task() - writing handshake messages", toString());
@@ -748,14 +642,7 @@ public class SSLHandlerG0 extends SSLHandler {
write_handshake(next);
} catch (SSLException e) {
- store_pending_error(e);
-
- try {
- throw_pending_error(next);
- } catch ( SSLException ssle) {
- // ...
- }
-
+ this.store_pending_error(e);
if (LOGGER.isErrorEnabled()) {
LOGGER.error("{} task() - storing error {}", toString(), e);
}