From e39dce7935dd513b77ce34bc79d70a2c23437cbb Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Wed, 18 Feb 2015 15:48:43 +0100 Subject: [PATCH] rgw: generate the "Date" HTTP header for civetweb. Fixes: #10873 Backport: hammer Signed-off-by: Radoslaw Zarzynski (cherry picked from commit ea384f83b601f60e135c3d3f960fdb75a919dd84) --- src/rgw/rgw_civetweb.cc | 16 ++++++++++++++++ src/rgw/rgw_civetweb.h | 1 + 2 files changed, 17 insertions(+) diff --git a/src/rgw/rgw_civetweb.cc b/src/rgw/rgw_civetweb.cc index 901b2ded8ac69..1495e92d4741f 100644 --- a/src/rgw/rgw_civetweb.cc +++ b/src/rgw/rgw_civetweb.cc @@ -147,6 +147,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(>ime, &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; @@ -155,6 +169,8 @@ int RGWMongoose::complete_header() return 0; } + dump_date_header(header_data); + if (explicit_keepalive) header_data.append("Connection: Keep-Alive\r\n"); diff --git a/src/rgw/rgw_civetweb.h b/src/rgw/rgw_civetweb.h index 9a7594fe8fb63..2911328859556 100644 --- a/src/rgw/rgw_civetweb.h +++ b/src/rgw/rgw_civetweb.h @@ -3,6 +3,7 @@ #ifndef CEPH_RGW_MONGOOSE_H #define CEPH_RGW_MONGOOSE_H +#define TIME_BUF_SIZE 128 #include "rgw_client_io.h"