Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/nslcd/myldap.c
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2008-05-11 15:28:48 +0200
committerArthur de Jong <arthur@arthurdejong.org>2008-05-11 15:28:48 +0200
commit18661201bcfccfd3c6be5edd9005f341287434d9 (patch)
tree581aea5019504e125f6851d722bf5e1ef0c1056b /nslcd/myldap.c
parent1717acbdf80603435d895fde93e09ab0a7885123 (diff)
also allow closing of searches that no longer have a valid connection and integrate myldap_search_free() into myldap_search_close()
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-ldapd@730 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'nslcd/myldap.c')
-rw-r--r--nslcd/myldap.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/nslcd/myldap.c b/nslcd/myldap.c
index 3584cab..1f0c08f 100644
--- a/nslcd/myldap.c
+++ b/nslcd/myldap.c
@@ -258,21 +258,6 @@ static MYLDAP_SEARCH *myldap_search_new(
return search;
}
-static void myldap_search_free(MYLDAP_SEARCH *search)
-{
- /* free any search entries */
- if (search->entry!=NULL)
- myldap_entry_free(search->entry);
- /* clean up cookie */
- if (search->cookie!=NULL)
- ber_bvfree(search->cookie);
- /* free read messages */
- if (search->msg!=NULL)
- ldap_msgfree(search->msg);
- /* free the storage we allocated */
- free(search);
-}
-
static MYLDAP_SESSION *myldap_session_new(void)
{
MYLDAP_SESSION *session;
@@ -882,7 +867,7 @@ MYLDAP_SEARCH *myldap_search(
void myldap_search_close(MYLDAP_SEARCH *search)
{
int i;
- if (!is_valid_search(search))
+ if (search==NULL)
return;
/* free any messages */
if (search->msg!=NULL)
@@ -891,7 +876,7 @@ void myldap_search_close(MYLDAP_SEARCH *search)
search->msg=NULL;
}
/* abandon the search if there were more results to fetch */
- if (search->msgid!=-1)
+ if ((search->session->ld!=NULL)&&(search->msgid!=-1))
{
ldap_abandon(search->session->ld,search->msgid);
search->msgid=-1;
@@ -902,8 +887,17 @@ void myldap_search_close(MYLDAP_SEARCH *search)
if (search->session->searches[i]==search)
search->session->searches[i]=NULL;
}
- /* free this search */
- myldap_search_free(search);
+ /* free any search entries */
+ if (search->entry!=NULL)
+ myldap_entry_free(search->entry);
+ /* clean up cookie */
+ if (search->cookie!=NULL)
+ ber_bvfree(search->cookie);
+ /* free read messages */
+ if (search->msg!=NULL)
+ ldap_msgfree(search->msg);
+ /* free the storage we allocated */
+ free(search);
}
MYLDAP_ENTRY *myldap_get_entry(MYLDAP_SEARCH *search,int *rcp)