After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 596159 - rtspsrc hangs when connecting over http tunneled rtsp
rtspsrc hangs when connecting over http tunneled rtsp
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: 0.10.26
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-09-24 07:49 UTC by Patrick Radizi
Modified: 2009-10-13 09:23 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch that fixes problem by checking for error on 'other' socket after poll return. (1.69 KB, patch)
2009-09-24 07:51 UTC, Patrick Radizi
committed Details | Review

Description Patrick Radizi 2009-09-24 07:49:23 UTC
The rtspsrc element sometimes hangs (forever) during connection setup when it uses rtsp tunneled over http. 

It hangs in gstrtspconnection.c:gst_rtsp_connection_receive(). The problem is that the gst_poll_wait is only supposed to return when it's ok to read from the read socket. However, if some error has occurred on the write socket the poll returns as well. Since there's no check on which descriptor caused the poll to return a read from the read socket is done (resulting in nothing) and then a new poll again. This repeats over and over again.
Comment 1 Patrick Radizi 2009-09-24 07:51:26 UTC
Created attachment 143874 [details] [review]
Patch that fixes problem by checking for error on 'other' socket after poll return.
Comment 2 Wim Taymans 2009-10-12 13:51:36 UTC
commit 48a44f470b8aede9010cc09a074dab165c5f576a
Author: Patrick Radizi <patrick.radizi at axis.com>
Date:   Mon Oct 12 15:48:46 2009 +0200

    rtsp: handle socket errors
    
    gstrtspconnection.c:gst_rtsp_connection_receive() can hang when an error occured
    on a socekt. Fix this problem by checking for error on 'other' socket after poll
    return.
    
    Fixes #596159