7f1631e Ticket #47314 - Winsync should support range retrieval

Authored and Committed by nhosoi 10 years ago
    Ticket #47314 - Winsync should support range retrieval
    
    Bug description: AD returns up to MaxValRange number of multi-
    valued attribute values in one search. If more attribute values
    exist, subtype ";range=0-(MaxValRange?-1)" is added to the type.
    AD Client (DS in this case) has to repeat the search with
    ";range=MaxValRange?-*" then ";range=(2*MaxValRange?)-*" and so
    on until the values with the subtype ";range=low-*" are returned.
    Windows Sync plugin did not support the range search.
    
    Fix description: This patch implements the range search for the
    multi-valued attribute.
    
    In addition,
    1) For the search request, AD returns an attribute with no values
    if it was deleted on the AD side even if the delete is one of the
    multi-valued attributes. Windows Sync code was always adding the
    attribute to the entry's e_deleted_attr list. This patch stops it
    if there are more attributes having the same type existing in the
    entry.
    
    2) slapi_entry_attr_get_* APIs call slapi_entry_attr_find and set
    the return value from the function to the value to return from the
    APIs. slapi_entry_attr_find returns -1 if it fails to find the
    attribute, which was returned if the type did not exist in the
    entry.  This patch stops it and let slapi_entry_attr_get_* APIs
    return the default return value 0 in case slapi_entry_attr_find
    fails to find the type.
    
    Reviewed by Rich (Thank you!!)
    
    https://fedorahosted.org/389/ticket/47314
    
        
file modified
+31 -38