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.
|
* delayed due to the per host connection limit.
|
||||||
*/
|
*/
|
||||||
struct Server_t {
|
struct Server_t {
|
||||||
char *host;
|
std::optional< std::string > host;
|
||||||
uint_t port;
|
uint_t port;
|
||||||
bool https;
|
bool https;
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ struct FdMapEntry_t {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void Http_socket_enqueue(Server_t *srv, SocketData_t* sock);
|
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_server_remove(Server_t *srv);
|
||||||
static void Http_connect_socket(ChainLink *Info);
|
static void Http_connect_socket(ChainLink *Info);
|
||||||
static char *Http_get_connect_str(const DilloUrl *url);
|
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);
|
dList_remove(srv->queue, sd);
|
||||||
sd->flags &= ~HTTP_SOCKET_QUEUED;
|
sd->flags &= ~HTTP_SOCKET_QUEUED;
|
||||||
srv->active_conns++;
|
srv->active_conns++;
|
||||||
sd->connected_to = srv->host;
|
sd->connected_to = srv->host.value().data();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Http_connect_queued_sockets(Server_t *srv)
|
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);
|
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++) {
|
for (int i = 0; i < servers.size(); i++) {
|
||||||
auto srv = servers.at( i );
|
auto srv = servers.at( i );
|
||||||
|
|
||||||
if (port == srv->port && https == srv->https &&
|
if (port == srv->port && https == srv->https &&
|
||||||
!dStrAsciiCasecmp(host, srv->host))
|
!dStrAsciiCasecmp(host.c_str(), srv->host.value().c_str()))
|
||||||
return srv;
|
return srv;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto srv = std::make_unique< Server_t >();
|
auto srv = std::make_unique< Server_t >();
|
||||||
srv->queue = dList_new(10);
|
srv->queue = dList_new(10);
|
||||||
srv->running_the_queue = 0;
|
srv->running_the_queue = 0;
|
||||||
srv->host = dStrdup(host);
|
srv->host = host;
|
||||||
srv->port = port;
|
srv->port = port;
|
||||||
srv->https = https;
|
srv->https = https;
|
||||||
servers.push_back( srv.release() );
|
servers.push_back( srv.release() );
|
||||||
@@ -1097,7 +1097,6 @@ static void Http_server_remove(Server_t *srv)
|
|||||||
}
|
}
|
||||||
dList_free(srv->queue);
|
dList_free(srv->queue);
|
||||||
servers.erase( std::find( begin( servers ), end( servers ), srv ) );
|
servers.erase( std::find( begin( servers ), end( servers ), srv ) );
|
||||||
dFree(srv->host);
|
|
||||||
delete srv;
|
delete srv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user