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
9defbabe
Commit
9defbabe
authored
Jan 26, 2009
by
Quanah Gibson-Mount
Browse files
ITS#5881
parent
2b16bd84
Changes
2
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
9defbabe
...
...
@@ -18,6 +18,7 @@ OpenLDAP 2.4.14 Engineering
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 syncrepl replication with referrals (ITS#5881)
Fixed slapd wake_sds close on Windows (ITS#5855)
Fixed slapd-bdb/hdb dncachesize handling (ITS#5860)
Fixed slapd-bdb/hdb RFC4528 control support (ITS#5861)
...
...
servers/slapd/syncrepl.c
View file @
9defbabe
...
...
@@ -343,7 +343,7 @@ ldap_sync_search(
{
BerElementBuffer
berbuf
;
BerElement
*
ber
=
(
BerElement
*
)
&
berbuf
;
LDAPControl
c
[
2
],
*
ctrls
[
3
];
LDAPControl
c
[
3
],
*
ctrls
[
4
];
int
rc
;
int
rhint
;
char
*
base
;
...
...
@@ -417,14 +417,19 @@ ldap_sync_search(
c
[
0
].
ldctl_iscritical
=
si
->
si_type
<
0
;
ctrls
[
0
]
=
&
c
[
0
];
c
[
1
].
ldctl_oid
=
LDAP_CONTROL_MANAGEDSAIT
;
BER_BVZERO
(
&
c
[
1
].
ldctl_value
);
c
[
1
].
ldctl_iscritical
=
1
;
ctrls
[
1
]
=
&
c
[
1
];
if
(
!
BER_BVISNULL
(
&
si
->
si_bindconf
.
sb_authzId
)
)
{
c
[
1
].
ldctl_oid
=
LDAP_CONTROL_PROXY_AUTHZ
;
c
[
1
].
ldctl_value
=
si
->
si_bindconf
.
sb_authzId
;
c
[
1
].
ldctl_iscritical
=
1
;
ctrls
[
1
]
=
&
c
[
1
];
ctrls
[
2
]
=
NULL
;
c
[
2
].
ldctl_oid
=
LDAP_CONTROL_PROXY_AUTHZ
;
c
[
2
].
ldctl_value
=
si
->
si_bindconf
.
sb_authzId
;
c
[
2
].
ldctl_iscritical
=
1
;
ctrls
[
2
]
=
&
c
[
2
];
ctrls
[
3
]
=
NULL
;
}
else
{
ctrls
[
1
]
=
NULL
;
ctrls
[
2
]
=
NULL
;
}
rc
=
ldap_search_ext
(
si
->
si_ld
,
base
,
scope
,
filter
,
attrs
,
attrsonly
,
...
...
@@ -583,6 +588,8 @@ do_syncrep1(
rc
=
LDAP_DEREF_NEVER
;
/* actually could allow DEREF_FINDING */
ldap_set_option
(
si
->
si_ld
,
LDAP_OPT_DEREF
,
&
rc
);
ldap_set_option
(
si
->
si_ld
,
LDAP_OPT_REFERRALS
,
LDAP_OPT_OFF
);
si
->
si_syncCookie
.
rid
=
si
->
si_rid
;
/* whenever there are multiple data sources possible, advertise sid */
...
...
@@ -1399,7 +1406,10 @@ reload:
if
(
!
si
->
si_ctype
||
!
si
->
si_retrynum
||
si
->
si_retrynum
[
i
]
==
RETRYNUM_TAIL
)
{
ldap_pvt_runqueue_remove
(
&
slapd_rq
,
rtask
);
if
(
si
->
si_re
)
{
ldap_pvt_runqueue_remove
(
&
slapd_rq
,
rtask
);
si
->
si_re
=
NULL
;
}
fail
=
RETRYNUM_TAIL
;
}
else
if
(
RETRYNUM_VALID
(
si
->
si_retrynum
[
i
]
)
)
{
if
(
si
->
si_retrynum
[
i
]
>
0
)
...
...
@@ -2086,6 +2096,7 @@ syncrepl_entry(
op
->
o_time
=
slap_get_time
();
op
->
ors_tlimit
=
SLAP_NO_LIMIT
;
op
->
ors_slimit
=
1
;
op
->
ors_limit
=
NULL
;
op
->
ors_attrs
=
slap_anlist_all_attributes
;
op
->
ors_attrsonly
=
0
;
...
...
@@ -2097,12 +2108,10 @@ syncrepl_entry(
dni
.
new_entry
=
entry
;
dni
.
modlist
=
modlist
;
if
(
limits_check
(
op
,
&
rs_search
)
==
0
)
{
rc
=
be
->
be_search
(
op
,
&
rs_search
);
Debug
(
LDAP_DEBUG_SYNC
,
"syncrepl_entry: %s be_search (%d)
\n
"
,
si
->
si_ridtxt
,
rc
,
0
);
}
rc
=
be
->
be_search
(
op
,
&
rs_search
);
Debug
(
LDAP_DEBUG_SYNC
,
"syncrepl_entry: %s be_search (%d)
\n
"
,
si
->
si_ridtxt
,
rc
,
0
);
if
(
!
BER_BVISNULL
(
&
op
->
ors_filterstr
)
)
{
slap_sl_free
(
op
->
ors_filterstr
.
bv_val
,
op
->
o_tmpmemctx
);
...
...
@@ -2579,6 +2588,8 @@ syncrepl_del_nonpresent(
an
[
0
].
an_desc
=
slap_schema
.
si_ad_entryUUID
;
op
->
ors_attrs
=
an
;
op
->
ors_slimit
=
SLAP_NO_LIMIT
;
op
->
ors_tlimit
=
SLAP_NO_LIMIT
;
op
->
ors_limit
=
NULL
;
op
->
ors_attrsonly
=
0
;
op
->
ors_filter
=
str2filter_x
(
op
,
si
->
si_filterstr
.
bv_val
);
/* In multimaster, updates can continue to arrive while
...
...
@@ -2613,9 +2624,8 @@ syncrepl_del_nonpresent(
}
op
->
o_nocaching
=
1
;
if
(
limits_check
(
op
,
&
rs_search
)
==
0
)
{
rc
=
be
->
be_search
(
op
,
&
rs_search
);
}
rc
=
be
->
be_search
(
op
,
&
rs_search
);
if
(
SLAP_MULTIMASTER
(
op
->
o_bd
))
{
op
->
ors_filter
=
of
;
}
...
...
@@ -3327,8 +3337,8 @@ dn_callback(
* stays co-located with the other mod opattrs. But only
* if we know there are other valid mods.
*/
if
(
old
->
a_desc
==
slap_schema
.
si_ad_modifiersName
&&
dni
->
mods
)
if
(
dni
->
mods
&&
(
old
->
a_desc
==
slap_schema
.
si_ad_modifiersName
||
old
->
a_desc
==
slap_schema
.
si_ad_modifyTimestamp
)
)
attr_cmp
(
op
,
NULL
,
new
,
&
modtail
,
&
ml
);
else
attr_cmp
(
op
,
old
,
new
,
&
modtail
,
&
ml
);
...
...
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