On Mon, 2011-04-25 at 15:33 -0400, Stephen Gallagher wrote:
On Mon, 2011-04-25 at 14:26 -0400, Stephen Gallagher wrote:
Patch 0001: Added a debug message to see which record type we're processing on each loop through sdap_process_message(). This is purely informational.
Patch 0002: Add support for paged LDAP results. I changed the internals of sdap_get_generic_send() somewhat here and added a new sdap_get_generic_internal() routine that can be used to handle multiple calls to LDAP for a single request. We should be able to use this in the future to handle Active Directory's non-standard attribute-level paging as well (though that's not addressed in this patch).
Patch 0003: Add ldap_page_size configuration option I made this a separate patch for simplicity of review. I set 1000 records as the default, as this seemed to be the most-compatible value among 389, OpenLDAP and ActiveDirectory as best I could determine.
Simo made some comments on IRC that I have incorporated.
First, I renamed sdap_get_generic_send_internal() to sdap_get_generic_step() and reordered it according to the tevent_req style. Second, I added talloc_zfree(state->op) to the beginning of sdap_get_generic_step() to ensure that we aren't carrying around extra sdap_op memory for subsequent pages.
Simo had a few remaining comments. To follow tevent_req style, I've moved forward declarations to be above the sdap_get_generic_send().
Also, there was a memory issue (I was accessing memory that had been leaked). The cookie had gone out of scope, but I hadn't freed the memory (which is why I saw no issues in my tests).
I now make an appropriate copy of the cookie berval and free the original memory.