Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
gst-rtsp-server
gst-rtsp-server
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 79
    • Issues 79
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 11
    • Merge Requests 11
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • GStreamer
  • gst-rtsp-servergst-rtsp-server
  • Issues
  • #102

Closed
Open
Opened Apr 27, 2020 by Christian M@milkylainen

Async vs sync close response in rtsp teardown handler.

I have an issue with hanging RTSP connections which do not close properly. It happens rarely, if ever. And so far failed validation with the Onvif device test tool (OTT, latest version). OTT seems to send a RTSP teardown. VLC etc seems to send RTCP goodbyes (beside the point)? I'm having an issue with an older version of the library, but looking at the code from the newer ones, it does the same thing.

So my question follows this code path:

  1. RTSP client sends teardown.

  2. rtsp-client.c: handle_teardown_request -> send_message -> do_send_messages -> gst_rtsp_watch_send_messages (..., &id). Now if close response is sent sync, id is returned == 0. Comments, code. Everything states id == 0. Async close != 0.

  3. rtspconnection.c calls callback for sent messages in the worker.

  4. in rtsp-client.c callback for watch async messages.

if (priv->close_seq && priv->close_seq == cseq) { GST_INFO ("client %p: send close message", client); close = TRUE; priv->close_seq = 0; } This only cares for != 0 close_seq. Any non sync close response (cseq 0) is left hanging. Ie. The code never cares for sync closes. (Also the debug msg is probably wrong. Sent, not send.)

I fail to understand how this is meant to work. Who and what handle sync close response messages? Am I missing something?

Edited Apr 27, 2020 by Christian M
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: gstreamer/gst-rtsp-server#102