]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: generate the "Date" HTTP header for civetweb. 4851/head
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Wed, 18 Feb 2015 14:48:43 +0000 (15:48 +0100)
committerSage Weil <sage@redhat.com>
Thu, 4 Jun 2015 01:02:30 +0000 (21:02 -0400)
Fixes: #10873
Backport: hammer
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
(cherry picked from commit ea384f83b601f60e135c3d3f960fdb75a919dd84)

src/rgw/rgw_civetweb.cc
src/rgw/rgw_civetweb.h

index b44a40c2dd023ea19e92b146bca1ef8578494c5f..7f246d15c26da9af0bae8641fd93141dd0d795aa 100644 (file)
@@ -145,6 +145,20 @@ int RGWMongoose::send_100_continue()
   return mg_write(conn, buf, sizeof(buf) - 1);
 }
 
+static void dump_date_header(bufferlist &out)
+{
+  char timestr[TIME_BUF_SIZE];
+  const time_t gtime = time(NULL);
+  struct tm result;
+  struct tm const * const tmp = gmtime_r(&gtime, &result);
+
+  if (tmp == NULL)
+    return;
+
+  if (strftime(timestr, sizeof(timestr), "Date: %a, %d %b %Y %H:%M:%S %Z\r\n", tmp))
+    out.append(timestr);
+}
+
 int RGWMongoose::complete_header()
 {
   header_done = true;
@@ -153,6 +167,8 @@ int RGWMongoose::complete_header()
     return 0;
   }
 
+  dump_date_header(header_data);
+
   if (explicit_keepalive)
     header_data.append("Connection: Keep-Alive\r\n");
 
index c1df9f08a5bb9fa2c567c83585a132ce12777498..f50d5d6f225c645ad35fe98bda0fb7fef3e4dfb0 100644 (file)
@@ -1,5 +1,6 @@
 #ifndef CEPH_RGW_MONGOOSE_H
 #define CEPH_RGW_MONGOOSE_H
+#define TIME_BUF_SIZE 128
 
 #include "rgw_client_io.h"