From 808ebdb0a061f5be6415b1ae7b2f0e954f77e394 Mon Sep 17 00:00:00 2001
From: Lorenz Stechauner <lorenz.stechauner@necronda.net>
Date: Sat, 1 Jul 2023 21:19:27 +0200
Subject: [PATCH] Add http_add_to_header_fiel()

---
 src/lib/http.c | 11 +++++++++++
 src/lib/http.h |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/lib/http.c b/src/lib/http.c
index 1d4192d..a5dd880 100644
--- a/src/lib/http.c
+++ b/src/lib/http.c
@@ -15,6 +15,8 @@
 #include <string.h>
 #include <errno.h>
 
+void http_append_to_header_field(http_field *field, const char *value, unsigned long len);
+
 static int http_error(int err) {
     if (err == 0) {
         errno = 0;
@@ -307,6 +309,15 @@ int http_add_header_field_len(http_hdr *hdr, const char *name, unsigned long nam
     return 0;
 }
 
+int http_add_to_header_field(http_hdr *hdr, const char *field_name, const char *field_value) {
+    int field_num = http_get_header_field_num(hdr, field_name);
+    if (field_num == -1)
+        return http_add_header_field(hdr, field_name, field_value);
+
+    http_append_to_header_field(&hdr->fields[field_num], field_value, strlen(field_value));
+    return 0;
+}
+
 void http_append_to_header_field(http_field *field, const char *value, unsigned long len) {
     if (field->type == HTTP_FIELD_NORMAL) {
         unsigned long total_len = strlen(field->normal.value) + len + 1;
diff --git a/src/lib/http.h b/src/lib/http.h
index 8140a3c..cd8bef2 100644
--- a/src/lib/http.h
+++ b/src/lib/http.h
@@ -166,7 +166,7 @@ int http_add_header_field(http_hdr *hdr, const char *field_name, const char *fie
 
 int http_add_header_field_len(http_hdr *hdr, const char *name, unsigned long name_len, const char *value, unsigned long value_len);
 
-void http_append_to_header_field(http_field *field, const char *value, unsigned long len);
+int http_add_to_header_field(http_hdr *hdr, const char *field_name, const char *field_value);
 
 void http_remove_header_field(http_hdr *hdr, const char *field_name, int mode);