Avoids throwing java.util.concurrent.ExecutionException when handling other framing errors in DeFramer.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Add the ipV6 flag to the datagram socket options, this creates a socket that handles both
ipv4 and ipv6 socket connections.
* Set the IPv6 flag state based on the presence or absence of an IPv6 address.
i.e. if your machine runs IPv6 it will accept IPv6 bootnodes and peers. However link-local IPv6 is not fully supported (see issue #288).
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Allow IPv6 bootnodes to be specified by translating to address only form when
parsing a URI.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Throw FramingException when snappy decompression fails.
* Handle FramingException in DeFramer as a routine event representing a malformed message.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Remove release/retain requirement from MessageData.
MessageData now wraps a BytesValue rather than a Netty ByteBuf so we no longer need to call release/retain and pass that through to the underlying ByteBuf.
Entirely removed support for a BytesValue wrapping a Netty ByteBuf as it does not provide any way to release the underlying ByteBuf.
* Add BytesValue.copyTo(byte[]) to avoid the need to call getArrayUnsafe() to copy the data.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Update value returned by web3_clientVersion to be ethstats friendly
* Version part starts with a v
* SNAPSHOT builds report 32 bits of the git hash
* OS and architecture are sniffed out and reported
* JVM version and branding are sniffed out and reported
Example values (not all real):
pantheon/v0.9.0-dev-f800a0b1/osx-x86_64/oracle-java-1.8
pantheon/v0.9.0-dev-27960b57/osx-x86_64/zulu-java-11
pantheon/v0.9.0/linux-arm64/openjdk-java-12
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Replace the JNI based snappy library with an all Java version.
This will help work on #251 because the error messages are more reasonable
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Ban Peers via CLI
As part of working on #251 I needed to be able to ban certain nodes from my
connection pool and let others connect. This is a general solution to add
a --banned-nodeids CLI flag where the nodeIds of banned nodes are listed.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
We can write directly to the target instead and avoid the caller needing to release the buffer.
Fixes memory leak when clients are repeatedly connecting and disconnecting.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Take peer status messages down from info to debug
* Take P2P messages down from debug to trace
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* NC-1026 Make Framer#frame Throw on Excessively Large messages
Note that this is
* NC-1026 Make Framer#frame Throw on Excessively Large messages
It is impossible to receive an uncompressed message < 16MiB because the length field in the header is 3 bytes. So this test will never pass.
* NC-1026 Make Framer#frame Throw on Excessively Large messages
review changes
* NC-1026 Make Framer#frame Throw on Excessively Large messages
Missed change in exception type. Added Null uncompressedLength test.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>