 e93a135765
			
		
	
	e93a135765
	
	
	
		
			
			We start slapd in the foreground (-d0) but backgrounded in the shell, then we wait 4 seconds. This causes a race condition however. This commit makes the slapd-init script more robust and limits the wait to however many seconds (up to 30) that slapd needs to start service.
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh 
 | |
| # $Id$
 | |
| 
 | |
| srcdir=@srcdir@
 | |
| 
 | |
| rm -rf db schema
 | |
| mkdir db
 | |
| 
 | |
| # kill of old slapd if running
 | |
| sh "${srcdir}/slapd-stop" > /dev/null
 | |
| 
 | |
| SCHEMA_NEEDED="hdb core nis cosine inetorgperson openldap samba"
 | |
| 
 | |
| SCHEMA_PATHS="${srcdir}/../../lib/hdb ${srcdir} /etc/ldap/schema /etc/openldap/schema /private/etc/openldap/schema /usr/share/openldap/schema"
 | |
| 
 | |
| test -d schema || mkdir schema
 | |
| 
 | |
| # setup needed schema files
 | |
| for f in $SCHEMA_NEEDED; do
 | |
|     if [ ! -r schema/$f.schema ]; then
 | |
| 	for d in $SCHEMA_PATHS ; do
 | |
| 	    if [ -r $d/$f.schema ] ; then
 | |
| 		cp $d/$f.schema schema/$f.schema
 | |
| 		continue 2
 | |
| 	    fi
 | |
| 	done
 | |
| 	echo "SKIPPING TESTS: you need the following schema file: $f.schema"
 | |
| 	exit 1
 | |
|     fi
 | |
| done
 | |
| 
 | |
| touch modules.conf || exit 1
 | |
| 
 | |
| if ! slapadd -d 0 -f "${srcdir}/slapd.conf" < "${srcdir}/init.ldif"; then
 | |
|     echo "moduleload back_bdb.la"   >> modules.conf
 | |
|     if ! slapadd -d 0 -f "${srcdir}/slapd.conf" < "${srcdir}/init.ldif"; then
 | |
|         echo "modulepath /usr/lib/ldap"  > modules.conf
 | |
|         echo "moduleload back_bdb.la"   >> modules.conf
 | |
|         slapadd -d 0 -f "${srcdir}/slapd.conf" < "${srcdir}/init.ldif" || exit 1
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| cp "`which slapd`" . || true # fails if running
 | |
| 
 | |
| echo "starting slapd"
 | |
| ./slapd -d0 -f "${srcdir}/slapd.conf" -h ldapi://.%2Fldap-socket &
 | |
| slapd_pid=$!
 | |
| 
 | |
| tries=0
 | |
| while kill -0 $slapd_pid && [ ! -S ldap-socket ] && 
 | |
|       ! ldapsearch -l 2 -w '' -D '' -b "o=TEST,dc=H5L,dc=SE" -s base -H ldapi://.%2Fldap-socket >/dev/null &&
 | |
|       [ $tries -lt 30 ]; do
 | |
|     sleep 1
 | |
|     tries=`expr 1 + $tries`
 | |
| done
 | |
| 
 | |
| kill -0 $slapd_pid || exit 1
 | |
| [ -S ldap-socket ] || exit 1
 |