diff --git a/univention-ldap/conffiles/etc/ldap/slapd.conf.d/40univention-ldap-server_database b/univention-ldap/conffiles/etc/ldap/slapd.conf.d/40univention-ldap-server_database index d740833..491498d 100644 --- a/univention-ldap/conffiles/etc/ldap/slapd.conf.d/40univention-ldap-server_database +++ b/univention-ldap/conffiles/etc/ldap/slapd.conf.d/40univention-ldap-server_database @@ -78,7 +78,27 @@ for indexcombination in indexcombinations: attribs.append(attr) found_attribs.append(attr) if not attribs==[] and not indexes==[]: - print 'index\t%s %s'%(','.join(attribs),','.join(indexes)) + config_line = 'index\t%s %s' % (','.join(attribs),','.join(indexes)) + max_length = 2000 + if len(config_line) > max_length: + head = 'index\t ' + tail = ' %s'%(','.join(indexes)) + attributes="" + for attr in attribs: + if not attributes: + # regardless of max length we print at least one attribute per index line + attributes += '%s' % (attr) + else: + if len('%s%s,%s%s' % (head, attributes, attr, tail)) > max_length: + print '%s%s%s' %(head, attributes, tail) + attributes='%s' % (attr) + else: + attributes += ',%s' % (attr) + if attributes: + print '%s%s%s' %(head, attributes, tail) + attributes='' + else: + print config_line print for key in configRegistry.get("ldap/limits", "").split(";"):