From 8860e46a33f6592c5b24b3e43436802e8b2bccef Mon Sep 17 00:00:00 2001 From: Elizabeth Myers Date: Fri, 1 Apr 2016 02:17:25 -0500 Subject: [PATCH] =?UTF-8?q?providers/opm:=20It=20Works=E2=84=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- authd/providers/opm.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/authd/providers/opm.c b/authd/providers/opm.c index 4b17c288..f7369f02 100644 --- a/authd/providers/opm.c +++ b/authd/providers/opm.c @@ -123,14 +123,25 @@ read_opm_reply(rb_fde_t *F, void *data) for(struct opm_proxy *proxy = opm_proxy_scans; proxy->note != NULL; proxy++) { - if(strncmp(proxy->note, readbuf, sizeof(readbuf)) != 0) - /* Nope */ - continue; + if(strncmp(proxy->note, readbuf, sizeof(readbuf)) == 0) + { + rb_dlink_node *ptr, *nptr; - /* If we get here we have an open proxy */ - reject_client(auth, PROVIDER_OPM, readbuf, "Open proxy detected"); - opm_cancel(auth); - break; + /* Cancel outstanding lookups */ + RB_DLINK_FOREACH_SAFE(ptr, nptr, lookup->scans.head) + { + struct opm_scan *scan = ptr->data; + + rb_close(scan->F); + rb_free(scan); + } + + /* No longer needed, client is going away */ + rb_free(lookup); + + reject_client(auth, PROVIDER_OPM, readbuf, "Open proxy detected"); + break; + } } rb_close(F);