From: <svn...@op...> - 2009-04-27 20:41:45
|
Author: scriptor Date: Mon Apr 27 22:41:33 2009 New Revision: 5631 URL: http://www.opensync.org/changeset/5631 Log: Enter into loop only when there are more than 0 subentries. Based on a patch provided by Sven Anders (ANDURAS service solutions AG). Many thanks for the patch. Modified: plugins/ldap-sync/src/ldap_connect.c Modified: plugins/ldap-sync/src/ldap_connect.c ============================================================================== --- plugins/ldap-sync/src/ldap_connect.c Mon Apr 27 22:41:24 2009 (r5630) +++ plugins/ldap-sync/src/ldap_connect.c Mon Apr 27 22:41:33 2009 (r5631) @@ -1881,39 +1881,46 @@ } if (possible_subentries != NULL) { + int number_possible_subentries = ldap_count_entries(sinkenv->ld, possible_subentries); + #ifdef DEBUG_ldapdata_from_server - ldap_plugin_printf("There are %i subentries.", ldap_count_entries(sinkenv->ld, possible_subentries)); + ldap_plugin_printf("There are %i subentries.", number_possible_subentries); #endif - LDAPMessage *subentry_result = ldap_first_entry(sinkenv->ld, possible_subentries) ; - if (subentry_result == NULL) { - ldap_plugin_dump_ldap_error_message(sinkenv, entry->dn, subentry_filter, "ldap_first_entry()"); - } else { - for ( ; subentry_result ; subentry_result = ldap_next_entry(sinkenv->ld, subentry_result)) { - // keyattribute for subentries: "ou" - char *keyattr = (char *)"ou"; + + if (number_possible_subentries > 0) { + + + LDAPMessage *subentry_result = ldap_first_entry(sinkenv->ld, possible_subentries) ; + if (subentry_result == NULL) { + ldap_plugin_dump_ldap_error_message(sinkenv, entry->dn, subentry_filter, "ldap_first_entry()"); + } else { + for ( ; subentry_result ; subentry_result = ldap_next_entry(sinkenv->ld, subentry_result)) { + // keyattribute for subentries: "ou" + char *keyattr = (char *)"ou"; - ldap_entry *subentry = ldap_plugin_create_ldap_entry_from_LDAPMessage(ctx, sinkenv, subentry_result, keyattr, error); - if (subentry == NULL) { - osync_trace(TRACE_ERROR, "%s:%i: ERROR: ldap_plugin_create_ldap_entry_from_LDAPMessage() has failed. Skipping this subentry.\n", __FILE__, __LINE__); - continue; - } + ldap_entry *subentry = ldap_plugin_create_ldap_entry_from_LDAPMessage(ctx, sinkenv, subentry_result, keyattr, error); + if (subentry == NULL) { + osync_trace(TRACE_ERROR, "%s:%i: ERROR: ldap_plugin_create_ldap_entry_from_LDAPMessage() has failed. Skipping this subentry.\n", __FILE__, __LINE__); + continue; + } #ifdef DEBUG_ldapdata_from_server - ldap_plugin_printf("%s:%i:", __FILE__, __LINE__); - ldap_plugin_printf("\n\n-----------------"); + ldap_plugin_printf("%s:%i:", __FILE__, __LINE__); + ldap_plugin_printf("\n\n-----------------"); - ldap_plugin_printf("subentry->id: %s\nsubentry->dn: %s", subentry->id, subentry->dn); + ldap_plugin_printf("subentry->id: %s\nsubentry->dn: %s", subentry->id, subentry->dn); - // TODO - ldap_plugin_dump_ldap_attributes(subentry); - ldap_plugin_printf("-----------------\n"); + // TODO + ldap_plugin_dump_ldap_attributes(subentry); + ldap_plugin_printf("-----------------\n"); #endif - entry->subentries = g_list_append(entry->subentries, subentry); + entry->subentries = g_list_append(entry->subentries, subentry); - } // for ( ; subentry_result ; subentry_result = ldap_next_entry(sinkenv->ld, subentry_result)) - } // if (subentry_result == NULL) { } else { } + } // for ( ; subentry_result ; subentry_result = ldap_next_entry(sinkenv->ld, subentry_result)) + } // if (subentry_result == NULL) { } else { } + } // if (number_possible_subentries > 0) ldap_msgfree(possible_subentries); possible_subentries = NULL; |