[gvfs] http: Report correct size for partial content msg



commit 38f093cfc0144972adda956320f5f968f7e1220a
Author: Ondrej Holy <oholy redhat com>
Date:   Mon Nov 24 14:21:39 2014 +0100

    http: Report correct size for partial content msg
    
    Content length is wrongly used as file size for partial content
    messages (e.g. after seek), therefor length from range header has
    to be used instead.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=690226

 daemon/gvfsbackendhttp.c |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)
---
diff --git a/daemon/gvfsbackendhttp.c b/daemon/gvfsbackendhttp.c
index 0db563f..7d6f32c 100644
--- a/daemon/gvfsbackendhttp.c
+++ b/daemon/gvfsbackendhttp.c
@@ -540,8 +540,23 @@ file_info_from_message (SoupMessage *msg,
   g_free (basename);
   g_free (ed_name);
 
-  if (soup_message_headers_get_encoding(msg->response_headers) == SOUP_ENCODING_CONTENT_LENGTH)
-    g_file_info_set_size (info, soup_message_headers_get_content_length (msg->response_headers));
+  if (soup_message_headers_get_encoding (msg->response_headers) == SOUP_ENCODING_CONTENT_LENGTH)
+    {
+      goffset start, end, length;
+      gboolean ret;
+
+      ret = soup_message_headers_get_content_range (msg->response_headers,
+                                                    &start, &end, &length);
+      if (ret && length != -1)
+        {
+          g_file_info_set_size (info, length);
+        }
+      else if (!ret)
+        {
+          length = soup_message_headers_get_content_length (msg->response_headers);
+          g_file_info_set_size (info, length);
+        }
+    }
 
   g_file_info_set_file_type (info, G_FILE_TYPE_REGULAR);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]