@@ -180,6 +180,52 @@ void unknownEventPreservesServerIdentityAndRawData() throws Exception {
180180 }
181181 }
182182
183+ @ Test
184+ void oversizedFrameFailsBeforeBusinessDelivery () throws Exception {
185+ StringBuilder payload = new StringBuilder ("{\" delta\" :\" " );
186+ for (int i = 0 ; i < 128 ; i ++) {
187+ payload .append ('x' );
188+ }
189+ payload .append ("\" }" );
190+
191+ OkHttpClient client = new OkHttpClient .Builder ().addInterceptor (chain -> {
192+ String body = "data: " + payload + "\n \n " ;
193+ return new Response .Builder ()
194+ .request (chain .request ())
195+ .protocol (Protocol .HTTP_1_1 )
196+ .code (200 )
197+ .message ("OK" )
198+ .body (ResponseBody .create (body , MediaType .get ("text/event-stream" )))
199+ .build ();
200+ }).build ();
201+
202+ HermesHttpClientConfig config = new HermesHttpClientConfig ();
203+ config .markUnsafeBaseUrlOverriddenForTest (true );
204+ config .setStreamMaxEventBytes (32 );
205+
206+ ChatRequest request = new ChatRequest ();
207+ request .setMessages (Collections .singletonList (new ChatRequest .Message ("user" , "hello" )));
208+ AtomicInteger consumerCalls = new AtomicInteger ();
209+
210+ try (HermesSseClient sse = new HermesSseClient (config , null , client )) {
211+ CountDownLatch failed = new CountDownLatch (1 );
212+ AtomicReference <Throwable > failure = new AtomicReference <>();
213+ SseSubscription subscription = sse .subscribeChat (request ,
214+ ignored -> consumerCalls .incrementAndGet (),
215+ () -> { },
216+ error -> {
217+ failure .set (error );
218+ failed .countDown ();
219+ });
220+
221+ assertTrue (failed .await (3 , TimeUnit .SECONDS ));
222+ assertEquals (0 , consumerCalls .get ());
223+ assertTrue (failure .get () instanceof SseProtocolException );
224+ assertFalse (subscription .isActive ());
225+ assertEquals (0 , sse .activeSubscriptionCount ());
226+ }
227+ }
228+
183229 @ Test
184230 void sessionDisconnectDoesNotReplayOriginalPost () throws Exception {
185231 try (MockWebServer server = new MockWebServer ()) {
0 commit comments