mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
Added referrals to gluestate.
This commit is contained in:
parent
bc9cee96a1
commit
1f28047ab5
@ -189,6 +189,8 @@ typedef struct glue_state {
|
|||||||
int nentries;
|
int nentries;
|
||||||
int matchlen;
|
int matchlen;
|
||||||
char *matched;
|
char *matched;
|
||||||
|
int nrefs;
|
||||||
|
struct berval **refs;
|
||||||
} glue_state;
|
} glue_state;
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -225,6 +227,27 @@ glue_back_response (
|
|||||||
gs->matchlen = len;
|
gs->matchlen = len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ref) {
|
||||||
|
int i, j, k;
|
||||||
|
struct berval **new;
|
||||||
|
|
||||||
|
for (i=0; ref[i]; i++);
|
||||||
|
|
||||||
|
j = gs->nrefs;
|
||||||
|
if (!j) {
|
||||||
|
new = ch_malloc ((i+1)*sizeof(struct berval *));
|
||||||
|
gs->nrefs = i;
|
||||||
|
} else {
|
||||||
|
new = ch_realloc(gs->refs,
|
||||||
|
(j+i+1)*sizeof(struct berval *));
|
||||||
|
}
|
||||||
|
for (k=0; k<i; j++,k++) {
|
||||||
|
new[j] = ber_bvdup(ref[k]);
|
||||||
|
}
|
||||||
|
new[j] = NULL;
|
||||||
|
gs->nrefs = j;
|
||||||
|
gs->refs = new;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -267,8 +290,7 @@ glue_back_search (
|
|||||||
BackendDB *be;
|
BackendDB *be;
|
||||||
int i, rc, t2limit = 0, s2limit = 0;
|
int i, rc, t2limit = 0, s2limit = 0;
|
||||||
long stoptime = 0;
|
long stoptime = 0;
|
||||||
glue_state gs =
|
glue_state gs = {0};
|
||||||
{0};
|
|
||||||
|
|
||||||
|
|
||||||
if (tlimit)
|
if (tlimit)
|
||||||
@ -391,11 +413,13 @@ glue_back_search (
|
|||||||
op->o_response = NULL;
|
op->o_response = NULL;
|
||||||
op->o_glue = NULL;
|
op->o_glue = NULL;
|
||||||
|
|
||||||
send_search_result (conn, op, gs.err, gs.matched, NULL, NULL,
|
send_search_result (conn, op, gs.err, gs.matched, NULL, gs.refs,
|
||||||
NULL, gs.nentries);
|
NULL, gs.nentries);
|
||||||
done:
|
done:
|
||||||
if (gs.matched)
|
if (gs.matched)
|
||||||
free (gs.matched);
|
free (gs.matched);
|
||||||
|
if (gs.refs)
|
||||||
|
ber_bvecfree(gs.refs);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user