diff --git a/lnm/include/lnm/http/loop.h b/lnm/include/lnm/http/loop.h index 8a199e7..071e22a 100644 --- a/lnm/include/lnm/http/loop.h +++ b/lnm/include/lnm/http/loop.h @@ -85,6 +85,8 @@ lnm_err lnm_http_loop_run(lnm_http_loop *hl, uint16_t port); void lnm_http_loop_set_api_key(lnm_http_loop *hl, const char *api_key); +void lnm_http_loop_set_server(lnm_http_loop *hl, const char *value); + /** * Represents what state an HTTP loop request is currently in. */ @@ -118,6 +120,7 @@ typedef struct lnm_http_loop_gctx { lnm_http_ctx_reset_fn ctx_reset; lnm_http_ctx_free_fn ctx_free; const char *api_key; + const char *server; void *c; } lnm_http_loop_gctx; diff --git a/lnm/src/http/lnm_http_loop.c b/lnm/src/http/lnm_http_loop.c index 0b9b812..c226b29 100644 --- a/lnm/src/http/lnm_http_loop.c +++ b/lnm/src/http/lnm_http_loop.c @@ -131,3 +131,8 @@ void lnm_http_loop_set_api_key(lnm_http_loop *hl, const char *api_key) { lnm_http_loop_gctx *gctx = hl->gctx; gctx->api_key = api_key; } + +void lnm_http_loop_set_server(lnm_http_loop *hl, const char *server) { + lnm_http_loop_gctx *gctx = hl->gctx; + gctx->server = server; +} diff --git a/lnm/src/http/lnm_http_loop_process.c b/lnm/src/http/lnm_http_loop_process.c index 1fd5530..e98c00b 100644 --- a/lnm/src/http/lnm_http_loop_process.c +++ b/lnm/src/http/lnm_http_loop_process.c @@ -158,6 +158,11 @@ void lnm_http_loop_state_process_add_headers(lnm_http_conn *conn) { lnm_http_res_add_header_len(res, lnm_http_header_content_length, buf, digits, true); + if (ctx->g->server != NULL) { + lnm_http_res_add_header(res, lnm_http_header_server, (char *)ctx->g->server, + false); + } + ctx->state = lnm_http_loop_state_write_status_line; } diff --git a/src/main.c b/src/main.c index 04bff84..4970d95 100644 --- a/src/main.c +++ b/src/main.c @@ -7,6 +7,8 @@ #include "lander.h" #include "log.h" +const char *lander_server = "lander/" LANDER_VERSION; + lnm_http_loop *loop_init(lander_gctx *gctx, const char *api_key) { lnm_http_loop *hl; lnm_http_step *step = NULL; @@ -15,6 +17,7 @@ lnm_http_loop *loop_init(lander_gctx *gctx, const char *api_key) { (lnm_http_ctx_reset_fn)lander_ctx_reset, (lnm_http_ctx_free_fn)lander_ctx_free); lnm_http_loop_set_api_key(hl, api_key); + lnm_http_loop_set_server(hl, lander_server); lnm_http_step_init(&step, lander_get_index); lnm_http_route_init_literal(&route, lnm_http_method_get, "/", step);