From b30e3e78c912355ce1adc620b3e3c279dc1299f9 Mon Sep 17 00:00:00 2001 From: DaniTheSkunk <> Date: Fri, 17 Mar 2023 21:38:58 +0000 Subject: [PATCH] preparing http requests --- src/net/http_client.c | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/net/http_client.c b/src/net/http_client.c index 335d59d..3a3a91a 100644 --- a/src/net/http_client.c +++ b/src/net/http_client.c @@ -8,13 +8,29 @@ static HINTERNET internet = 0; +#define REQ_PROGRESS 0 +#define REQ_DONE 1 +#define REQ_FREE 2 + +struct request { + u8 *response; + u32 response_length; + HINTERNET handle; + u8 status; +}; + +static struct request *requests = 0; +static u32 request_count = 0; + static void init_internet(); +static u32 next_free_request(); struct sw_http_request_handle sw_http_request_async(char *url) { HINTERNET session, http; u16 port; char *proto, *rest; char *server, *rest2; + u32 req; sw_str_split2(url, "://", &proto, &rest); if(proto == 0) { @@ -52,7 +68,10 @@ struct sw_http_request_handle sw_http_request_async(char *url) { sw_win32_error(); } - return (struct sw_http_request_handle){0}; + req = next_free_request(); + requests[req].handle = http; + + return (struct sw_http_request_handle){req}; } static void init_internet() { @@ -65,3 +84,24 @@ static void init_internet() { } } } + +static u32 next_free_request() { + u32 i; + + for(i = 0; i < request_count; ++i) { + if(requests[i].status == REQ_FREE) { + return i; + } + } + + request_count += 1; + + requests = realloc(requests, sizeof(struct request) * request_count); + + requests[request_count - 1].handle = 0; + requests[request_count - 1].response = 0; + requests[request_count - 1].response_length = 0; + requests[request_count - 1].status = REQ_PROGRESS; + + return request_count - 1; +}