Go to file
Vladimir Kostyukov ea4a8e339c Read if needed on NEED_UNWRAP
Motivation:

There are some use cases when a client may only be willing to read from a channel once
its previous write is finished (eg: serial dispatchers in Finagle). In this case, a
connection with SslHandler installed and ctx.channel().config().isAutoRead() == false
will stall in 100% of cases no matter what order of "channel active", "write", "flush"
events was.

The use case is following (how Finagle serial dispatchers work):

1. Client writeAndFlushes and waits on a write-promise to perform read() once it's satisfied.
2. A write-promise will only be satisfied once SslHandler finishes with handshaking and
   sends the unencrypted queued message.
3. The handshaking process itself requires a number of read()s done by a client but the
   SslHandler doesn't request them explicitly assuming that either auto-read is enabled
   or client requested at least one read() already.
4. At this point a client will stall with NEED_UNWRAP status returned from underlying engine.

Modifiations:

Always request a read() on NEED_UNWRAP returned from engine if

a) it's handshaking and
b) auto read is disabled and
c) it wasn't requested already.

Result:

SslHandler is now completely tolerant of whether or not auto-read is enabled and client
is explicitly reading a channel.
2016-03-29 08:48:08 +02:00
all [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
buffer Fix setBytes when source is read-only ByteBuffer and target is pooled buffer 2016-03-22 09:19:39 +01:00
codec [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
codec-haproxy [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
codec-http Backport InternalThreadLocalMap reusable ArrayList 2016-03-23 17:29:00 +01:00
codec-socks [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
common Backport InternalThreadLocalMap reusable ArrayList 2016-03-23 17:29:00 +01:00
example [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
handler Read if needed on NEED_UNWRAP 2016-03-29 08:48:08 +02:00
license Let PoolThreadCache work even if allocation and deallocation Thread are different 2015-05-27 14:35:22 +02:00
microbench Speed up the slow path of FastThreadLocal 2016-03-23 11:44:30 +01:00
tarball [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
testsuite [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
testsuite-osgi [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
transport Add methods to easily release messages from inbound / outbound buffer of EmbeddedChannel 2016-03-24 11:15:29 +01:00
transport-native-epoll EPOLL Socket Shutdown Fix 2016-03-25 12:01:17 -07:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
transport-udt [maven-release-plugin] prepare for next development iteration 2016-03-21 10:34:26 +01:00
.fbprefs Updated Find Bugs configuration 2009-03-04 10:33:09 +00:00
.gitignore Add JVM crash logs to .gitignore 2014-05-18 21:37:12 +09:00
.travis.yml Travis CI branch whitelisting 2013-03-11 09:55:43 +09:00
CONTRIBUTING.md Move the pull request guide to the developer guide 2014-03-12 13:18:14 +09:00
LICENSE.txt Relicensed to Apache License v2 2009-08-28 07:15:49 +00:00
NOTICE.txt Let PoolThreadCache work even if allocation and deallocation Thread are different 2015-05-27 14:35:22 +02:00
pom.xml Upgrade netty-tcnative to 1.1.33.Fork15 2016-03-23 11:46:05 +01:00
README.md Updating Branches to look section to match the current branching structure of the project 2016-03-10 22:09:30 +01:00
run-example.sh Add logLevel property to enable different log levels for the examples. 2014-11-21 10:48:13 +09:00

Netty Project

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

How to build

For the detailed information about building and developing Netty, please visit the developer guide. This page only gives very basic information.

You require the following to build Netty:

Note that this is build-time requirement. JDK 5 (for 3.x) or 6 (for 4.0+) is enough to run your Netty-based application.

Branches to look

Development of all versions takes place in each branch whose name is identical to <majorVersion>.<minorVersion>. For example, the development of 3.9 and 4.0 resides in the branch '3.9' and the branch '4.0' respectively.