diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamFrame.java index 1d5c1d01e24..682615967c4 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamFrame.java @@ -52,7 +52,7 @@ public boolean equals(Object o) { public int hashCode() { Http2FrameStream stream = this.stream; if (stream == null) { - return super.hashCode(); + return 31; } return stream.hashCode(); } diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java index f102bd1da30..e66acfc19b5 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java @@ -63,7 +63,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - int hash = super.hashCode(); + int hash = (int) (content ^ (content >>> 32)); hash = hash * 31 + (ack ? 1 : 0); return hash; } diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2FrameCodec.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2FrameCodec.java index 017a3c5f070..0002799eace 100644 --- a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2FrameCodec.java +++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2FrameCodec.java @@ -765,5 +765,28 @@ public State state() { public String toString() { return String.valueOf(id()); } + + @Override + public int hashCode() { + Http2Stream stream = this.stream; + if (stream == null) { + return id; + } + return stream.hashCode(); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DefaultHttp2FrameStream that = (DefaultHttp2FrameStream) o; + Http2Stream stream = this.stream; + Http2Stream thatStream = that.stream; + return id == that.id && stream != null && stream.equals(thatStream); + } } }