Skip to content

feat: show the transport actually in use (#115, part of #112) - #117

Merged
compot-dev merged 2 commits into
v2from
feat/transport-in-use
Oct 13, 2026
Merged

compot-dev merged 2 commits into
v2from
feat/transport-in-use

Conversation

@compot-dev

Copy link
Copy Markdown
Collaborator

Closes #115. Part of #112 (the "actual transport" half; Auto as the default waits for #113, multi-view over UDP).

Device check on Aceline-1: a slot on Auto (UDP works → UDP), one on TCP, the U cell (UDP push).

@compot-dev

Copy link
Copy Markdown
Collaborator Author

/review

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Silent push streams still appear in use ✓ Resolved
Description
listen() sets inUse when it opens the UDP listener and leaves it set when its idle callback
reports disconnected. If a sender never sends usable video, or stops sending it, /stats.json and
the debug page continue to report UDP push or multicast push indefinitely because the listener
stays open.
Code

android/app/src/main/java/com/openipc/decoder/RtspSession.java[475]

+            inUse = u.multicast() ? "multicast push" : "UDP push";
Evidence
The new assignment occurs before packet reception. The idle path reports disconnection but keeps
listening without clearing inUse; the watchdog excludes listeners, and cleanup clears the value
only when the listener exits.

android/app/src/main/java/com/openipc/decoder/RtspSession.java[465-490]
android/app/src/main/java/com/openipc/decoder/RtspSession.java[494-503]
android/app/src/main/java/com/openipc/decoder/RtspSession.java[251-257]
android/app/src/main/java/com/openipc/decoder/Decoder.java[1284-1290]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Push sessions retain a non-null transport after usable video stops, so transport reporting describes a stream as in use while its status is disconnected.
## Fix Focus Areas
- android/app/src/main/java/com/openipc/decoder/RtspSession.java[472-530]
## Recommended Fix
Set the push transport when usable video first arrives and clear it when the idle callback reports disconnection. Set it again when usable video resumes, retaining the listener-ownership guard during cleanup.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can turn these tips off under Display > Comment parts

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread android/app/src/main/java/com/openipc/decoder/RtspSession.java Outdated
@compot-dev

Copy link
Copy Markdown
Collaborator Author

Qodo: Silent push streams still appear in use — accepted and fixed: for udp:// slots and the U cell the transport becomes UDP push / multicast push only with the first usable packet, and goes back to none when the sender goes quiet (watchdog); a port that only listens shows the slot's mode.

@compot-dev

Copy link
Copy Markdown
Collaborator Author

Device check on Aceline-1 (build 651b129): /stats.json per cell transport / transport_mode = TCP/TCP for the TCP slots, UDP/UDP for slot 3, UDP push / UDP for the U cell (stream from .165); single view on slot 3: status line Connected • UDP • H.265 • 2.9 Mbps, single.transport UDP.

@compot-dev
compot-dev merged commit b2da67f into v2 Oct 13, 2026
4 checks passed
@compot-dev
compot-dev deleted the feat/transport-in-use branch October 13, 2026 11:45
compot-dev added a commit that referenced this pull request Oct 15, 2026
feat: show the transport actually in use (#115, part of #112)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Single view: the connection toast shows the transport actually in use (TCP / UDP / multicast)

1 participant