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 6f2d0202c..94de4df5f 100644 --- a/src/responder/pam/pamsrv_cmd.c +++ b/src/responder/pam/pamsrv_cmd.c @@ -1034,6 +1034,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; @@ -1049,6 +1060,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); |