Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joe Martin
OpenLDAP
Commits
2b16bd84
Commit
2b16bd84
authored
Jan 26, 2009
by
Quanah Gibson-Mount
Browse files
ITS
#5843
parent
45f82d69
Changes
3
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
2b16bd84
...
...
@@ -15,6 +15,7 @@ OpenLDAP 2.4.14 Engineering
Fixed slapd epoll handling (ITS#5886)
Fixed slapd syncrepl rename handling (ITS#5809)
Fixed slapd syncrepl MMR when adding new server (ITS#5850)
Fixed slapd syncrepl MMR with deleted entries (ITS#5843)
Fixed slapd syncrepl replication with glued DB (ITS#5866)
Fixed slapd syncrepl replication with moddn (ITS#5901)
Fixed slapd wake_sds close on Windows (ITS#5855)
...
...
servers/slapd/overlays/syncprov.c
View file @
2b16bd84
...
...
@@ -800,7 +800,7 @@ syncprov_sendresp( Operation *op, opcookie *opc, syncops *so,
rs
.
sr_entry
=
*
e
;
if
(
rs
.
sr_entry
->
e_private
)
rs
.
sr_flags
=
REP_ENTRY_MUSTRELEASE
;
if
(
opc
->
sreference
)
{
if
(
opc
->
sreference
&&
so
->
s_op
->
o_managedsait
<=
SLAP_CONTROL_IGNORED
)
{
rs
.
sr_ref
=
get_entry_referrals
(
op
,
rs
.
sr_entry
);
rs
.
sr_err
=
send_search_reference
(
op
,
&
rs
);
ber_bvarray_free
(
rs
.
sr_ref
);
...
...
@@ -823,7 +823,7 @@ syncprov_sendresp( Operation *op, opcookie *opc, syncops *so,
e_uuid
.
e_name
=
opc
->
sdn
;
e_uuid
.
e_nname
=
opc
->
sndn
;
rs
.
sr_entry
=
&
e_uuid
;
if
(
opc
->
sreference
)
{
if
(
opc
->
sreference
&&
so
->
s_op
->
o_managedsait
<=
SLAP_CONTROL_IGNORED
)
{
struct
berval
bv
=
BER_BVNULL
;
rs
.
sr_ref
=
&
bv
;
rs
.
sr_err
=
send_search_reference
(
op
,
&
rs
);
...
...
@@ -1949,6 +1949,7 @@ syncprov_detach_op( Operation *op, syncops *so, slap_overinst *on )
op2
->
o_time
=
op
->
o_time
;
op2
->
o_bd
=
on
->
on_info
->
oi_origdb
;
op2
->
o_request
=
op
->
o_request
;
op2
->
o_managedsait
=
op
->
o_managedsait
;
LDAP_SLIST_FIRST
(
&
op2
->
o_extra
)
->
oe_key
=
on
;
LDAP_SLIST_NEXT
(
LDAP_SLIST_FIRST
(
&
op2
->
o_extra
),
oe_next
)
=
NULL
;
...
...
@@ -2175,7 +2176,6 @@ syncprov_op_search( Operation *op, SlapReply *rs )
}
srs
=
op
->
o_controls
[
slap_cids
.
sc_LDAPsync
];
op
->
o_managedsait
=
SLAP_CONTROL_NONCRITICAL
;
/* If this is a persistent search, set it up right away */
if
(
op
->
o_sync_mode
&
SLAP_SYNC_PERSIST
)
{
...
...
servers/slapd/syncrepl.c
View file @
2b16bd84
...
...
@@ -2571,6 +2571,8 @@ syncrepl_del_nonpresent(
si
->
si_refreshDelete
^=
NP_DELETE_ONE
;
}
else
{
Filter
*
cf
,
*
of
;
Filter
mmf
[
2
];
AttributeAssertion
mmaa
;
memset
(
&
an
[
0
],
0
,
2
*
sizeof
(
AttributeName
)
);
an
[
0
].
an_name
=
slap_schema
.
si_ad_entryUUID
->
ad_cname
;
...
...
@@ -2581,30 +2583,29 @@ syncrepl_del_nonpresent(
op
->
ors_filter
=
str2filter_x
(
op
,
si
->
si_filterstr
.
bv_val
);
/* In multimaster, updates can continue to arrive while
* we're searching. Limit the search result to entries
* older than
all of our
cookie CSN
s
.
* older than
our newest
cookie CSN.
*/
if
(
SLAP_MULTIMASTER
(
op
->
o_bd
))
{
Filter
*
f
;
int
i
;
cf
=
op
->
o_tmpalloc
(
(
sc
->
numcsns
+
1
)
*
sizeof
(
Filter
)
+
sc
->
numcsns
*
sizeof
(
AttributeAssertion
),
op
->
o_tmpmemctx
);
f
=
cf
;
f
=
mmf
;
f
->
f_choice
=
LDAP_FILTER_AND
;
f
->
f_next
=
NULL
;
f
->
f_next
=
op
->
ors_filter
;
f
->
f_and
=
f
+
1
;
of
=
f
->
f_and
;
f
=
of
;
f
->
f_choice
=
LDAP_FILTER_LE
;
f
->
f_ava
=
&
mmaa
;
f
->
f_av_desc
=
slap_schema
.
si_ad_entryCSN
;
f
->
f_next
=
NULL
;
BER_BVZERO
(
&
f
->
f_av_value
);
for
(
i
=
0
;
i
<
sc
->
numcsns
;
i
++
)
{
f
=
of
;
f
->
f_choice
=
LDAP_FILTER_LE
;
f
->
f_ava
=
(
AttributeAssertion
*
)(
f
+
1
);
f
->
f_av_desc
=
slap_schema
.
si_ad_entryCSN
;
f
->
f_av_value
=
sc
->
ctxcsn
[
i
];
f
->
f_next
=
(
Filter
*
)(
f
->
f_ava
+
1
);
of
=
f
->
f_next
;
if
(
ber_bvcmp
(
&
sc
->
ctxcsn
[
i
],
&
f
->
f_av_value
)
>
0
)
f
->
f_av_value
=
sc
->
ctxcsn
[
i
];
}
f
->
f_next
=
op
->
ors_filter
;
of
=
op
->
ors_filter
;
op
->
ors_filter
=
c
f
;
op
->
ors_filter
=
mm
f
;
filter2bv_x
(
op
,
op
->
ors_filter
,
&
op
->
ors_filterstr
);
}
else
{
cf
=
NULL
;
...
...
@@ -2616,7 +2617,6 @@ syncrepl_del_nonpresent(
rc
=
be
->
be_search
(
op
,
&
rs_search
);
}
if
(
SLAP_MULTIMASTER
(
op
->
o_bd
))
{
op
->
o_tmpfree
(
cf
,
op
->
o_tmpmemctx
);
op
->
ors_filter
=
of
;
}
if
(
op
->
ors_filter
)
filter_free_x
(
op
,
op
->
ors_filter
,
1
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment