Go to file
Scott Mitchell 8dbf5d02e5 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:04 -07:00
all Add xml-maven-plugin to check indentation and fix violations 2016-02-29 09:46:32 +01:00
buffer Add LineEncoder to append a line separator automatically 2016-03-16 20:31:01 +01:00
codec Add LineEncoder to append a line separator automatically 2016-03-16 20:31:01 +01:00
codec-dns [#4937] [#4935] Correctly valid domain name length and convert to ASCII. 2016-03-16 11:55:19 +01:00
codec-haproxy [maven-release-plugin] prepare for next development iteration 2016-02-19 23:00:11 +01:00
codec-http Bug fix for HttpPostMultipartRequestDecoder part decoding with an invalid charset not reported as an ErrorDataDecoderException 2016-03-10 18:33:06 +01:00
codec-http2 HTTP/2 SimpleChannelPromiseAggregator don't fail fast 2016-03-14 11:00:21 -07:00
codec-memcache [maven-release-plugin] prepare for next development iteration 2016-02-19 23:00:11 +01:00
codec-mqtt Validate MQTT CONNECT reserved flag in variable header 2016-03-16 20:23:31 +01:00
codec-socks Add CharsetUtil.encoder/decoder() methods 2016-03-07 10:48:31 +00:00
codec-stomp [maven-release-plugin] prepare for next development iteration 2016-02-19 23:00:11 +01:00
codec-xml [maven-release-plugin] prepare for next development iteration 2016-02-19 23:00:11 +01:00
common Adding support for tcnative fedora flavour in uber jar 2016-03-15 13:56:41 +01:00
example Handle only those http requests that equal to adjusted websocket path 2016-03-04 08:36:14 +01:00
handler Adding support for tcnative fedora flavour in uber jar 2016-03-15 13:56:41 +01:00
handler-proxy [maven-release-plugin] prepare for next development iteration 2016-02-19 23:00:11 +01:00
license added support for Protobuf codec nano runtime 2016-01-19 21:39:17 +01:00
microbench Add xml-maven-plugin to check indentation and fix violations 2016-02-29 09:46:32 +01:00
resolver [maven-release-plugin] prepare for next development iteration 2016-02-19 23:00:11 +01:00
resolver-dns Fix potential infinite loop when resolving CNAME records 2016-03-07 15:12:26 +00:00
tarball [maven-release-plugin] prepare for next development iteration 2016-02-19 23:00:11 +01:00
testsuite EPOLL SO_LINGER=0 sends FIN+RST 2016-03-16 22:35:04 -07:00
testsuite-osgi Add xml-maven-plugin to check indentation and fix violations 2016-02-29 09:46:32 +01:00
transport trivial javadoc fixes 2016-03-16 20:18:29 +01:00
transport-native-epoll EPOLL SO_LINGER=0 sends FIN+RST 2016-03-16 22:35:04 -07:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2016-02-19 23:00:11 +01:00
transport-sctp Add xml-maven-plugin to check indentation and fix violations 2016-02-29 09:46:32 +01:00
transport-udt [maven-release-plugin] prepare for next development iteration 2016-02-19 23:00:11 +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 Add junit timeout listener to print the full thread dump on test timeout 2016-03-04 10:47:11 +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 HTTP/2 Netty tiles example 2015-05-18 14:16:54 -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.