ead9938980
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. |
||
---|---|---|
.github | ||
all | ||
buffer | ||
codec | ||
codec-dns | ||
codec-haproxy | ||
codec-http | ||
codec-http2 | ||
codec-memcache | ||
codec-mqtt | ||
codec-redis | ||
codec-smtp | ||
codec-socks | ||
codec-stomp | ||
codec-xml | ||
common | ||
example | ||
handler | ||
handler-proxy | ||
license | ||
microbench | ||
resolver | ||
resolver-dns | ||
tarball | ||
testsuite | ||
testsuite-osgi | ||
transport | ||
transport-native-epoll | ||
transport-rxtx | ||
transport-sctp | ||
transport-udt | ||
.fbprefs | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.md | ||
LICENSE.txt | ||
NOTICE.txt | ||
pom.xml | ||
README.md | ||
run-example.sh |
Netty Project
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.
Links
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:
- Latest stable Oracle JDK 7
- Latest stable Apache Maven
- If you are on Linux, you need additional development packages installed on your system, because you'll build the native transport.
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.