]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: dump content_range using 64 bit formatters
authorYehuda Sadeh <yehuda@inktank.com>
Sat, 18 Aug 2012 00:34:23 +0000 (17:34 -0700)
committerSage Weil <sage@inktank.com>
Tue, 21 Aug 2012 17:58:44 +0000 (10:58 -0700)
Fixes: #2961
Also make sure that size is 64 bit.

backport: argonaut
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_rest.cc
src/rgw/rgw_rest.h

index 2e5e78fefbacf7bc8ee8d56d94a057433a4d4219..fb55f3477b69fd4a467c74d78f915308be970bf4 100644 (file)
@@ -253,9 +253,13 @@ void dump_continue(struct req_state *s)
   FCGX_FFlush(s->fcgx->out);
 }
 
-void dump_range(struct req_state *s, off_t ofs, off_t end, size_t total)
+void dump_range(struct req_state *s, uint64_t ofs, uint64_t end, uint64_t total)
 {
-    CGI_PRINTF(s,"Content-Range: bytes %d-%d/%d\n", (int)ofs, (int)end, (int)total);
+  char range_buf[128];
+
+  /* dumping range into temp buffer first, as libfcgi will fail to digest %lld */
+  snprintf(range_buf, 128, "%lld-%lld/%lld", (long long)ofs, (long long)end, (long long)total);
+  CGI_PRINTF(s,"Content-Range: bytes %s\n", range_buf);
 }
 
 int RGWGetObj_REST::get_params()
index b0ba54965fac0ca896f164ca81bceb35e152e135..ae8cf4eab0acb3458b54c49fa2f85bacab6a33b8 100644 (file)
@@ -189,7 +189,7 @@ extern void dump_content_length(struct req_state *s, size_t len);
 extern void dump_etag(struct req_state *s, const char *etag);
 extern void dump_last_modified(struct req_state *s, time_t t);
 extern void abort_early(struct req_state *s, int err);
-extern void dump_range(struct req_state *s, off_t ofs, off_t end, size_t total_size);
+extern void dump_range(struct req_state *s, uint64_t ofs, uint64_t end, uint64_t total_size);
 extern void dump_continue(struct req_state *s);
 extern void list_all_buckets_end(struct req_state *s);
 extern void dump_time(struct req_state *s, const char *name, time_t *t);