{
        struct ldapconn *lc;
        int             rc = 1,
-                       is_oc;
+                       is_oc,
+                       do_not_cache;
        struct berval   bdn;
        LDAPMessage     *result = NULL,
                        *e = NULL;
        int             do_retry = 1;
 
        /* Tell getconn this is a privileged op */
-       is_oc = op->o_do_not_cache;
+       do_not_cache = op->o_do_not_cache;
        op->o_do_not_cache = 1;
        lc = ldap_back_getconn( op, &rs );
        oconn = op->o_conn;
        op->o_conn = NULL;
        if ( !lc || !ldap_back_dobind( lc, op, &rs ) ) {
-               op->o_do_not_cache = is_oc;
+               op->o_do_not_cache = do_not_cache;
                op->o_conn = oconn;
                return 1;
        }
-       op->o_do_not_cache = is_oc;
+       op->o_do_not_cache = do_not_cache;
        op->o_conn = oconn;
 
        if ( at ) {
 
        op->o_callback = NULL;
 
        if ( lip->url == NULL ) {
+               /* if we parse the URI then by no means 
+                * we can cache stuff or reuse connections, 
+                * because in back-ldap there's no caching
+                * based on the URI value, which is supposed
+                * to be set once for all (correct?) */
+               op->o_do_not_cache = 1;
+
                /* FIXME: we're setting the URI of the first referral;
                 * what if there are more?  Is this something we should
                 * worry about? */