+void
+syncinfo_free( syncinfo_t *sie )
+{
+ if ( sie->si_provideruri ) {
+ ch_free( sie->si_provideruri );
+ }
+ if ( sie->si_provideruri_bv ) {
+ ber_bvarray_free( sie->si_provideruri_bv );
+ }
+ if ( sie->si_updatedn.bv_val ) {
+ ch_free( sie->si_updatedn.bv_val );
+ }
+ if ( sie->si_binddn ) {
+ ch_free( sie->si_binddn );
+ }
+ if ( sie->si_passwd ) {
+ ch_free( sie->si_passwd );
+ }
+ if ( sie->si_saslmech ) {
+ ch_free( sie->si_saslmech );
+ }
+ if ( sie->si_secprops ) {
+ ch_free( sie->si_secprops );
+ }
+ if ( sie->si_realm ) {
+ ch_free( sie->si_realm );
+ }
+ if ( sie->si_authcId ) {
+ ch_free( sie->si_authcId );
+ }
+ if ( sie->si_authzId ) {
+ ch_free( sie->si_authzId );
+ }
+ if ( sie->si_filterstr.bv_val ) {
+ ch_free( sie->si_filterstr.bv_val );
+ }
+ if ( sie->si_base.bv_val ) {
+ ch_free( sie->si_base.bv_val );
+ }
+ if ( sie->si_attrs ) {
+ int i = 0;
+ while ( sie->si_attrs[i] != NULL ) {
+ ch_free( sie->si_attrs[i] );
+ i++;
+ }
+ ch_free( sie->si_attrs );
+ }
+ if ( sie->si_exattrs ) {
+ int i = 0;
+ while ( sie->si_exattrs[i] != NULL ) {
+ ch_free( sie->si_exattrs[i] );
+ i++;
+ }
+ ch_free( sie->si_exattrs );
+ }
+ if ( sie->si_anlist ) {
+ int i = 0;
+ while ( sie->si_anlist[i].an_name.bv_val != NULL ) {
+ ch_free( sie->si_anlist[i].an_name.bv_val );
+ i++;
+ }
+ ch_free( sie->si_anlist );
+ }
+ if ( sie->si_exanlist ) {
+ int i = 0;
+ while ( sie->si_exanlist[i].an_name.bv_val != NULL ) {
+ ch_free( sie->si_exanlist[i].an_name.bv_val );
+ i++;
+ }
+ ch_free( sie->si_exanlist );
+ }
+ if ( sie->si_retryinterval ) {
+ ch_free( sie->si_retryinterval );
+ }
+ if ( sie->si_retrynum ) {
+ ch_free( sie->si_retrynum );
+ }
+ if ( sie->si_retrynum_init ) {
+ ch_free( sie->si_retrynum_init );
+ }
+ slap_sync_cookie_free( &sie->si_syncCookie, 0 );
+ if ( sie->si_syncUUID_ndn.bv_val ) {
+ ch_free( sie->si_syncUUID_ndn.bv_val );
+ }
+ if ( sie->si_presentlist ) {
+ avl_free( sie->si_presentlist, avl_ber_bvfree );
+ }
+ if ( sie->si_ld ) {
+ ldap_ld_free( sie->si_ld, 1, NULL, NULL );
+ }
+ while ( !LDAP_LIST_EMPTY( &sie->si_nonpresentlist )) {
+ struct nonpresent_entry* npe;
+ npe = LDAP_LIST_FIRST( &sie->si_nonpresentlist );
+ LDAP_LIST_REMOVE( npe, npe_link );
+ if ( npe->npe_name ) {
+ if ( npe->npe_name->bv_val ) {
+ ch_free( npe->npe_name->bv_val );
+ }
+ ch_free( npe->npe_name );
+ }
+ if ( npe->npe_nname ) {
+ if ( npe->npe_nname->bv_val ) {
+ ch_free( npe->npe_nname->bv_val );
+ }
+ ch_free( npe->npe_nname );
+ }
+ ch_free( npe );
+ }
+ ch_free( sie );
+}