openclaw - 💡(How to fix) Fix [Bug]: voice-call realtime WebSocket upgrades accept sibling stream paths

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

While PR #79919 fixed sibling path acceptance in realtime WebSocket upgrades, the test coverage doesn't include scenarios where realtime.streamPath changes at runtime or across rolling deployments.

Root Cause

If a deployment rolls out with realtime.streamPath=/voice/stream/realtime and then changes to realtime.streamPath=/voice/stream/realtime-v2, existing stream tokens from the old path may:

  • Continue to route correctly (if tokens encode the expected path)
  • Or fail silently if path matching is strict without backward compatibility

This can cause call interruptions during config updates or blue-green deployments.

Code Example

it("maintains backward compatibility during realtime.streamPath config changes", async () => {
  // Start with streamPath=/voice/stream/realtime
  // Create stream token with old path
  // Change config to streamPath=/voice/stream/realtime-v2
  // Verify: old token still routes OR transitions gracefully
});

### Steps to reproduce

**Title**: [Bug]: Realtime stream path matching needs additional regression coverage for dynamic stream path changes

**Description**:

## Summary

While PR #79919 fixed sibling path acceptance in realtime WebSocket upgrades, the test coverage doesn't include scenarios where `realtime.streamPath` changes at runtime or across rolling deployments.

## Why this matters

If a deployment rolls out with `realtime.streamPath=/voice/stream/realtime` and then changes to `realtime.streamPath=/voice/stream/realtime-v2`, existing stream tokens from the old path may:
- Continue to route correctly (if tokens encode the expected path)
- Or fail silently if path matching is strict without backward compatibility

This can cause call interruptions during config updates or blue-green deployments.

## Expected behavior

- Existing stream tokens from the old path should remain valid for grace period (configurable)
- New stream tokens should use the updated path
- Or: Document that path changes require session reconnection

## Current behavior

No regression tests cover dynamic `realtime.streamPath` changes during active calls.

## Test scenario needed

---

it("maintains backward compatibility during realtime.streamPath config changes", async () => {
  // Start with streamPath=/voice/stream/realtime
  // Create stream token with old path
  // Change config to streamPath=/voice/stream/realtime-v2
  // Verify: old token still routes OR transitions gracefully
});

### Actual behavior

**Title**: [Bug]: Realtime stream path matching needs additional regression coverage for dynamic stream path changes

**Description**:

## Summary

While PR #79919 fixed sibling path acceptance in realtime WebSocket upgrades, the test coverage doesn't include scenarios where `realtime.streamPath` changes at runtime or across rolling deployments.

## Why this matters

If a deployment rolls out with `realtime.streamPath=/voice/stream/realtime` and then changes to `realtime.streamPath=/voice/stream/realtime-v2`, existing stream tokens from the old path may:
- Continue to route correctly (if tokens encode the expected path)
- Or fail silently if path matching is strict without backward compatibility

This can cause call interruptions during config updates or blue-green deployments.

## Expected behavior

- Existing stream tokens from the old path should remain valid for grace period (configurable)
- New stream tokens should use the updated path
- Or: Document that path changes require session reconnection

## Current behavior

No regression tests cover dynamic `realtime.streamPath` changes during active calls.

## Test scenario needed

---
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Realtime stream path matching needs additional regression coverage for dynamic stream path changes

Description:

Summary

While PR #79919 fixed sibling path acceptance in realtime WebSocket upgrades, the test coverage doesn't include scenarios where realtime.streamPath changes at runtime or across rolling deployments.

Why this matters

If a deployment rolls out with realtime.streamPath=/voice/stream/realtime and then changes to realtime.streamPath=/voice/stream/realtime-v2, existing stream tokens from the old path may:

  • Continue to route correctly (if tokens encode the expected path)
  • Or fail silently if path matching is strict without backward compatibility

This can cause call interruptions during config updates or blue-green deployments.

Expected behavior

  • Existing stream tokens from the old path should remain valid for grace period (configurable)
  • New stream tokens should use the updated path
  • Or: Document that path changes require session reconnection

Current behavior

No regression tests cover dynamic realtime.streamPath changes during active calls.

Test scenario needed

it("maintains backward compatibility during realtime.streamPath config changes", async () => {
  // Start with streamPath=/voice/stream/realtime
  // Create stream token with old path
  // Change config to streamPath=/voice/stream/realtime-v2
  // Verify: old token still routes OR transitions gracefully
});

### Steps to reproduce

**Title**: [Bug]: Realtime stream path matching needs additional regression coverage for dynamic stream path changes

**Description**:

## Summary

While PR #79919 fixed sibling path acceptance in realtime WebSocket upgrades, the test coverage doesn't include scenarios where `realtime.streamPath` changes at runtime or across rolling deployments.

## Why this matters

If a deployment rolls out with `realtime.streamPath=/voice/stream/realtime` and then changes to `realtime.streamPath=/voice/stream/realtime-v2`, existing stream tokens from the old path may:
- Continue to route correctly (if tokens encode the expected path)
- Or fail silently if path matching is strict without backward compatibility

This can cause call interruptions during config updates or blue-green deployments.

## Expected behavior

- Existing stream tokens from the old path should remain valid for grace period (configurable)
- New stream tokens should use the updated path
- Or: Document that path changes require session reconnection

## Current behavior

No regression tests cover dynamic `realtime.streamPath` changes during active calls.

## Test scenario needed

```typescript
it("maintains backward compatibility during realtime.streamPath config changes", async () => {
  // Start with streamPath=/voice/stream/realtime
  // Create stream token with old path
  // Change config to streamPath=/voice/stream/realtime-v2
  // Verify: old token still routes OR transitions gracefully
});

### Expected behavior

**Title**: [Bug]: Realtime stream path matching needs additional regression coverage for dynamic stream path changes

**Description**:

## Summary

While PR #79919 fixed sibling path acceptance in realtime WebSocket upgrades, the test coverage doesn't include scenarios where `realtime.streamPath` changes at runtime or across rolling deployments.

## Why this matters

If a deployment rolls out with `realtime.streamPath=/voice/stream/realtime` and then changes to `realtime.streamPath=/voice/stream/realtime-v2`, existing stream tokens from the old path may:
- Continue to route correctly (if tokens encode the expected path)
- Or fail silently if path matching is strict without backward compatibility

This can cause call interruptions during config updates or blue-green deployments.

## Expected behavior

- Existing stream tokens from the old path should remain valid for grace period (configurable)
- New stream tokens should use the updated path
- Or: Document that path changes require session reconnection

## Current behavior

No regression tests cover dynamic `realtime.streamPath` changes during active calls.

## Test scenario needed

```typescript
it("maintains backward compatibility during realtime.streamPath config changes", async () => {
  // Start with streamPath=/voice/stream/realtime
  // Create stream token with old path
  // Change config to streamPath=/voice/stream/realtime-v2
  // Verify: old token still routes OR transitions gracefully
});

### Actual behavior

**Title**: [Bug]: Realtime stream path matching needs additional regression coverage for dynamic stream path changes

**Description**:

## Summary

While PR #79919 fixed sibling path acceptance in realtime WebSocket upgrades, the test coverage doesn't include scenarios where `realtime.streamPath` changes at runtime or across rolling deployments.

## Why this matters

If a deployment rolls out with `realtime.streamPath=/voice/stream/realtime` and then changes to `realtime.streamPath=/voice/stream/realtime-v2`, existing stream tokens from the old path may:
- Continue to route correctly (if tokens encode the expected path)
- Or fail silently if path matching is strict without backward compatibility

This can cause call interruptions during config updates or blue-green deployments.

## Expected behavior

- Existing stream tokens from the old path should remain valid for grace period (configurable)
- New stream tokens should use the updated path
- Or: Document that path changes require session reconnection

## Current behavior

No regression tests cover dynamic `realtime.streamPath` changes during active calls.

## Test scenario needed

```typescript
it("maintains backward compatibility during realtime.streamPath config changes", async () => {
  // Start with streamPath=/voice/stream/realtime
  // Create stream token with old path
  // Change config to streamPath=/voice/stream/realtime-v2
  // Verify: old token still routes OR transitions gracefully
});

### OpenClaw version

2026.2

### Operating system

win 11

### Install method

_No response_

### Model

openAI

### Provider / routing chain

minimax

### Additional provider/model setup details

_No response_

### Logs, screenshots, and evidence

```shell

Impact and severity

No response

Additional information

No response

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

  • Existing stream tokens from the old path should remain valid for grace period (configurable)
  • New stream tokens should use the updated path
  • Or: Document that path changes require session reconnection

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: voice-call realtime WebSocket upgrades accept sibling stream paths