I might have found the problem... here is what I believe is happening:

 - pbsadd.c calls control_readfile (in control.c) to look up its control

   if (control_readfile(&addresses,"control/pbsservers",0) != 1)
                die_control();

for this call to be successful, control_readfile must return a 1.



 - control_readfile calls control_ldap_search like this:

 if( (rc = control_ldap_search(fn, sa, flagme, 1)) > 0) {
     //if( flagme ) return 1;
     return 1;

to satisfy pbsadd.c's call, control_ldap_search must return >0 for
control_readfile to return a 1.

However......

control_ldap_search can never return a value >0 due to the following code:

int control_ldap_search
<code code code...>
  /* Search for the desired information in the database. Search below
ControlDN. */
  rc = qldap_lookup(q, filter.s, attr);

  #if 0    <-- never executed.... so we proceed directly to "CLEANUP" with
the zero return....
   /* Count the results, we must have exactly one dn! */
   <code code code....>
  #else
  CLEANUP;
   return 0; <-- zero always returned
  #endif


I am using qmail-ldap-1.03-20040301a-controls20040325.patch on a clean
system.....

 - Rich


Reply via email to