Fix missing sslInfo with Reactor Netty and http/2
Prior to this commit, the `SslInfo` would be missing for WebFlux apps when deployed on Reactor Netty with http/2. This commit ensures that the request adapter checks the current channel and the parent channel for the presence of the `SslHander`. In the case of http/2, the `SslHander` is tied to the parent channel. Fixes gh-25278
This commit is contained in:
parent
d07be59801
commit
9b615ed8c6
|
|
@ -23,6 +23,7 @@ import java.util.concurrent.atomic.AtomicLong;
|
|||
|
||||
import javax.net.ssl.SSLSession;
|
||||
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.handler.codec.http.HttpHeaderNames;
|
||||
import io.netty.handler.codec.http.cookie.Cookie;
|
||||
import io.netty.handler.ssl.SslHandler;
|
||||
|
|
@ -166,7 +167,11 @@ class ReactorServerHttpRequest extends AbstractServerHttpRequest {
|
|||
@Override
|
||||
@Nullable
|
||||
protected SslInfo initSslInfo() {
|
||||
SslHandler sslHandler = ((Connection) this.request).channel().pipeline().get(SslHandler.class);
|
||||
Channel channel = ((Connection) this.request).channel();
|
||||
SslHandler sslHandler = channel.pipeline().get(SslHandler.class);
|
||||
if (sslHandler == null && channel.parent() != null) { // HTTP/2
|
||||
sslHandler = channel.parent().pipeline().get(SslHandler.class);
|
||||
}
|
||||
if (sslHandler != null) {
|
||||
SSLSession session = sslHandler.engine().getSession();
|
||||
return new DefaultSslInfo(session);
|
||||
|
|
|
|||
Loading…
Reference in New Issue