GstEvent *http_headers_event;
GstStructure *http_headers, *headers;
const gchar *accept_ranges;
+#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
+ gint64 start = 0, stop = 0, total = 0;
+#endif
- GST_INFO_OBJECT (src, "got headers");
+ GST_INFO_OBJECT (src, "got headers : %d", msg->status_code);
#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
soup_message_headers_foreach (msg->response_headers,
gst_soup_http_src_headers_foreach, src);
newsize = src->request_position +
soup_message_headers_get_content_length (msg->response_headers);
} else {
- newsize = soup_message_headers_get_content_length (msg->response_headers);
+ if (soup_message_headers_get_content_range(msg->response_headers, &start, &stop, &total) && (total > 0)) {
+ GST_DEBUG_OBJECT (src, "get range header : %" G_GINT64_FORMAT
+ "~%" G_GINT64_FORMAT"/%"G_GINT64_FORMAT, start, stop, total);
+ newsize = (guint64)total;
+ } else {
+ if ((src->have_size) && (src->content_size <= src->request_position)) {
+ newsize = src->content_size;
+ } else {
+ newsize = soup_message_headers_get_content_length (msg->response_headers);
+ }
+ }
}
#else
newsize = src->request_position +
#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
/* The Range request header is always included.
* @ref gst_soup_http_src_add_range_header() */
- else if (msg->status_code == SOUP_STATUS_OK) {
+ else if ((msg->status_code == SOUP_STATUS_OK) &&
+ (soup_message_headers_get_content_range(msg->response_headers, &start, &stop, &total) == FALSE)) {
GST_DEBUG_OBJECT (src, "there is no accept range header");
src->seekable = FALSE;
}