Go to file
Luke Hutchison 4154ea08f9 Make cookie encoding conform better to RFC 6265 in STRICT mode.
Motivation:

- On the client, cookies should be sorted in decreasing order of path
  length. From RFC 6265:

      5.4.2. The user agent SHOULD sort the cookie-list in the following
      order:

        *  Cookies with longer paths are listed before cookies with
           shorter paths.

        *  Among cookies that have equal-length path fields, cookies with
           earlier creation-times are listed before cookies with later
           creation-times.

      NOTE: Not all user agents sort the cookie-list in this order, but
      this order reflects common practice when this document was
      written, and, historically, there have been servers that
      (erroneously) depended on this order.

  Note that the RFC does not define the path length of cookies without a
  path. We sort pathless cookies before cookies with the longest path,
  since pathless cookies inherit the request path (and setting a path
  that is longer than the request path is of limited use, since it cannot
  be read from the context in which it is written).

- On the server, if there are multiple cookies of the same name, only one
  of them should be encoded. RFC 6265 says:

      Servers SHOULD NOT include more than one Set-Cookie header field in
      the same response with the same cookie-name.

  Note that the RFC does not define which cookie should be set in the case
  of multiple cookies with the same name; we arbitrarily pick the last one.

Modifications:

- Changed the visibility of the 'strict' field to 'protected' in
  CookieEncoder.

- Modified ClientCookieEncoder to sort cookies in decreasing order of path
  length when in strict mode.

- Modified ServerCookieEncoder to return only the last cookie of a given
  name when in strict mode.

- Added a fast path for both strict mode in both client and server code
  for cases with only one cookie, in order avoid the overhead of sorting
  and memory allocation.

- Added unit tests for the new cases.

Result:

- Cookie generation on client and server is now more conformant to RFC 6265.
2015-11-26 21:14:50 +01:00
all Fix version 2015-11-24 21:24:22 +01:00
buffer Fix version 2015-11-24 21:24:22 +01:00
codec Fix version 2015-11-24 21:24:22 +01:00
codec-haproxy Fix version 2015-11-24 21:24:22 +01:00
codec-http Make cookie encoding conform better to RFC 6265 in STRICT mode. 2015-11-26 21:14:50 +01:00
codec-socks Fix version 2015-11-24 21:24:22 +01:00
common Fix version 2015-11-24 21:24:22 +01:00
example Fix version 2015-11-24 21:24:22 +01:00
handler Fix version 2015-11-24 21:24:22 +01:00
license Let PoolThreadCache work even if allocation and deallocation Thread are different 2015-05-27 14:35:22 +02:00
microbench Fix version 2015-11-24 21:24:22 +01:00
tarball Fix version 2015-11-24 21:24:22 +01:00
testsuite Fix version 2015-11-24 21:24:22 +01:00
testsuite-osgi Fix version 2015-11-24 21:24:22 +01:00
transport Cleanup ChannelOption.AUTO_CLOSE javadocs 2015-11-24 15:24:47 -08:00
transport-native-epoll Fix version 2015-11-24 21:24:22 +01:00
transport-rxtx Fix version 2015-11-24 21:24:22 +01:00
transport-sctp Fix version 2015-11-24 21:24:22 +01:00
transport-udt Fix version 2015-11-24 21:24:22 +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 Fix version 2015-11-24 21:24:22 +01:00
README.md Fix the 'branches to look' section 2015-10-27 13:58:06 +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

The 'master' branch is where the development of the latest major version lives on. The development of all other 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.