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 704053 - souphttpsrc: Don't treat errors on HEAD request as fatal
souphttpsrc: Don't treat errors on HEAD request as fatal
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal major
: 1.1.3
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-07-11 20:40 UTC by GstBlub
Modified: 2013-07-25 17:21 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
souphttpsrc: ignore errors from HEAD request (4.67 KB, patch)
2013-07-11 23:44 UTC, Thiago Sousa Santos
committed Details | Review

Description GstBlub 2013-07-11 20:40:35 UTC
Since 1.1.2 I can no longer play shoutcast streams.  This worked fine on 1.1.1.

gst-launch-1.0 -v playbin uri=http://50.117.121.163:80

Now fails in either this way:

ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source: Connection terminated unexpectedly
Additional debug info:
gstsouphttpsrc.c(943): gst_soup_http_src_finished_cb (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source:
libsoup status code 7
ERROR: pipeline doesn't want to preroll.

or this way:

ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source: Message Corrupt
Additional debug info:
gstsouphttpsrc.c(943): gst_soup_http_src_finished_cb (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source:
libsoup status code 8
ERROR: pipeline doesn't want to preroll.
Comment 1 GstBlub 2013-07-11 21:01:58 UTC
Here's some more debugging output:

Setting pipeline to PAUSED ...
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: ring-buffer-max-size = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-size = -1
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-duration = -1
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: use-buffering = false
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: download = false
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: uri = http://50.117.121.163:80
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: connection-speed = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: source = "\(GstSoupHTTPSrc\)\ source"
0:00:00.107875996 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1298:gst_soup_http_src_start:<source> start("http://50.117.121.163:80")
0:00:00.108020578 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:669:gst_soup_http_src_session_open:<source> Creating session
0:00:00.110126390 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1368:gst_soup_http_src_get_size:<source> get_size() = FALSE
0:00:00.110211583 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:649:gst_soup_http_src_session_open:<source> Session is already open
0:00:00.110928301 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1206:gst_soup_http_src_build_message:<source> request headers:
0:00:00.110981313 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:727:gst_soup_http_src_headers_foreach:<source>  Connection: close
0:00:00.111027454 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:727:gst_soup_http_src_headers_foreach:<source>  icy-metadata: 1
0:00:00.111070356 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1256:gst_soup_http_src_do_request:<source> Queueing connection request
0:00:00.223118839 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:926:gst_soup_http_src_finished_cb:<source> finished
0:00:00.223192774 31090  0x814a0a0 WARN             souphttpsrc gstsouphttpsrc.c:943:gst_soup_http_src_finished_cb:<source> error: Message Corrupt
0:00:00.223241251 31090  0x814a0a0 WARN             souphttpsrc gstsouphttpsrc.c:943:gst_soup_http_src_finished_cb:<source> error: libsoup status code 8
0:00:00.223664610 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1093:gst_soup_http_src_response_cb:<source> got response 8: Message Corrupt
0:00:00.223740494 31090  0x814a0a0 WARN             souphttpsrc gstsouphttpsrc.c:1141:gst_soup_http_src_parse_status:<source> error: Server sent bad data.
0:00:00.223781637 31090  0x814a0a0 WARN             souphttpsrc gstsouphttpsrc.c:1141:gst_soup_http_src_parse_status:<source> error: Message Corrupt (8), URL: http://50.117.121.163:80
0:00:00.223973156 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1413:gst_soup_http_src_do_seek:<source> do_seek(0--1)
0:00:00.224019307 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1418:gst_soup_http_src_do_seek:<source> Seek to current read/end position and no seek pending
Pipeline is PREROLLING ...
0:00:00.225085925 31090  0x8161950 DEBUG            souphttpsrc gstsouphttpsrc.c:1206:gst_soup_http_src_build_message:<source> request headers:
0:00:00.225167524 31090  0x8161950 DEBUG            souphttpsrc gstsouphttpsrc.c:727:gst_soup_http_src_headers_foreach:<source>  Connection: close
0:00:00.225227665 31090  0x8161950 DEBUG            souphttpsrc gstsouphttpsrc.c:727:gst_soup_http_src_headers_foreach:<source>  icy-metadata: 1
0:00:00.225281479 31090  0x8161950 DEBUG            souphttpsrc gstsouphttpsrc.c:1256:gst_soup_http_src_do_request:<source> Queueing connection request
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source: Message Corrupt
Additional debug info:
gstsouphttpsrc.c(943): gst_soup_http_src_finished_cb (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstSoupHTTPSrc:source:
libsoup status code 8
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
0:00:00.226058533 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1333:gst_soup_http_src_unlock:<source> unlock()
0:00:00.226686764 31090  0x8161950 DEBUG            souphttpsrc gstsouphttpsrc.c:1238:gst_soup_http_src_do_request:<source> interrupted
0:00:00.226764940 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1349:gst_soup_http_src_unlock_stop:<source> unlock_stop()
0:00:00.226891120 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1309:gst_soup_http_src_stop:<source> stop()
0:00:00.227013456 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:926:gst_soup_http_src_finished_cb:<source> finished
0:00:00.227064063 31090  0x814a0a0 WARN             souphttpsrc gstsouphttpsrc.c:943:gst_soup_http_src_finished_cb:<source> error: Cancelled
0:00:00.227103141 31090  0x814a0a0 WARN             souphttpsrc gstsouphttpsrc.c:943:gst_soup_http_src_finished_cb:<source> error: libsoup status code 1
0:00:00.227352580 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:1093:gst_soup_http_src_response_cb:<source> got response 1: Cancelled
Freeing pipeline ...
0:00:00.228341403 31090  0x814a0a0 DEBUG            souphttpsrc gstsouphttpsrc.c:329:gst_soup_http_src_finalize:<source> finalize
Comment 2 Thiago Sousa Santos 2013-07-11 23:44:54 UTC
Created attachment 248980 [details] [review]
souphttpsrc: ignore errors from HEAD request

HEAD requests are used to check the server headers to see if it
seekable. Ignore errors from those requests as they shouldn't be
critical.
Comment 3 Sebastian Dröge (slomo) 2013-07-12 08:03:00 UTC
commit 9a7321872f6902dd829599aab02f193eec307ac7
Author: Thiago Santos <thiago.sousa.santos@collabora.com>
Date:   Thu Jul 11 20:41:23 2013 -0300

    souphttpsrc: ignore errors from HEAD request
    
    HEAD requests are used to check the server headers to see if it
    seekable. Ignore errors from those requests as they shouldn't be
    critical.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=704053
Comment 4 GstBlub 2013-07-12 14:24:24 UTC
This change seems to fix the issue, thanks!
Comment 5 Thiago Sousa Santos 2013-07-15 12:26:48 UTC
*** Bug 704241 has been marked as a duplicate of this bug. ***
Comment 6 GstBlub 2013-07-25 17:20:42 UTC
While some errors due to HEAD requests now don't cause fatal issues, I ran into a problem with a IIS web server returning a 404 on a HEAD request.  The exact same GET request however returns the expected result.

In gst_soup_http_src_parse_status() only transport errors during HEAD requests are ignored.  Other errors like client or server errors in response to a HEAD request are still always fatal, breaking such streams.

Ignoring client/server errors for HEAD requests fixes this problem.
Comment 7 Arnaud Vrac 2013-07-25 17:21:47 UTC
This was fixed in master earlier today