[gstreamer-bugs] [Bug 612915] streaming stopped for tcp interleaved communication:

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Mar 31 00:04:40 PDT 2010


https://bugzilla.gnome.org/show_bug.cgi?id=612915
  GStreamer | gst-rtsp-server | git

sreerenj <bsreerenj> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED

--- Comment #12 from sreerenj <bsreerenj at gmail.com> 2010-03-31 07:04:37 UTC ---


If we opt streaming by Tunnelling RTSP and RTP through HTTP, In order to get
through some proxies, a POST connection per RTSP request must be made instead
of one POST connection per session.The client may at its option close the POST
connection at any given time. The best time for this usually occurs after the
PLAY request. When the client needs to communicate to the server again, it
opens up another POST connection. Servers should be prepared to handle a series
of POST connections.

Found two issues in which one is in gst-rtsp-server and the other is in
gst-plugins-base.

bug in gst-rtsp-server
------------------------------

Inside tunnel_complete() funtion in rtsp-client.c,  there is a line to remove
the tunnel id from hash table. 

    g_hash_table_remove (tunnels, tunnelid);

This is wrong. Because initially the client create a full duplex connection
with tunneling (having no problem there.).And after some time(approximately one
minute) for sending an rtsp request ,client opens up another POST connection.
(The POST request is never replied to by the server. ) . During this POST
connection, this will get the same tunnel id which is previously created by,

    tunnelid = gst_rtsp_connection_get_tunnelid (client->connection);

But it will not found the tunnel session in the hash table, because it is
previously removed ! .I mean server is not handling the continuous POST
connections after one GET connection.

I am attaching a patch here to avoid this.

bug in gst-plugins-base
------------------------------

Similarly , in gst-plugins-base, inside gst_rtsp_connection_do_tunnel()
function, there is  line 

    g_return_val_if_fail (conn->tstate == TUNNEL_STATE_GET, GST_RTSP_EINVAL);

This is wrong. Because tunnel state of connection is either TUNNEL_STATE_GET or
TUNNEL_STATE_COMPLETE. Because after the PLAY request, When the client needs to
communicate to the server again, it opens up another POST connection. In this
case tunnel state of  conn is TUNNEL_STATE_COMPLETE and conn2 is POST.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.




More information about the Gstreamer-bugs mailing list