diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2008-05-11 15:28:48 +0200 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2008-05-11 15:28:48 +0200 |
commit | 18661201bcfccfd3c6be5edd9005f341287434d9 (patch) | |
tree | 581aea5019504e125f6851d722bf5e1ef0c1056b /nslcd/myldap.c | |
parent | 1717acbdf80603435d895fde93e09ab0a7885123 (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.c | 32 |
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) |