Commit 45f93da
committed
Fix SSE event parsing and error signalling in HttpClient transports
The SSE parser now follows the SSE spec: an event's type resets after
each event and defaults to "message", and an empty id clears the last
event id. Before, the type carried over from the previous event, so a
message following an "endpoint" event was taken for another endpoint.
Behaviour changes compared to main:
- Errors caused by the server (non-2xx responses, unknown content
types, malformed messages) are McpTransportException instead of
plain RuntimeException. Error messages no longer include the
response body.
- A 400 on the streamable GET stream no longer invalidates the session.
- A non-2xx SSE connect with an empty body now fails instead of
hanging, and sendMessage() completes when the server closes an SSE
response without sending any events.
- Errors that happen after connect() or sendMessage() has completed
now reach the exception handler and stop showing up as Reactor
onErrorDropped logs.
Signed-off-by: Dariusz Jędrzejczyk <dariusz.jedrzejczyk@broadcom.com>1 parent 6a01d9b commit 45f93da
4 files changed
Lines changed: 120 additions & 58 deletions
File tree
- mcp-core/src
- main/java/io/modelcontextprotocol/client/transport
- test/java/io/modelcontextprotocol/client/transport
Lines changed: 22 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| |||
388 | 389 | | |
389 | 390 | | |
390 | 391 | | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
391 | 400 | | |
392 | 401 | | |
393 | 402 | | |
| |||
407 | 416 | | |
408 | 417 | | |
409 | 418 | | |
410 | | - | |
| 419 | + | |
411 | 420 | | |
412 | 421 | | |
413 | 422 | | |
| |||
418 | 427 | | |
419 | 428 | | |
420 | 429 | | |
421 | | - | |
422 | 430 | | |
423 | 431 | | |
424 | 432 | | |
425 | 433 | | |
426 | | - | |
| 434 | + | |
427 | 435 | | |
428 | 436 | | |
429 | | - | |
430 | | - | |
431 | | - | |
| 437 | + | |
432 | 438 | | |
433 | 439 | | |
434 | 440 | | |
435 | 441 | | |
436 | 442 | | |
437 | | - | |
| 443 | + | |
438 | 444 | | |
439 | 445 | | |
440 | 446 | | |
441 | | - | |
| 447 | + | |
442 | 448 | | |
443 | 449 | | |
444 | 450 | | |
445 | 451 | | |
446 | | - | |
| 452 | + | |
| 453 | + | |
447 | 454 | | |
448 | 455 | | |
449 | 456 | | |
450 | | - | |
| 457 | + | |
| 458 | + | |
451 | 459 | | |
452 | | - | |
453 | 460 | | |
454 | 461 | | |
455 | 462 | | |
456 | 463 | | |
457 | 464 | | |
458 | | - | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
459 | 468 | | |
460 | 469 | | |
461 | 470 | | |
| |||
540 | 549 | | |
541 | 550 | | |
542 | 551 | | |
543 | | - | |
| 552 | + | |
544 | 553 | | |
545 | 554 | | |
546 | 555 | | |
| |||
Lines changed: 27 additions & 21 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
403 | 403 | | |
404 | 404 | | |
405 | 405 | | |
406 | | - | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
415 | 411 | | |
416 | 412 | | |
417 | 413 | | |
| |||
521 | 517 | | |
522 | 518 | | |
523 | 519 | | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
524 | 529 | | |
525 | 530 | | |
526 | 531 | | |
| |||
579 | 584 | | |
580 | 585 | | |
581 | 586 | | |
582 | | - | |
| 587 | + | |
583 | 588 | | |
584 | 589 | | |
585 | 590 | | |
586 | | - | |
587 | | - | |
588 | | - | |
589 | | - | |
590 | | - | |
591 | | - | |
| 591 | + | |
592 | 592 | | |
593 | 593 | | |
594 | 594 | | |
595 | 595 | | |
596 | 596 | | |
597 | | - | |
| 597 | + | |
598 | 598 | | |
599 | 599 | | |
600 | 600 | | |
| |||
613 | 613 | | |
614 | 614 | | |
615 | 615 | | |
616 | | - | |
| 616 | + | |
617 | 617 | | |
618 | 618 | | |
619 | 619 | | |
| |||
640 | 640 | | |
641 | 641 | | |
642 | 642 | | |
643 | | - | |
| 643 | + | |
644 | 644 | | |
645 | 645 | | |
646 | 646 | | |
| |||
660 | 660 | | |
661 | 661 | | |
662 | 662 | | |
663 | | - | |
664 | | - | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
665 | 667 | | |
666 | 668 | | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
667 | 673 | | |
668 | 674 | | |
669 | 675 | | |
| |||
Lines changed: 34 additions & 20 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
50 | 55 | | |
51 | 56 | | |
52 | 57 | | |
| |||
368 | 373 | | |
369 | 374 | | |
370 | 375 | | |
371 | | - | |
372 | | - | |
373 | | - | |
374 | | - | |
375 | | - | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
376 | 387 | | |
377 | 388 | | |
378 | 389 | | |
| |||
399 | 410 | | |
400 | 411 | | |
401 | 412 | | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
| 413 | + | |
408 | 414 | | |
409 | 415 | | |
410 | 416 | | |
| |||
422 | 428 | | |
423 | 429 | | |
424 | 430 | | |
425 | | - | |
426 | | - | |
427 | | - | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
428 | 436 | | |
429 | 437 | | |
430 | 438 | | |
431 | | - | |
432 | | - | |
433 | | - | |
434 | | - | |
| 439 | + | |
| 440 | + | |
435 | 441 | | |
436 | 442 | | |
437 | 443 | | |
| |||
444 | 450 | | |
445 | 451 | | |
446 | 452 | | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
447 | 459 | | |
448 | | - | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
449 | 463 | | |
450 | 464 | | |
451 | | - | |
| 465 | + | |
452 | 466 | | |
453 | 467 | | |
454 | 468 | | |
| |||
Lines changed: 37 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
53 | | - | |
| 53 | + | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
| 56 | + | |
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
| 60 | + | |
61 | 61 | | |
| 62 | + | |
| 63 | + | |
62 | 64 | | |
63 | 65 | | |
64 | 66 | | |
65 | 67 | | |
66 | 68 | | |
67 | 69 | | |
68 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
69 | 102 | | |
70 | 103 | | |
71 | 104 | | |
| |||
0 commit comments