Server::queue is now not a dList.

This commit is contained in:
2026-01-11 01:47:35 -05:00
parent 1ce4cab82d
commit a682d18b83
+16 -18
View File
@@ -88,7 +88,7 @@ struct Server_t {
int active_conns; int active_conns;
int running_the_queue; int running_the_queue;
Dlist *queue; std::vector< SocketData_t * > queue;
}; };
struct FdMapEntry_t { struct FdMapEntry_t {
@@ -241,7 +241,7 @@ void a_Http_connect_done(int fd, bool success)
static void Http_socket_activate(Server_t *srv, SocketData_t *sd) static void Http_socket_activate(Server_t *srv, SocketData_t *sd)
{ {
dList_remove(srv->queue, sd); srv->queue.erase( std::find( begin( srv->queue ), end( srv->queue ), sd ) );
sd->flags &= ~HTTP_SOCKET_QUEUED; sd->flags &= ~HTTP_SOCKET_QUEUED;
srv->active_conns++; srv->active_conns++;
sd->connected_to = srv->host.value().data(); sd->connected_to = srv->host.value().data();
@@ -255,14 +255,14 @@ static void Http_connect_queued_sockets(Server_t *srv)
srv->running_the_queue++; srv->running_the_queue++;
for (i = 0; for (i = 0;
(i < dList_length(srv->queue) && (i < srv->queue.size() &&
srv->active_conns < prefs.http_max_conns); srv->active_conns < prefs.http_max_conns);
i++) { i++) {
sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, i) ); sd = srv->queue.at( i );
if (sd->flags & HTTP_SOCKET_TO_BE_FREED) { if (sd->flags & HTTP_SOCKET_TO_BE_FREED) {
dList_remove(srv->queue, sd); srv->queue.erase( std::find( begin( srv->queue ), end( srv->queue ), sd ) );
dFree(sd); delete sd;
i--; i--;
} else { } else {
int connect_ready = TLS_CONNECT_READY; int connect_ready = TLS_CONNECT_READY;
@@ -859,10 +859,10 @@ static void Http_socket_reuse(int SKey)
Server_t *srv = Http_server_get(old_sd->connected_to, Server_t *srv = Http_server_get(old_sd->connected_to,
old_sd->connect_port, old_sd->connect_port,
(old_sd->flags & HTTP_SOCKET_TLS)); (old_sd->flags & HTTP_SOCKET_TLS));
int i, n = dList_length(srv->queue); int i, n = srv->queue.size();
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
new_sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, i) ); new_sd = srv->queue.at( i );
if (!(new_sd->flags & HTTP_SOCKET_TO_BE_FREED) && if (!(new_sd->flags & HTTP_SOCKET_TO_BE_FREED) &&
Http_socket_reuse_compatible(old_sd, new_sd)) { Http_socket_reuse_compatible(old_sd, new_sd)) {
@@ -1052,18 +1052,18 @@ static void Http_socket_enqueue(Server_t *srv, SocketData_t* sock)
sock->flags |= HTTP_SOCKET_QUEUED; sock->flags |= HTTP_SOCKET_QUEUED;
if ((sock->web->flags & WEB_Image) == 0) { if ((sock->web->flags & WEB_Image) == 0) {
int i, n = dList_length(srv->queue); int i, n = srv->queue.size();
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
SocketData_t *curr = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, i) ); SocketData_t *curr = srv->queue.at( i );
if (a_Web_valid(curr->web) && (curr->web->flags & WEB_Image)) { if (a_Web_valid(curr->web) && (curr->web->flags & WEB_Image)) {
dList_insert_pos(srv->queue, sock, i); srv->queue.insert( i + begin( srv->queue ), sock );
return; return;
} }
} }
} }
dList_append(srv->queue, sock); srv->queue.push_back( sock );
} }
static Server_t *Http_server_get(const std::string host, uint_t port, bool https) static Server_t *Http_server_get(const std::string host, uint_t port, bool https)
@@ -1077,7 +1077,6 @@ static Server_t *Http_server_get(const std::string host, uint_t port, bool https
} }
auto srv = std::make_unique< Server_t >(); auto srv = std::make_unique< Server_t >();
srv->queue = dList_new(10);
srv->running_the_queue = 0; srv->running_the_queue = 0;
srv->host = host; srv->host = host;
srv->port = port; srv->port = port;
@@ -1091,11 +1090,10 @@ static void Http_server_remove(Server_t *srv)
{ {
SocketData_t *sd; SocketData_t *sd;
while ((sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, 0) ))) { while (not srv->queue.empty() and (sd = srv->queue.at( 0 ))) {
dList_remove_fast(srv->queue, sd); srv->queue.erase( begin( srv->queue ) );
delete sd; delete sd;
} }
dList_free(srv->queue);
servers.erase( std::find( begin( servers ), end( servers ), srv ) ); servers.erase( std::find( begin( servers ), end( servers ), srv ) );
delete srv; delete srv;
} }
@@ -1107,8 +1105,8 @@ static void Http_servers_remove_all(void)
while (not servers.empty()) { while (not servers.empty()) {
srv = servers.at( 0 ); srv = servers.at( 0 );
while ((sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, 0) ))) { while (not srv->queue.empty() and (sd = srv->queue.at( 0 ))) {
dList_remove(srv->queue, sd); srv->queue.erase( begin( srv->queue ) );
delete sd; delete sd;
} }
Http_server_remove(srv); Http_server_remove(srv);