diff options
Diffstat (limited to 'src/responder/pam/pamsrv_cmd.c')
-rw-r--r-- | src/responder/pam/pamsrv_cmd.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c index 426964220..bd08fed87 100644 --- a/src/responder/pam/pamsrv_cmd.c +++ b/src/responder/pam/pamsrv_cmd.c @@ -1022,6 +1022,17 @@ done: return ret; } +static int pam_auth_req_destructor(struct pam_auth_req *preq) +{ + if (preq && preq->dpreq_spy) { + /* If there is still a request pending, tell the spy + * the client is going away + */ + preq->dpreq_spy->preq = NULL; + } + return 0; +} + static int pam_forwarder(struct cli_ctx *cctx, int pam_cmd) { struct sss_domain_info *dom; @@ -1037,6 +1048,7 @@ static int pam_forwarder(struct cli_ctx *cctx, int pam_cmd) if (!preq) { return ENOMEM; } + talloc_set_destructor(preq, pam_auth_req_destructor); preq->cctx = cctx; preq->pd = talloc_zero(preq, struct pam_data); |