Add Date for tinyhttpd
#define HTTP_KEEPALIVE_TIMEOUT 60000 // ms
#define HTTP_HEAD_MAX_LENGTH 1024
-#define HTML_TAG_BEGIN "<html><body><h1>"
-#define HTML_TAG_END "</h1></body></html>"
+#define HTML_TAG_BEGIN "<html><body><center><h1>"
+#define HTML_TAG_END "</h1></center></body></html>"
// status_message
#define HTTP_OK "OK"
@@ -84,6 +84,12 @@ typedef struct {
http_msg_t response;
} http_conn_t;
+static char s_date[32] = {0};
+static void update_date(htimer_t* timer) {
+ uint64_t now = hloop_now(hevent_loop(timer));
+ gmtime_fmt(now, s_date);
+}
+
static int http_response_dump(http_msg_t* msg, char* buf, int len) {
int offset = 0;
// status line
@@ -96,11 +102,15 @@ static int http_response_dump(http_msg_t* msg, char* buf, int len) {
if (*msg->content_type) {
offset += snprintf(buf + offset, len - offset, "Content-Type: %s\r\n", msg->content_type);
}
+ if (*s_date) {
+ offset += snprintf(buf + offset, len - offset, "Date: %s\r\n", s_date);
+ }
// TODO: Add your headers
offset += snprintf(buf + offset, len - offset, "\r\n");
// body
if (msg->body && msg->content_length > 0) {
- offset += snprintf(buf + offset, len - offset, "%.*s\n", msg->content_length, msg->body);
+ memcpy(buf + offset, msg->body, msg->content_length);
+ offset += msg->content_length;
}
return offset;
}
@@ -376,6 +386,8 @@ int main(int argc, char** argv) {
return -20;
}
printf("listenfd=%d\n", hio_fd(listenio));
+ // NOTE: add timer to update date every 1s
+ htimer_add(loop, update_date, 1000, INFINITE);
hloop_run(loop);
hloop_free(&loop);
return 0;
