1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00

Pageant: actually link requests on to their queues.

When I create any class that implements PageantAsyncOp, I had intended
to link its pao.cr list node on to the list in the appropriate
PageantClientInfo, so that if that PageantClientInfo was destroyed
prematurely (e.g. an agent connection was abruptly closed), we could
destroy all the pending requests containing a pointer to it.

I did this linking by setting the linked-list fields in pao.cr to
point to the appropriate places in the existing list - but I didn't
modify the pointer fields _in_ the existing list to point to the new
operation at all. So nothing ever actually got linked on to any of
those queues!
This commit is contained in:
Simon Tatham 2021-09-30 18:56:26 +01:00
parent 6dfe941a73
commit e7dd2421cf

View File

@ -836,6 +836,7 @@ static PageantAsyncOp *pageant_make_op(
so->pao.info = pc->info;
so->pao.cr.prev = pc->info->head.prev;
so->pao.cr.next = &pc->info->head;
so->pao.cr.prev->next = so->pao.cr.next->prev = &so->pao.cr;
so->pao.reqid = reqid;
so->pk = pk;
so->pkr.prev = so->pkr.next = NULL;
@ -1353,6 +1354,7 @@ static PageantAsyncOp *pageant_make_op(
io->pao.info = pc->info;
io->pao.cr.prev = pc->info->head.prev;
io->pao.cr.next = &pc->info->head;
io->pao.cr.prev->next = io->pao.cr.next->prev = &io->pao.cr;
io->pao.reqid = reqid;
io->response = sb;
io->crLine = 0;