Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ingo Voss
OpenLDAP
Commits
afa19de2
Commit
afa19de2
authored
Apr 01, 2021
by
Ondřej Kuzník
Committed by
Quanah Gibson-Mount
Apr 12, 2021
Browse files
ITS#9295 Handle add+delete on a single-value attr
parent
08861212
Changes
3
Hide whitespace changes
Inline
Side-by-side
servers/slapd/syncrepl.c
View file @
afa19de2
...
...
@@ -2296,9 +2296,16 @@ syncrepl_accesslog_mods(
mod
->
sml_nvalues
=
NULL
;
mod
->
sml_numvals
=
0
;
/* Keep 'op' to reflect what we read out from accesslog */
if
(
op
==
LDAP_MOD_ADD
&&
is_at_single_value
(
ad
->
ad_type
))
mod
->
sml_op
=
LDAP_MOD_REPLACE
;
if
(
is_at_single_value
(
ad
->
ad_type
)
)
{
if
(
op
==
LDAP_MOD_ADD
)
{
/* ITS#9295 an ADD might conflict with an existing value */
mod
->
sml_op
=
LDAP_MOD_REPLACE
;
}
else
if
(
op
==
LDAP_MOD_DELETE
)
{
/* ITS#9295 the above REPLACE could invalidate subsequent
* DELETEs */
mod
->
sml_op
=
SLAP_MOD_SOFTDEL
;
}
}
*
modtail
=
mod
;
modtail
=
&
mod
->
sml_next
;
...
...
@@ -2556,6 +2563,7 @@ syncrepl_resolve_cb( Operation *op, SlapReply *rs )
continue
;
}
if
(
m2
->
sml_op
==
LDAP_MOD_DELETE
||
m2
->
sml_op
==
SLAP_MOD_SOFTDEL
||
m2
->
sml_op
==
LDAP_MOD_REPLACE
)
{
int
numvals
=
m2
->
sml_numvals
;
if
(
m2
->
sml_op
==
LDAP_MOD_REPLACE
)
...
...
@@ -2567,7 +2575,8 @@ drop:
op
->
o_tmpfree
(
m1
,
op
->
o_tmpmemctx
);
continue
;
}
if
(
m1
->
sml_op
==
LDAP_MOD_DELETE
)
{
if
(
m1
->
sml_op
==
LDAP_MOD_DELETE
||
m1
->
sml_op
==
SLAP_MOD_SOFTDEL
)
{
if
(
m1
->
sml_numvals
==
0
)
{
/* turn this to SOFTDEL later */
m1
->
sml_flags
=
SLAP_MOD_INTERNAL
;
...
...
tests/scripts/test043-delta-syncrepl
View file @
afa19de2
...
...
@@ -177,6 +177,17 @@ sn: Jones
-
add: sn
sn: Jones
-
add: displayName
displayName: The one
dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com
changetype: modify
add: displayName
displayName: James the First
-
delete: displayName
displayName: The one
dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
changetype: modify
...
...
tests/scripts/test063-delta-multiprovider
View file @
afa19de2
...
...
@@ -307,7 +307,9 @@ n=`expr $n + 1`
done
echo
"Using ldapadd to populate server 2..."
$LDAPADD
-D
"
$MANAGERDN
"
-H
$URI2
-w
$PASSWD
-f
$LDIFADD1
\
cp
$LDIFADD1
$TESTDIR
/add.ldif
echo
"displayName: The other"
>>
$TESTDIR
/add.ldif
$LDAPADD
-D
"
$MANAGERDN
"
-H
$URI2
-w
$PASSWD
-f
$TESTDIR
/add.ldif
\
>>
$TESTOUT
2>&1
RC
=
$?
if
test
$RC
!=
0
;
then
...
...
@@ -397,6 +399,12 @@ dn: $THEDN
changetype: modify
add: description
description: Amazing
-
add: displayName
displayName: James the Second
-
delete: displayName
displayName: The other
EOF
RC
=
$?
...
...
@@ -414,6 +422,12 @@ replace: employeetype
-
add: description
description: Stupendous
-
add: displayName
displayName: James II
-
delete: displayName
displayName: The other
EOF
RC
=
$?
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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