@@ -276,47 +276,52 @@ public void sendText(final String partialMessage, final boolean isLast) throws I
276
276
if (binaryFrameSender != null ) {
277
277
throw JsrWebSocketMessages .MESSAGES .cannotSendInMiddleOfFragmentedMessage ();
278
278
}
279
- if (textFrameSender == null ) {
280
- textFrameSender = undertowSession .getWebSocketChannel ().send (WebSocketFrameType .TEXT );
281
- }
282
- try {
283
- Channels .writeBlocking (textFrameSender , WebSocketUtils .fromUtf8String (partialMessage ));
284
- if (isLast ) {
285
- textFrameSender .shutdownWrites ();
279
+
280
+ synchronized (this ) {
281
+ if (textFrameSender == null ) {
282
+ textFrameSender = undertowSession .getWebSocketChannel ().send (WebSocketFrameType .TEXT );
286
283
}
287
- Channels .flushBlocking (textFrameSender );
288
- } finally {
289
- if (isLast ) {
290
- textFrameSender = null ;
284
+ try {
285
+ Channels .writeBlocking (textFrameSender , WebSocketUtils .fromUtf8String (partialMessage ));
286
+ if (isLast ) {
287
+ textFrameSender .shutdownWrites ();
288
+ }
289
+ Channels .flushBlocking (textFrameSender );
290
+ } finally {
291
+ if (isLast ) {
292
+ textFrameSender = null ;
293
+ }
291
294
}
292
295
}
293
-
294
296
}
295
297
296
298
@ Override
297
299
public void sendBinary (final ByteBuffer partialByte , final boolean isLast ) throws IOException {
298
-
299
300
if (partialByte == null ) {
300
301
throw JsrWebSocketMessages .MESSAGES .messageInNull ();
301
302
}
302
303
if (textFrameSender != null ) {
303
304
throw JsrWebSocketMessages .MESSAGES .cannotSendInMiddleOfFragmentedMessage ();
304
305
}
305
- if (binaryFrameSender == null ) {
306
- binaryFrameSender = undertowSession .getWebSocketChannel ().send (WebSocketFrameType .BINARY );
307
- }
308
- try {
309
- Channels .writeBlocking (binaryFrameSender , partialByte );
310
- if (isLast ) {
311
- binaryFrameSender .shutdownWrites ();
306
+
307
+ synchronized (this ) {
308
+ if (binaryFrameSender == null ) {
309
+ binaryFrameSender = undertowSession .getWebSocketChannel ().send (WebSocketFrameType .BINARY );
310
+ }
311
+ try {
312
+ Channels .writeBlocking (binaryFrameSender , partialByte );
313
+ if (isLast ) {
314
+ binaryFrameSender .shutdownWrites ();
315
+ }
316
+ Channels .flushBlocking (binaryFrameSender );
312
317
}
313
- Channels . flushBlocking ( binaryFrameSender );
314
- } finally {
315
- if ( isLast ) {
316
- binaryFrameSender = null ;
318
+ finally {
319
+ if ( isLast ) {
320
+ binaryFrameSender = null ;
321
+ }
317
322
}
323
+ partialByte .clear ();
318
324
}
319
- partialByte .clear ();
320
325
}
321
326
322
327
@ Override
0 commit comments