Fix bug and tidy code.

This commit is contained in:
Martin Brampton 2015-06-11 09:30:18 +01:00
parent 466e86f057
commit 420510749c

View File

@ -2280,21 +2280,23 @@ dcb_persistent_clean_count(DCB *dcb, bool cleanall)
{ {
SERVER *server = dcb->server; SERVER *server = dcb->server;
DCB *previousdcb = NULL; DCB *previousdcb = NULL;
DCB *persistentdcb = server->persistent; DCB *persistentdcb, *nextdcb;
DCB *disposals = NULL; DCB *disposals = NULL;
CHK_SERVER(server); CHK_SERVER(server);
spinlock_acquire(&server->persistlock); spinlock_acquire(&server->persistlock);
persistentdcb = server->persistent;
while (persistentdcb) { while (persistentdcb) {
CHK_DCB(persistentdcb); CHK_DCB(persistentdcb);
nextdcb = persistentdcb->nextpersistent;
if (cleanall || count >= server->persistpoolmax || time(NULL) - persistentdcb->persistentstart > server->persistmaxtime) if (cleanall || count >= server->persistpoolmax || time(NULL) - persistentdcb->persistentstart > server->persistmaxtime)
{ {
if (previousdcb) { if (previousdcb) {
previousdcb->nextpersistent = persistentdcb->nextpersistent; previousdcb->nextpersistent = nextdcb;
} }
else else
{ {
server->persistent = persistentdcb->nextpersistent; server->persistent = nextdcb;
} }
persistentdcb->nextpersistent = disposals; persistentdcb->nextpersistent = disposals;
disposals = persistentdcb; disposals = persistentdcb;
@ -2303,16 +2305,17 @@ dcb_persistent_clean_count(DCB *dcb, bool cleanall)
else else
{ {
count++; count++;
previousdcb = persistentdcb;
} }
previousdcb = persistentdcb; persistentdcb = nextdcb;
persistentdcb = persistentdcb->nextpersistent;
} }
spinlock_release(&server->persistlock); spinlock_release(&server->persistlock);
/** Call possible callback for this DCB in case of close */ /** Call possible callback for this DCB in case of close */
while (persistentdcb = disposals) while (disposals)
{ {
dcb_close_finish(persistentdcb); nextdcb = disposals->nextpersistent;
disposals = disposals->nextpersistent; dcb_close_finish(disposals);
disposals = nextdcb;
} }
} }
return count; return count;