Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 6eb644e

Browse files
committedMar 27, 2024··
Address code review comments
Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
1 parent baa8493 commit 6eb644e

File tree

1 file changed

+30
-16
lines changed

1 file changed

+30
-16
lines changed
 

‎modules/transport-netty4/src/main/java/org/opensearch/http/netty4/ssl/SecureNetty4HttpServerTransport.java

+30-16
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@
5050

5151
import javax.net.ssl.SSLEngine;
5252

53+
import java.util.List;
5354
import java.util.Optional;
55+
import java.util.stream.Collectors;
5456

5557
import io.netty.channel.Channel;
5658
import io.netty.channel.ChannelHandler;
@@ -102,28 +104,40 @@ public SecureNetty4HttpServerTransport(
102104
this.exceptionHandler = secureHttpTransportSettingsProvider.buildHttpServerExceptionHandler(settings, this)
103105
.orElse(TransportExceptionHandler.NOOP);
104106

105-
this.headerVerifier = secureHttpTransportSettingsProvider.getHttpTransportAdapterProviders(settings)
107+
final List<ChannelInboundHandlerAdapter> headerVerifiers = secureHttpTransportSettingsProvider.getHttpTransportAdapterProviders(
108+
settings
109+
)
106110
.stream()
107111
.filter(p -> HEADER_VERIFIER.equalsIgnoreCase(p.name()))
108-
.findFirst()
109-
.flatMap(p -> p.create(settings, this, ChannelInboundHandlerAdapter.class))
110-
.orElse(null);
112+
.map(p -> p.create(settings, this, ChannelInboundHandlerAdapter.class))
113+
.filter(Optional::isPresent)
114+
.map(Optional::get)
115+
.collect(Collectors.toList());
111116

112-
this.decompressorProvider = secureHttpTransportSettingsProvider.getHttpTransportAdapterProviders(settings)
117+
if (headerVerifiers.size() > 1) {
118+
throw new IllegalArgumentException("Cannot have more than one header verifier configured, supplied " + headerVerifiers.size());
119+
}
120+
121+
final Optional<TransportAdapterProvider<HttpServerTransport>> decompressorProviderOpt = secureHttpTransportSettingsProvider
122+
.getHttpTransportAdapterProviders(settings)
113123
.stream()
114124
.filter(p -> REQUEST_DECOMPRESSOR.equalsIgnoreCase(p.name()))
115-
.findFirst()
116-
.orElseGet(() -> new TransportAdapterProvider<HttpServerTransport>() {
117-
@Override
118-
public String name() {
119-
return REQUEST_DECOMPRESSOR;
120-
}
125+
.findFirst();
126+
// There could be multiple request decompressor providers configured, using the first one
127+
decompressorProviderOpt.ifPresent(p -> logger.debug("Using request decompressor provider: {}", p));
121128

122-
@Override
123-
public <C> Optional<C> create(Settings settings, HttpServerTransport transport, Class<C> adapterClass) {
124-
return Optional.empty();
125-
}
126-
});
129+
this.headerVerifier = headerVerifiers.isEmpty() ? null : headerVerifiers.get(0);
130+
this.decompressorProvider = decompressorProviderOpt.orElseGet(() -> new TransportAdapterProvider<HttpServerTransport>() {
131+
@Override
132+
public String name() {
133+
return REQUEST_DECOMPRESSOR;
134+
}
135+
136+
@Override
137+
public <C> Optional<C> create(Settings settings, HttpServerTransport transport, Class<C> adapterClass) {
138+
return Optional.empty();
139+
}
140+
});
127141
}
128142

129143
@Override

0 commit comments

Comments
 (0)
Please sign in to comment.