Go to file
Scott Mitchell 9b9b38bf89 EPOLL SO_LINGER=0 sends FIN+RST
Motivation:
If SO_LINGER is set to 0 the EPOLL transport will send a FIN followed by a RST. This is not consistent with the behavior of the NIO transport. This variation in behavior can cause protocol violations in streaming protocols (e.g. HTTP) where a FIN may be interpreted as a valid end to a data stream, but RST may be treated as the data is corrupted and should be discarded.

https://github.com/netty/netty/issues/4170 Claims the behavior of NIO always issues a shutdown when close occurs. I could not find any evidence of this in Netty's NIO transport nor in the JDK's SocketChannel.close() implementation.

Modifications:
- AbstractEpollChannel should be consistent with the NIO transport and not force a shutdown on every close
- FileDescriptor to keep state in a consistent manner with the JDK and not allow a shutdown after a close
- Unit tests for NIO and EPOLL to ensure consistent behavior

Result:
EPOLL is capable of sending just a RST to terminate a connection.
2016-03-16 22:35:31 -07:00
all Add xml-maven-plugin to check indentation and fix violations 2016-02-29 10:04:53 +01:00
buffer Remove double spacing 2016-03-16 10:28:31 +01:00
codec [#4386] ByteToMessage.decodeLast(...) should not call decode(...) if buffer is empty. 2016-03-01 08:42:04 +01:00
codec-haproxy [maven-release-plugin] prepare for next development iteration 2016-01-29 09:57:10 +01:00
codec-http Bug fix for HttpPostMultipartRequestDecoder part decoding with an invalid charset not reported as an ErrorDataDecoderException 2016-03-10 17:38:04 +01:00
codec-socks Add CharsetUtil.encoder/decoder() methods 2016-03-07 11:04:50 +00:00
common Adding support for tcnative fedora flavour in uber jar 2016-03-15 13:56:21 +01:00
example Handle only those http requests that equal to adjusted websocket path 2016-03-04 09:52:14 +01:00
handler Adding support for tcnative fedora flavour in uber jar 2016-03-15 13:56:21 +01:00
license Let PoolThreadCache work even if allocation and deallocation Thread are different 2015-05-27 14:35:22 +02:00
microbench Add xml-maven-plugin to check indentation and fix violations 2016-02-29 10:04:53 +01:00
tarball [maven-release-plugin] prepare for next development iteration 2016-01-29 09:57:10 +01:00
testsuite EPOLL SO_LINGER=0 sends FIN+RST 2016-03-16 22:35:31 -07:00
testsuite-osgi Add xml-maven-plugin to check indentation and fix violations 2016-02-29 10:04:53 +01:00
transport trivial javadoc fixes 2016-03-16 20:22:43 +01:00
transport-native-epoll EPOLL SO_LINGER=0 sends FIN+RST 2016-03-16 22:35:31 -07:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2016-01-29 09:57:10 +01:00
transport-sctp Add xml-maven-plugin to check indentation and fix violations 2016-02-29 10:04:53 +01:00
transport-udt [maven-release-plugin] prepare for next development iteration 2016-01-29 09:57:10 +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 Add junit timeout listener to print the full thread dump on test timeout 2016-03-04 10:47:26 +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.