Go to file
Carl Mastrangelo ead9938980 Include Http 1 request in error message
Motivation:

When An HTTP server is listening in plaintext mode, it doesn't have
a chance to negotiate "h2" in the tls handshake.  HTTP 1 clients
that are not expecting an HTTP2 server will accidentally a request
that isn't an upgrade, which the HTTP/2 decoder will not
understand.  The decoder treats the bytes as hex and adds them to
the error message.

These error messages are hard to understand by humans, and result
in extra, manual work to decode.

Modification:

If the first bytes of the request are not the preface, the decoder
will now see if they are an HTTP/1 request first.  If so, the error
message will include the method and path of the original request in
the error message.

In case the path is long, the decoder will check up to the first
1024 bytes to see if it matches.  This could be a DoS vector if
tons of bad requests or other garbage come in.  A future optimization
would be to treat the first few bytes as an AsciiString and not do
any Charset decoding.  ByteBuf.toCharSequence alludes to such an
optimization.

The code has been left simple for the time being.

Result:

Faster identification of errant HTTP requests.
2017-01-30 09:46:38 -08: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-30 15:14:02 +01:00
buffer Include Http 1 request in error message 2017-01-30 09:46:38 -08:00
codec [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-dns [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-haproxy [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-http [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-http2 Include Http 1 request in error message 2017-01-30 09:46:38 -08:00
codec-memcache [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-mqtt [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-redis [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-smtp [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-socks [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-stomp [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
codec-xml [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
common [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
example [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
handler [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
handler-proxy [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
license added support for Protobuf codec nano runtime 2016-01-19 21:39:17 +01:00
microbench [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
resolver [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
resolver-dns [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
tarball [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
testsuite [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
testsuite-osgi [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
transport [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
transport-native-epoll [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +01:00
transport-udt [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +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 [maven-release-plugin] prepare for next development iteration 2017-01-30 15:14:02 +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.