Server::queue is now not a dList.
This commit is contained in:
+16
-18
@@ -88,7 +88,7 @@ struct Server_t {
|
||||
|
||||
int active_conns;
|
||||
int running_the_queue;
|
||||
Dlist *queue;
|
||||
std::vector< SocketData_t * > queue;
|
||||
};
|
||||
|
||||
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)
|
||||
{
|
||||
dList_remove(srv->queue, sd);
|
||||
srv->queue.erase( std::find( begin( srv->queue ), end( srv->queue ), sd ) );
|
||||
sd->flags &= ~HTTP_SOCKET_QUEUED;
|
||||
srv->active_conns++;
|
||||
sd->connected_to = srv->host.value().data();
|
||||
@@ -255,14 +255,14 @@ static void Http_connect_queued_sockets(Server_t *srv)
|
||||
srv->running_the_queue++;
|
||||
|
||||
for (i = 0;
|
||||
(i < dList_length(srv->queue) &&
|
||||
(i < srv->queue.size() &&
|
||||
srv->active_conns < prefs.http_max_conns);
|
||||
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) {
|
||||
dList_remove(srv->queue, sd);
|
||||
dFree(sd);
|
||||
srv->queue.erase( std::find( begin( srv->queue ), end( srv->queue ), sd ) );
|
||||
delete sd;
|
||||
i--;
|
||||
} else {
|
||||
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,
|
||||
old_sd->connect_port,
|
||||
(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++) {
|
||||
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) &&
|
||||
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;
|
||||
|
||||
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++) {
|
||||
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)) {
|
||||
dList_insert_pos(srv->queue, sock, i);
|
||||
srv->queue.insert( i + begin( srv->queue ), sock );
|
||||
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)
|
||||
@@ -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 >();
|
||||
srv->queue = dList_new(10);
|
||||
srv->running_the_queue = 0;
|
||||
srv->host = host;
|
||||
srv->port = port;
|
||||
@@ -1091,11 +1090,10 @@ static void Http_server_remove(Server_t *srv)
|
||||
{
|
||||
SocketData_t *sd;
|
||||
|
||||
while ((sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, 0) ))) {
|
||||
dList_remove_fast(srv->queue, sd);
|
||||
while (not srv->queue.empty() and (sd = srv->queue.at( 0 ))) {
|
||||
srv->queue.erase( begin( srv->queue ) );
|
||||
delete sd;
|
||||
}
|
||||
dList_free(srv->queue);
|
||||
servers.erase( std::find( begin( servers ), end( servers ), srv ) );
|
||||
delete srv;
|
||||
}
|
||||
@@ -1107,8 +1105,8 @@ static void Http_servers_remove_all(void)
|
||||
|
||||
while (not servers.empty()) {
|
||||
srv = servers.at( 0 );
|
||||
while ((sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, 0) ))) {
|
||||
dList_remove(srv->queue, sd);
|
||||
while (not srv->queue.empty() and (sd = srv->queue.at( 0 ))) {
|
||||
srv->queue.erase( begin( srv->queue ) );
|
||||
delete sd;
|
||||
}
|
||||
Http_server_remove(srv);
|
||||
|
||||
Reference in New Issue
Block a user