Skip to content

Ingress video stream aborts with "Cannot write to closing transport" while same MP4 plays via direct add-on port #7195

Description

@EasyBizz

Describe the issue you are experiencing

Video clips served by an add-on through Home Assistant Ingress can fail during playback, while the exact same clips play correctly when the same add-on is accessed directly on its exposed HTTP port.

I am using the Neolink.NET add-on (tested with both v1.0.7 and v1.0.8). Event clips are stored under /media/neolink on NAS-backed storage.

Some clips fail in the Neolink UI when Neolink is opened through Home Assistant Ingress. Neolink displays:

Playback failed — the server could not fetch this video. The server log has the reason.

The important isolation tests are:

  • The exact failing clip.mp4 plays normally through Home Assistant's Media browser.
  • The exact same Neolink instance, recordings and clips all play correctly when Neolink is accessed directly through its exposed port :8655, bypassing Ingress.
  • Only playback through Home Assistant Ingress fails.
  • The Supervisor log records an ingress stream error at the exact time playback fails.

This makes the recording itself, NAS storage, browser codec support and the add-on's own HTTP video serving unlikely causes.

This issue was reproduced with Neolink.NET 1.0.7 and remains reproducible with 1.0.8.

Expected behavior

A video response proxied through Home Assistant Ingress should play the same way as the identical response accessed directly from the add-on's HTTP port.

Actual behavior

Some event-video requests abort while passing through Ingress.

The exact same event plays successfully:

  1. From Home Assistant Media directly from /media/neolink.
  2. Through the Neolink web UI when accessed directly on port 8655.

It fails only when Neolink is opened through Home Assistant Ingress.

Steps to reproduce the issue

  1. Run an add-on that serves recorded MP4 video through HTTP and supports Home Assistant Ingress. In this case Neolink.NET v1.0.8.
  2. Store event clips under /media/neolink on NAS-backed media storage.
  3. Open the add-on through its normal Home Assistant Ingress/sidebar interface.
  4. Attempt to play an affected event clip.
  5. Playback fails.
  6. Check the Supervisor log. An error from supervisor.api.ingress occurs for the corresponding /clip request.
  7. Open the exact same MP4 through Home Assistant Media. It plays correctly.
  8. Access the same add-on directly on its exposed port :8655, bypassing Ingress.
  9. Play the same event. It plays correctly.

Anything in the Supervisor logs that might be useful for us?

The errors below occurred during failed playback attempts:

2026-09-04 14:05:50.683 ERROR (MainThread) [supervisor.api.ingress] Stream error with http://172.30.33.3:8655/api/events/reolink_indoor_001~2026-09-04~135500-0f41/clip: Cannot write to closing transport

2026-09-04 14:43:06.173 ERROR (MainThread) [supervisor.api.ingress] Stream error with http://172.30.33.3:8655/api/events/reolink_indoor_001~2026-09-04~144229-240b/clip: Connection lost

2026-09-04 15:56:27.286 ERROR (MainThread) [supervisor.api.ingress] Stream error with http://172.30.33.3:8655/api/events/reolink_indoor_001~2026-09-04~000447-51d5/clip: Cannot write to closing transport

Additional information

This appears related to, but more severe than:

The particularly useful A/B test here is:

Same Neolink instance
Same clip
Same NAS storage

Home Assistant Media      -> plays
Neolink direct :8655      -> plays
Neolink through Ingress   -> fails

Supervisor at failure:
supervisor.api.ingress -> Cannot write to closing transport / Connection lost

Not every clip necessarily triggers the failure, which may indicate that response size, timing, read characteristics or HTTP range behavior affects whether the Ingress stream is aborted.

System information

Home Assistant OS.

I can provide the full System Information and Supervisor diagnostics if needed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions