Differentiate active and inactive servers in services
The code that checked whether a server was added to a service did not check whether the server reference was active. This caused problems when an old server was added again to a service that once had used it.
This commit is contained in:
parent
a018e732eb
commit
0aee4ac020
@ -832,7 +832,7 @@ void serviceRemoveBackend(SERVICE *service, const SERVER *server)
|
||||
|
||||
for (SERVER_REF *ref = service->dbref; ref; ref = ref->next)
|
||||
{
|
||||
if (ref->server == server)
|
||||
if (ref->server == server && ref->active)
|
||||
{
|
||||
ref->active = false;
|
||||
service->n_dbref--;
|
||||
@ -856,8 +856,12 @@ serviceHasBackend(SERVICE *service, SERVER *server)
|
||||
|
||||
spinlock_acquire(&service->spin);
|
||||
ptr = service->dbref;
|
||||
while (ptr && ptr->server != server)
|
||||
while (ptr)
|
||||
{
|
||||
if (ptr->server == server && ptr->active)
|
||||
{
|
||||
break;
|
||||
}
|
||||
ptr = ptr->next;
|
||||
}
|
||||
spinlock_release(&service->spin);
|
||||
|
Loading…
x
Reference in New Issue
Block a user