Add byte range support to the Azure backend.
[bluesky.git] / bluesky / store-azure.c
index e7a2b71..176d38b 100644 (file)
@@ -268,6 +268,20 @@ static void azurestore_task(gpointer a, gpointer s)
     BlueSkyRCStr *result = NULL;
 
     if (async->op == STORE_OP_GET) {
+        /* FIXME: We ought to check that the response returned the requested
+         * byte range. */
+        if (async->start != 0 && async->len != 0) {
+            g_hash_table_insert(headers,
+                                g_strdup("Range"),
+                                g_strdup_printf("%zd-%zd", async->start,
+                                                async->start + async->len));
+            async->range_done = TRUE;
+        } else if (async->start != 0) {
+            g_hash_table_insert(headers,
+                                g_strdup("Range"),
+                                g_strdup_printf("%zd-", async->start));
+            async->range_done = TRUE;
+        }
         result = submit_request(store, "GET", async->key, headers, NULL);
         if (result != NULL) {
             async->data = result;