add880a Trac Ticket #260 - 389 DS does not support multiple

Authored and Committed by nhosoi 12 years ago
    Trac Ticket #260 - 389 DS does not support multiple
        paging controls on a single connection
    
    https://fedorahosted.org/389/ticket/260
    
    Fix description:
    1. "Connection" object holds the paged results related values.
       Now they are packaged in one PagedResults object.  And the
       array of PagedResults with its length and used count are
       placed in PagedResultList, which is stashed in Connection
       (slap.h).
    2. The pagedresults APIs are extended to take the index of Paged-
       Results array.  The index is set to the cookie in the Paged-
       Results control before returning it to the client.  When a
       client sends a paged results request, the cookie field in the
       first request control is supposed to be empty.  The result
       control is returned with the search results.  The result
       control stores the index in the cookie and the client sets
       it to the following request control to get the next pages.
       When the paged search is done, empty cookie is returned.
       If a passed cookie is less than 0 or greater than the array
       size and the request control is "critical", the request fails
       with LDAP_PROTOCOL_ERROR and the error is logged in the error
       log.  If the control is not "critical", the paged results
       request is disabled.
    3. The array grows if multiple simple paged results requests over
    a single connection come in.  The array does not get
       released every time, but it is when the server is shutdown.
    4. Simple paged results connection is timed out when it exeeds
       the timelimit.  If multiple requests are served, it won't
       be disconnected until all the requests are timed out.
    
        
file modified
+6 -5
file modified
+8 -10
file modified
+49 -34
file modified
+12 -0
file modified
+33 -19
file modified
+1 -2
file modified
+22 -8
file modified
+6 -3