Go to file
Norman Maurer 640ef615be Allow to configure SslHandler to wait for close_notify response before closing the Channel and fix racy flush close_notify timeout scheduling.
Motivation:

SslHandler closed the channel as soon as it was able to write out the close_notify message. This may not be what the user want as it may make sense to only close it after the actual response to the close_notify was received in order to guarantee a clean-shutdown of the connection in all cases.

Beside this closeNotifyFlushTimeoutMillis is volatile so may change between two reads. We need to cache it in a local variable to ensure it not change int between. Beside this we also need to check if the flush promise was complete the schedule timeout as this may happened but we were not able to cancel the timeout yet. Otherwise we will produce an missleading log message.

Modifications:

- Add new setter / getter to SslHandler which allows to specify the behavior (old behavior is preserved as default)
- Added unit test.
- Cache volatile closeNotifyTimeoutMillis.
- Correctly check if flush promise was complete before we try to forcibly close the Channel and log a warning.
- Add missing javadocs.

Result:

More clean shutdown of connection possible when using SSL and fix racy way of schedule close_notify flush timeouts and javadocs.
2017-01-24 10:51:16 +01:00
.github Use GitHub Issue/PR Template Feature 2016-12-07 11:40:26 -08:00
all [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
buffer [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
codec Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
codec-dns Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
codec-haproxy [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
codec-http Typo fix in post encoder and replaced static hashmap with array. 2017-01-19 10:44:27 -08:00
codec-http2 Update hpack Decoder CTOR to allow for overflow in maxHeaderList size, as we do when we apply our ack'ed settings 2017-01-21 10:20:49 -08:00
codec-memcache [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
codec-mqtt [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
codec-redis [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
codec-smtp [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
codec-socks Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
codec-stomp [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
codec-xml [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
common Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
example Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
handler Allow to configure SslHandler to wait for close_notify response before closing the Channel and fix racy flush close_notify timeout scheduling. 2017-01-24 10:51:16 +01:00
handler-proxy Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
license added support for Protobuf codec nano runtime 2016-01-19 21:39:17 +01:00
microbench Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
resolver Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
resolver-dns Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
tarball [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
testsuite Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
testsuite-osgi [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
transport Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
transport-native-epoll [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2017-01-12 11:36:51 +01:00
transport-udt Wrap operations requiring SocketPermission with doPrivileged blocks 2017-01-19 21:12:52 +01:00
.fbprefs Updated Find Bugs configuration 2009-03-04 10:33:09 +00:00
.gitignore Use shaded dependency on JCTools instead of copy and paste 2016-06-10 13:19:45 +02: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 Update netty-tcnative 2017-01-20 20:18:03 +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 Add an example client for codec-redis 2016-04-23 11:18:12 -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.