diff --git a/plugins/in_elasticsearch/in_elasticsearch.c b/plugins/in_elasticsearch/in_elasticsearch.c index d3963d7ff34..72096d19a06 100644 --- a/plugins/in_elasticsearch/in_elasticsearch.c +++ b/plugins/in_elasticsearch/in_elasticsearch.c @@ -139,7 +139,7 @@ static int in_elasticsearch_bulk_init(struct flb_input_instance *ins, if (ctx->enable_http2) { ret = flb_http_server_init(&ctx->http_server, HTTP_PROTOCOL_AUTODETECT, - FLB_HTTP_SERVER_FLAG_AUTO_INFLATE, + (FLB_HTTP_SERVER_FLAG_KEEPALIVE | FLB_HTTP_SERVER_FLAG_AUTO_INFLATE), NULL, ins->host.listen, ins->host.port, diff --git a/plugins/in_http/http.c b/plugins/in_http/http.c index 62f355ba293..2aa777cc490 100644 --- a/plugins/in_http/http.c +++ b/plugins/in_http/http.c @@ -96,7 +96,7 @@ static int in_http_init(struct flb_input_instance *ins, if (ctx->enable_http2) { ret = flb_http_server_init(&ctx->http_server, HTTP_PROTOCOL_AUTODETECT, - FLB_HTTP_SERVER_FLAG_AUTO_INFLATE, + (FLB_HTTP_SERVER_FLAG_KEEPALIVE | FLB_HTTP_SERVER_FLAG_AUTO_INFLATE), NULL, ins->host.listen, ins->host.port, diff --git a/plugins/in_opentelemetry/opentelemetry.c b/plugins/in_opentelemetry/opentelemetry.c index e01eeacc936..fdaddffde68 100644 --- a/plugins/in_opentelemetry/opentelemetry.c +++ b/plugins/in_opentelemetry/opentelemetry.c @@ -93,7 +93,7 @@ static int in_opentelemetry_init(struct flb_input_instance *ins, if (ctx->enable_http2) { ret = flb_http_server_init(&ctx->http_server, HTTP_PROTOCOL_AUTODETECT, - FLB_HTTP_SERVER_FLAG_AUTO_INFLATE, + (FLB_HTTP_SERVER_FLAG_KEEPALIVE | FLB_HTTP_SERVER_FLAG_AUTO_INFLATE), NULL, ins->host.listen, ins->host.port, diff --git a/plugins/in_splunk/splunk.c b/plugins/in_splunk/splunk.c index 0a1a37bd7cf..1511a8ff31d 100644 --- a/plugins/in_splunk/splunk.c +++ b/plugins/in_splunk/splunk.c @@ -97,7 +97,7 @@ static int in_splunk_init(struct flb_input_instance *ins, if (ctx->enable_http2) { ret = flb_http_server_init(&ctx->http_server, HTTP_PROTOCOL_AUTODETECT, - FLB_HTTP_SERVER_FLAG_AUTO_INFLATE, + (FLB_HTTP_SERVER_FLAG_KEEPALIVE | FLB_HTTP_SERVER_FLAG_AUTO_INFLATE), NULL, ins->host.listen, ins->host.port, diff --git a/src/flb_http_common.c b/src/flb_http_common.c index fbd4273356c..f68d893cbcd 100644 --- a/src/flb_http_common.c +++ b/src/flb_http_common.c @@ -437,6 +437,11 @@ void flb_http_stream_destroy(struct flb_http_stream *stream) cfl_list_del(&stream->_head); } - flb_free(stream); + flb_http_request_destroy(&stream->request); + flb_http_response_destroy(&stream->response); + + if (stream->releasable) { + flb_free(stream); + } } } diff --git a/src/http_server/flb_http_server_http1.c b/src/http_server/flb_http_server_http1.c index f5e2d735dae..6a61d2a3e93 100644 --- a/src/http_server/flb_http_server_http1.c +++ b/src/http_server/flb_http_server_http1.c @@ -138,6 +138,14 @@ static int http1_session_process_request(struct flb_http1_server_session *sessio struct mk_http_header *header; int result; + result = flb_http_request_init(&session->stream.request); + + if (result != 0) { + return -1; + } + + session->stream.request.stream = &session->stream; + if (session->inner_request.uri_processed.data != NULL) { session->stream.request.path = \ cfl_sds_create_len(session->inner_request.uri_processed.data, @@ -450,7 +458,7 @@ int flb_http1_server_session_init(struct flb_http1_server_session *session, mk_http_parser_init(&session->inner_parser); - result = flb_http_stream_init(&session->stream, parent, 0, HTTP_STREAM_ROLE_SERVER, + result = flb_http_stream_init(&session->stream, parent, 0, HTTP_STREAM_ROLE_SERVER, user_data); if (result != 0) { @@ -471,11 +479,13 @@ void flb_http1_server_session_destroy(struct flb_http1_server_session *session) session->inner_session.channel = NULL; } + flb_http_stream_destroy(&session->stream); + session->initialized = FLB_FALSE; } } -int flb_http1_server_session_ingest(struct flb_http1_server_session *session, +int flb_http1_server_session_ingest(struct flb_http1_server_session *session, unsigned char *buffer, size_t length) {