From 1ce4cab82dd4ae3202110859b526a8a1f6f5dde292e0767097630ac341b35f7f Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Sun, 11 Jan 2026 01:26:57 -0500 Subject: [PATCH] Ownership of some core parts for HTTP. --- src/IO/http.cc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/IO/http.cc b/src/IO/http.cc index 48f1800..8acc667 100644 --- a/src/IO/http.cc +++ b/src/IO/http.cc @@ -82,7 +82,7 @@ struct SocketData_t { * delayed due to the per host connection limit. */ struct Server_t { - char *host; + std::optional< std::string > host; uint_t port; bool https; @@ -97,7 +97,7 @@ struct FdMapEntry_t { }; static void Http_socket_enqueue(Server_t *srv, SocketData_t* sock); -static Server_t *Http_server_get(const char *host, uint_t port, bool https); +static Server_t *Http_server_get(const std::string host, uint_t port, bool https); static void Http_server_remove(Server_t *srv); static void Http_connect_socket(ChainLink *Info); static char *Http_get_connect_str(const DilloUrl *url); @@ -244,7 +244,7 @@ static void Http_socket_activate(Server_t *srv, SocketData_t *sd) dList_remove(srv->queue, sd); sd->flags &= ~HTTP_SOCKET_QUEUED; srv->active_conns++; - sd->connected_to = srv->host; + sd->connected_to = srv->host.value().data(); } static void Http_connect_queued_sockets(Server_t *srv) @@ -1066,20 +1066,20 @@ static void Http_socket_enqueue(Server_t *srv, SocketData_t* sock) dList_append(srv->queue, sock); } -static Server_t *Http_server_get(const char *host, uint_t port, bool https) +static Server_t *Http_server_get(const std::string host, uint_t port, bool https) { for (int i = 0; i < servers.size(); i++) { auto srv = servers.at( i ); if (port == srv->port && https == srv->https && - !dStrAsciiCasecmp(host, srv->host)) + !dStrAsciiCasecmp(host.c_str(), srv->host.value().c_str())) return srv; } auto srv = std::make_unique< Server_t >(); srv->queue = dList_new(10); srv->running_the_queue = 0; - srv->host = dStrdup(host); + srv->host = host; srv->port = port; srv->https = https; servers.push_back( srv.release() ); @@ -1097,7 +1097,6 @@ static void Http_server_remove(Server_t *srv) } dList_free(srv->queue); servers.erase( std::find( begin( servers ), end( servers ), srv ) ); - dFree(srv->host); delete srv; }