blob: f3b8273e2123ad8fd8a539fb8e9c56f975f5d0e4 [file] [log] [blame]
From 9a7321872f6902dd829599aab02f193eec307ac7 Mon Sep 17 00:00:00 2001
From: Thiago Santos <thiago.sousa.santos@collabora.com>
Date: Thu, 11 Jul 2013 20:41:23 -0300
Subject: [PATCH 1/2] 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
---
ext/soup/gstsouphttpsrc.c | 82 ++++++++++++++++++++++++++---------------------
1 file changed, 46 insertions(+), 36 deletions(-)
diff --git a/ext/soup/gstsouphttpsrc.c b/ext/soup/gstsouphttpsrc.c
index 79f6109..b7f6de0 100644
--- a/ext/soup/gstsouphttpsrc.c
+++ b/ext/soup/gstsouphttpsrc.c
@@ -937,10 +937,15 @@ gst_soup_http_src_finished_cb (SoupMessage * msg, GstSoupHTTPSrc * src)
src->ret = GST_FLOW_CUSTOM_ERROR;
} else if (G_UNLIKELY (src->session_io_status !=
GST_SOUP_HTTP_SRC_SESSION_IO_STATUS_RUNNING)) {
- /* FIXME: reason_phrase is not translated, add proper error message */
- GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND,
- ("%s", msg->reason_phrase),
- ("libsoup status code %d", msg->status_code));
+ if (msg->method == SOUP_METHOD_HEAD) {
+ GST_DEBUG_OBJECT (src, "Ignoring error %d:%s during HEAD request",
+ msg->status_code, msg->reason_phrase);
+ } else {
+ /* FIXME: reason_phrase is not translated, add proper error message */
+ GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND,
+ ("%s", msg->reason_phrase),
+ ("libsoup status code %d", msg->status_code));
+ }
}
if (src->loop)
g_main_loop_quit (src->loop);
@@ -1112,38 +1117,43 @@ static void
gst_soup_http_src_parse_status (SoupMessage * msg, GstSoupHTTPSrc * src)
{
if (SOUP_STATUS_IS_TRANSPORT_ERROR (msg->status_code)) {
- switch (msg->status_code) {
- case SOUP_STATUS_CANT_RESOLVE:
- case SOUP_STATUS_CANT_RESOLVE_PROXY:
- SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, NOT_FOUND,
- _("Could not resolve server name."));
- src->ret = GST_FLOW_ERROR;
- break;
- case SOUP_STATUS_CANT_CONNECT:
- case SOUP_STATUS_CANT_CONNECT_PROXY:
- SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, OPEN_READ,
- _("Could not establish connection to server."));
- src->ret = GST_FLOW_ERROR;
- break;
- case SOUP_STATUS_SSL_FAILED:
- SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, OPEN_READ,
- _("Secure connection setup failed."));
- src->ret = GST_FLOW_ERROR;
- break;
- case SOUP_STATUS_IO_ERROR:
- SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, READ,
- _("A network error occured, or the server closed the connection "
- "unexpectedly."));
- src->ret = GST_FLOW_ERROR;
- break;
- case SOUP_STATUS_MALFORMED:
- SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, READ,
- _("Server sent bad data."));
- src->ret = GST_FLOW_ERROR;
- break;
- case SOUP_STATUS_CANCELLED:
- /* No error message when interrupted by program. */
- break;
+ if (msg->method == SOUP_METHOD_HEAD) {
+ GST_DEBUG_OBJECT (src, "Ignoring error %d during HEAD request",
+ msg->status_code);
+ } else {
+ switch (msg->status_code) {
+ case SOUP_STATUS_CANT_RESOLVE:
+ case SOUP_STATUS_CANT_RESOLVE_PROXY:
+ SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, NOT_FOUND,
+ _("Could not resolve server name."));
+ src->ret = GST_FLOW_ERROR;
+ break;
+ case SOUP_STATUS_CANT_CONNECT:
+ case SOUP_STATUS_CANT_CONNECT_PROXY:
+ SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, OPEN_READ,
+ _("Could not establish connection to server."));
+ src->ret = GST_FLOW_ERROR;
+ break;
+ case SOUP_STATUS_SSL_FAILED:
+ SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, OPEN_READ,
+ _("Secure connection setup failed."));
+ src->ret = GST_FLOW_ERROR;
+ break;
+ case SOUP_STATUS_IO_ERROR:
+ SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, READ,
+ _("A network error occured, or the server closed the connection "
+ "unexpectedly."));
+ src->ret = GST_FLOW_ERROR;
+ break;
+ case SOUP_STATUS_MALFORMED:
+ SOUP_HTTP_SRC_ERROR (src, msg, RESOURCE, READ,
+ _("Server sent bad data."));
+ src->ret = GST_FLOW_ERROR;
+ break;
+ case SOUP_STATUS_CANCELLED:
+ /* No error message when interrupted by program. */
+ break;
+ }
}
} else if (SOUP_STATUS_IS_CLIENT_ERROR (msg->status_code) ||
SOUP_STATUS_IS_REDIRECTION (msg->status_code) ||
--
1.8.3.2