@@ -182,6 +182,34 @@ void wireExpansionIsRejectedBeforeItCanBlockAQueue() throws Exception {
182182 }
183183 }
184184
185+ @ Test
186+ void uncheckedCodecRejectionReturnsFalseAtBothSendBoundaries () throws Exception {
187+ HttpEnvelopeWireCodec rejecting = new HttpEnvelopeWireCodec () {
188+ @ Override public JsonEnvelope encode (JsonEnvelope envelope ) {
189+ throw new IllegalStateException ("codec rejected envelope" );
190+ }
191+
192+ @ Override public JsonEnvelope decode (JsonEnvelope envelope ) { return envelope ; }
193+ };
194+ HttpTlsIdentity identity = HttpTlsIdentity .loadOrCreate (directory .resolve ("rejecting-proxy" ), "localhost" );
195+ HttpEnrollmentAuthority authority = new HttpEnrollmentAuthority (identity , directory .resolve ("rejecting-authority" ));
196+ try (HttpProxyTransportServer server = server (identity , authority , directory .resolve ("rejecting-outgoing" ),
197+ rejecting , ignored -> { })) {
198+ assertFalse (server .send ("backend-a" , UUID .randomUUID ().toString (), JsonEnvelope .builder ("test" ).build ()));
199+ server .start ();
200+ HttpConnectionCode code = authority .createConnectionCode ("backend-a" , server .endpoint ("localhost" ),
201+ Duration .ofMinutes (5 ));
202+ Path credentials = directory .resolve ("rejecting-client" );
203+ HttpBackendTransportConnector .enroll (code , "backend-a" , credentials );
204+ try (HttpBackendTransportConnector connector = new HttpBackendTransportConnector (credentials ,
205+ ignored -> { }, rejecting )) {
206+ connector .start ();
207+ assertTrue (connector .awaitFirstResponse (System .nanoTime () + TimeUnit .SECONDS .toNanos (8 )));
208+ assertFalse (connector .send (JsonEnvelope .builder ("test" ).build ()));
209+ }
210+ }
211+ }
212+
185213 private static HttpProxyTransportServer server (HttpTlsIdentity identity , HttpEnrollmentAuthority authority ,
186214 Path outgoing , HttpEnvelopeWireCodec codec ,
187215 java .util .function .Consumer <HttpProxyTransportServer .ReceivedEnvelope > consumer ) throws Exception {
0 commit comments