Go to file
Vladimir Kostyukov 84bbbf7e09 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:47:54 +02:00
all [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
buffer Fix setBytes when source is read-only ByteBuffer and target is pooled buffer 2016-03-22 09:18:44 +01:00
codec [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
codec-dns [#5014] Correctly encode / decode zero-length names when encoding DnsRecords. 2016-03-24 13:51:04 +01:00
codec-haproxy [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
codec-http Drop broken DefaultCookie name validation, close #4999 2016-03-22 12:32:09 +01:00
codec-http2 e24a5d8 compile error 2016-03-25 12:51:13 -07:00
codec-memcache [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
codec-mqtt Cleanup of codec-mqtt 2016-03-24 11:02:24 +01:00
codec-socks [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
codec-stomp [#5013] Fix typo in DefaultStompFrame.toString() method. 2016-03-23 10:48:13 +01:00
codec-xml [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
common Speed up the slow path of FastThreadLocal 2016-03-23 11:36:16 +01:00
example Map HTTP/2 Streams to Channels 2016-03-25 12:14:44 -07:00
handler Read if needed on NEED_UNWRAP 2016-03-29 08:47:54 +02:00
handler-proxy [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
license added support for Protobuf codec nano runtime 2016-01-19 21:39:17 +01:00
microbench Speed up the slow path of FastThreadLocal 2016-03-23 11:36:16 +01:00
resolver [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
resolver-dns Cleanup code and so eliminate warnings. 2016-03-23 09:38:58 +01:00
tarball [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
testsuite [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
testsuite-osgi [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
transport cf171ff525 Close Regression 2016-03-24 14:52:04 -07:00
transport-native-epoll EPOLL Socket Shutdown Fix 2016-03-25 12:01:03 -07:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +01:00
transport-udt [maven-release-plugin] prepare for next development iteration 2016-03-21 11:51:50 +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:36:54 +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:13:58 +09:00
LICENSE.txt Relicensed to Apache License v2 2009-08-28 07:15:49 +00:00
NOTICE.txt added support for Protobuf codec nano runtime 2016-01-19 21:39:17 +01:00
pom.xml Upgrade netty-tcnative to 1.1.33.Fork15 2016-03-23 11:46:13 +01:00
README.md Updating Branches to look section to match the current branching structure of the project 2016-03-10 22:08:01 +01:00
run-example.sh Map HTTP/2 Streams to Channels 2016-03-25 12:14:44 -07: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.