Go to file
Trustin Lee 5112cec5fa Handle an empty ByteBuf specially in HttpObjectEncoder
Related: #2983

Motivation:

It is a well known idiom to write an empty buffer and add a listener to
its future to close a channel when the last byte has been written out:

  ChannelFuture f = channel.writeAndFlush(Unpooled.EMPTY_BUFFER);
  f.addListener(ChannelFutureListener.CLOSE);

When HttpObjectEncoder is in the pipeline, this still works, but it
silently raises an IllegalStateException, because HttpObjectEncoder does
not allow writing a ByteBuf when it is expecting an HttpMessage.

Modifications:

- Handle an empty ByteBuf specially in HttpObjectEncoder, so that
  writing an empty buffer does not fail even if the pipeline contains an
  HttpObjectEncoder
- Add a test

Result:

An exception is not triggered anymore by HttpObjectEncoder, when a user
attempts to write an empty buffer.
2014-10-22 14:45:02 +09:00
all Fix missing version properties of transport-epoll in all-in-one JAR 2014-10-21 22:31:46 +09:00
buffer Disable caching of PooledByteBuf for different threads. 2014-09-22 13:38:35 +02:00
codec Add support for ExtensionRegistryLite in ProtobufDecoder 2014-09-15 07:06:30 +02:00
codec-http Handle an empty ByteBuf specially in HttpObjectEncoder 2014-10-22 14:45:02 +09:00
codec-socks [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
common Backport 4.1 to 4.0 on HttpPostRequestDecoder 2014-10-21 16:05:08 +09:00
example Adding a benchmark for websockets 2014-10-13 07:13:56 +02:00
handler Disable SSLv3 to avoid POODLE vulnerability 2014-10-21 14:01:04 +09:00
license Remove license of deque as we not use it anymore 2014-08-04 12:21:33 +02:00
microbench [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
tarball [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
testsuite Fix an infinite loop when writing a zero-length FileRegion 2014-10-17 16:06:57 +09:00
transport Make Bootstrap and ServerBootstrap fully overridable 2014-10-17 16:17:48 +09:00
transport-native-epoll Add AbstractUnsafe.annotateConnectException() 2014-10-14 17:50:31 +09:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
transport-udt [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09: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 Remove license of deque as we not use it anymore 2014-08-04 12:21:33 +02:00
pom.xml [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
README.md Add a link to the 'native transports' page 2014-07-21 12:54:43 -07:00
run-example.sh Use a forked exec-maven-plugin instead of maven-antrun-plugin 2014-05-23 20:06:12 +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

The 'master' branch is where the development of the latest major version lives on. The development of all other major versions takes place in each branch whose name is identical to its major version number. For example, the development of 3.x and 4.x resides in the branch '3' and the branch '4' respectively.