From 65443b1c5b18c744d5d825759307ffee0f462b1b Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Fri, 24 Sep 2021 16:08:47 +0200 Subject: [PATCH] added function to create HTTP response object from buffer --- src/libgame/http.c | 16 ++++++++++++++++ src/libgame/http.h | 1 + 2 files changed, 17 insertions(+) diff --git a/src/libgame/http.c b/src/libgame/http.c index b494ac42..a179620e 100644 --- a/src/libgame/http.c +++ b/src/libgame/http.c @@ -65,6 +65,22 @@ static void SetHttpResponseToDefaults(struct HttpResponse *response) response->status_text[0] = '\0'; } +struct HttpResponse *GetHttpResponseFromBuffer(void *buffer, int size) +{ + if (size > MAX_HTTP_BODY_SIZE) + return NULL; + + struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse)); + + SetHttpResponseToDefaults(response); + + strncpy(response->body, buffer, MAX_HTTP_BODY_SIZE); + response->body[MAX_HTTP_BODY_SIZE] = '\0'; + response->body_size = MIN(size, MAX_HTTP_BODY_SIZE); + + return response; +} + static boolean SetHTTPResponseCode(struct HttpResponse *response, char *buffer) { char *prefix = "HTTP/1.1 "; diff --git a/src/libgame/http.h b/src/libgame/http.h index 3a1dc3e3..2523bc72 100644 --- a/src/libgame/http.h +++ b/src/libgame/http.h @@ -46,6 +46,7 @@ struct HttpResponse char *GetHttpError(void); void ConvertHttpRequestBodyToServerEncoding(struct HttpRequest *); void ConvertHttpResponseBodyToClientEncoding(struct HttpResponse *); +struct HttpResponse *GetHttpResponseFromBuffer(void *, int); boolean DoHttpRequest(struct HttpRequest *, struct HttpResponse *); #endif -- 2.34.1