[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: back-dnssrv



I suspect the referral callback, which should prevent non-manageDsaIt
operations from getting to the other callbacks, has not yet updated
yet.

Kurt

At 11:06 PM 4/7/2003, Luke Howard wrote:

>back-dnssrv seems to be lately broken.
>
>First, I'm not quite sure what the purpose of the following 
>assertion is, but it crashes slapd for normal searches:
>
>        assert( get_manageDSAit( op ) );
>
>Should it perhaps be inverted? This is in dnssrv_back_search()
>and dnssrv_back_compare().
>
>Secondly, rs->sr_ref is uninitialized, which causes a further
>assertion failure in send_ldap_response().
>
>A fix would be as follows:
>
>lukeh@off/monk[1050]% cvs diff -u back-dnssrv/search.c
>Index: back-dnssrv/search.c
>===================================================================
>RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/back-dnssrv/search.c,v
>retrieving revision 1.24
>diff -u -r1.24 search.c
>--- back-dnssrv/search.c        30 Mar 2003 07:03:54 -0000      1.24
>+++ back-dnssrv/search.c        8 Apr 2003 06:04:02 -0000
>@@ -31,7 +31,7 @@
>        struct berval nrefdn = { 0, NULL };
>        BerVarray urls = NULL;
> 
>-       assert( get_manageDSAit( op ) );
>+//     assert( get_manageDSAit( op ) );
> 
>        if( ldap_dn2domain( op->o_req_dn.bv_val, &domain ) || domain == NULL ) {
>                rs->sr_err = LDAP_REFERRAL;
>@@ -39,6 +39,8 @@
>                send_ldap_result( op, rs );
>                goto done;
>        }
>+
>+       rs->sr_ref = NULL;
> 
>        Debug( LDAP_DEBUG_TRACE, "DNSSRV: dn=\"%s\" -> domain=\"%s\"\n",
>                op->o_req_dn.bv_len ? op->o_req_dn.bv_val : "", domain, 0 );
>
>regards,
>
>-- Luke
>--
>Luke Howard | PADL Software Pty Ltd | www.padl.com