Ownership of some core parts for HTTP.

This commit is contained in:
2026-01-11 01:26:57 -05:00
parent d0292b0912
commit 1ce4cab82d
+6 -7
View File
@@ -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;
}