use real-time clock for http response headers (#15421)
Costa Tsaousis committed
Jul 17, 2023 at 11:35 UTC
fb5286cf3053cf5b61644d27fd282a603a8cb7f4
3 files changed
+7
-8
aclk/aclk_query.c
-1
@@ -197,7 +197,6 @@ static int http_api_v2(struct aclk_query_thread *query_thr, aclk_query_t query)
197
z_buffer = NULL;
198
}
199
200
- w->response.data->date = w->timings.tv_ready.tv_sec;
200
web_client_build_http_header(w);
201
local_buffer = buffer_create(NETDATA_WEB_RESPONSE_INITIAL_SIZE, &netdata_buffers_statistics.buffers_aclk);
202
local_buffer->content_type = CT_APPLICATION_JSON;
web/api/badges/web_buffer_svg.c
+2
-1
@@ -1055,7 +1055,8 @@ int web_client_api_request_v1_badge(RRDHOST *host, struct web_client *w, char *u
1055
if(rc) {
1056
if (refresh > 0) {
1057
buffer_sprintf(w->response.header, "Refresh: %d\r\n", refresh);
1058
- w->response.data->expires = now_realtime_sec() + refresh;
1058
+ w->response.data->date = now_realtime_sec();
1059
+ w->response.data->expires = w->response.data->date + refresh;
1060
}
1061
else buffer_no_cacheable(w->response.data);
1062
web/server/web_client.c
+5
-6
@@ -1276,12 +1276,15 @@ void web_client_build_http_header(struct web_client *w) {
1276
if(unlikely(w->response.code != HTTP_RESP_OK))
1277
buffer_no_cacheable(w->response.data);
1278
1279
+ if(unlikely(!w->response.data->date))
1280
+ w->response.data->date = now_realtime_sec();
1281
+
1282
// set a proper expiration date, if not already set
1283
if(unlikely(!w->response.data->expires)) {
1284
if(w->response.data->options & WB_CONTENT_NO_CACHEABLE)
1282
- w->response.data->expires = w->timings.tv_ready.tv_sec + localhost->rrd_update_every;
1285
+ w->response.data->expires = w->response.data->date + localhost->rrd_update_every;
1286
else
1284
- w->response.data->expires = w->timings.tv_ready.tv_sec + 86400;
1287
+ w->response.data->expires = w->response.data->date + 86400;
1288
}
1289
1290
// prepare the HTTP response header
@@ -1868,10 +1871,6 @@ void web_client_process_request(struct web_client *w) {
1871
1872
w->response.sent = 0;
1873
1871
- // set a proper last modified date
1872
- if(unlikely(!w->response.data->date))
1873
- w->response.data->date = w->timings.tv_ready.tv_sec;
1874
-
1874
web_client_send_http_header(w);
1875
1876
// enable sending immediately if we have data