From 7f9f5117d38256aa0c8d9666db44bafd50c049b6 Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Wed, 17 Apr 2024 15:02:39 +0300 Subject: [PATCH] net: lib: http_server: Place HTTP parser init to separate function Initialize HTTP parser during state transition so that we do it only once / request and not for every packet received. Signed-off-by: Jukka Rissanen --- subsys/net/lib/http/http_server_http1.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/subsys/net/lib/http/http_server_http1.c b/subsys/net/lib/http/http_server_http1.c index cd4b153f9f22418..612800270253840 100644 --- a/subsys/net/lib/http/http_server_http1.c +++ b/subsys/net/lib/http/http_server_http1.c @@ -314,6 +314,12 @@ int enter_http1_request(struct http_client_ctx *client) { client->server_state = HTTP_SERVER_REQUEST_STATE; + http_parser_init(&client->parser, HTTP_REQUEST); + http_parser_settings_init(&client->parser_settings); + + client->parser_settings.on_header_field = on_header_field; + client->parser_settings.on_url = on_url; + return 0; } @@ -324,11 +330,6 @@ int handle_http1_request(struct http_server_ctx *server, struct http_client_ctx LOG_DBG("HTTP_SERVER_REQUEST"); - http_parser_init(&client->parser, HTTP_REQUEST); - http_parser_settings_init(&client->parser_settings); - - client->parser_settings.on_header_field = on_header_field; - client->parser_settings.on_url = on_url; http_parser_execute(&client->parser, &client->parser_settings, client->cursor, client->data_len);