From 01e3c5fce720cf4fe9f396b4893e7bfacf135cff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Endre=20S=C3=A1ndor=20Varga?= Date: Thu, 3 Jan 2013 14:54:17 +0100 Subject: [PATCH 1/2] Added setIssueHandshake() to enable auto-handshake --- .../akka/remote/transport/netty/NettyTransport.scala | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala b/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala index f913fa0cbc..6b912e54ec 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala @@ -23,6 +23,7 @@ import util.control.{ NoStackTrace, NonFatal } import akka.dispatch.ThreadPoolConfig import akka.remote.transport.AssociationHandle.HandleEventListener import java.util.concurrent.atomic.AtomicInteger +import org.jboss.netty.handler.ssl.SslHandler object NettyTransportSettings { sealed trait Mode @@ -230,10 +231,17 @@ class NettyTransport(private val settings: NettyTransportSettings, private val s } private val associationListenerPromise: Promise[AssociationEventListener] = Promise() + + private def sslHandler(isClient: Boolean): SslHandler = { + val handler = NettySSLSupport(settings.SslSettings.get, log, isClient) + handler.setIssueHandshake(true) + handler + } + private val serverPipelineFactory: ChannelPipelineFactory = new ChannelPipelineFactory { override def getPipeline: ChannelPipeline = { val pipeline = newPipeline - if (EnableSsl) pipeline.addFirst("SslHandler", NettySSLSupport(settings.SslSettings.get, log, false)) + if (EnableSsl) pipeline.addFirst("SslHandler", sslHandler(false)) val handler = if (isDatagram) new UdpServerHandler(NettyTransport.this, associationListenerPromise.future) else new TcpServerHandler(NettyTransport.this, associationListenerPromise.future) pipeline.addLast("ServerHandler", handler) @@ -244,7 +252,7 @@ class NettyTransport(private val settings: NettyTransportSettings, private val s private def clientPipelineFactory(statusPromise: Promise[AssociationHandle]): ChannelPipelineFactory = new ChannelPipelineFactory { override def getPipeline: ChannelPipeline = { val pipeline = newPipeline - if (EnableSsl) pipeline.addFirst("SslHandler", NettySSLSupport(settings.SslSettings.get, log, true)) + if (EnableSsl) pipeline.addFirst("SslHandler", sslHandler(true)) val handler = if (isDatagram) new UdpClientHandler(NettyTransport.this, statusPromise) else new TcpClientHandler(NettyTransport.this, statusPromise) pipeline.addLast("clienthandler", handler) From e399aefe3dac000ab9ba73947ec439e4cec9f210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Endre=20S=C3=A1ndor=20Varga?= Date: Thu, 3 Jan 2013 16:18:25 +0100 Subject: [PATCH 2/2] Using named parameters for booleans --- .../scala/akka/remote/transport/netty/NettyTransport.scala | 6 +++--- .../main/scala/akka/remote/transport/netty/UdpSupport.scala | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala b/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala index 6b912e54ec..7381a62297 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala @@ -11,7 +11,7 @@ import com.typesafe.config.Config import java.net.{ UnknownHostException, SocketAddress, InetAddress, InetSocketAddress, ConnectException } import java.util.concurrent.{ ConcurrentHashMap, Executor, Executors, CancellationException } import org.jboss.netty.bootstrap.{ ConnectionlessBootstrap, Bootstrap, ClientBootstrap, ServerBootstrap } -import org.jboss.netty.buffer.{ChannelBuffers, ChannelBuffer} +import org.jboss.netty.buffer.{ ChannelBuffers, ChannelBuffer } import org.jboss.netty.channel._ import org.jboss.netty.channel.group.{ ChannelGroupFuture, ChannelGroupFutureListener } import org.jboss.netty.channel.socket.nio.{ NioDatagramChannelFactory, NioServerSocketChannelFactory, NioClientSocketChannelFactory } @@ -241,7 +241,7 @@ class NettyTransport(private val settings: NettyTransportSettings, private val s private val serverPipelineFactory: ChannelPipelineFactory = new ChannelPipelineFactory { override def getPipeline: ChannelPipeline = { val pipeline = newPipeline - if (EnableSsl) pipeline.addFirst("SslHandler", sslHandler(false)) + if (EnableSsl) pipeline.addFirst("SslHandler", sslHandler(isClient = false)) val handler = if (isDatagram) new UdpServerHandler(NettyTransport.this, associationListenerPromise.future) else new TcpServerHandler(NettyTransport.this, associationListenerPromise.future) pipeline.addLast("ServerHandler", handler) @@ -252,7 +252,7 @@ class NettyTransport(private val settings: NettyTransportSettings, private val s private def clientPipelineFactory(statusPromise: Promise[AssociationHandle]): ChannelPipelineFactory = new ChannelPipelineFactory { override def getPipeline: ChannelPipeline = { val pipeline = newPipeline - if (EnableSsl) pipeline.addFirst("SslHandler", sslHandler(true)) + if (EnableSsl) pipeline.addFirst("SslHandler", sslHandler(isClient = true)) val handler = if (isDatagram) new UdpClientHandler(NettyTransport.this, statusPromise) else new TcpClientHandler(NettyTransport.this, statusPromise) pipeline.addLast("clienthandler", handler) diff --git a/akka-remote/src/main/scala/akka/remote/transport/netty/UdpSupport.scala b/akka-remote/src/main/scala/akka/remote/transport/netty/UdpSupport.scala index cb4251bf92..c52e8d9bc9 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/netty/UdpSupport.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/netty/UdpSupport.scala @@ -35,7 +35,7 @@ private[remote] trait UdpHandlers extends CommonHandlers { } else { val listener = transport.udpConnectionTable.get(inetSocketAddress) val bytes: Array[Byte] = e.getMessage.asInstanceOf[ChannelBuffer].array() - if (bytes.length > 0)listener notify InboundPayload(ByteString(bytes)) + if (bytes.length > 0) listener notify InboundPayload(ByteString(bytes)) } case _ ⇒ }