Ownership of some core parts for HTTP.
This commit is contained in:
+6
-7
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user