Re: (ITS#8911) Open LDAP 2.4 MMR with delta-sync replication
by hyc@symas.com
The ITS is for bug reports not help requests. Use the openldap-technical mailing list.
sakshi.mittal(a)india.nec.com wrote:
> Full_Name: Sakshi Mittal
> Version: 2.4.44
> OS: Centos7
> URL: ftp://ftp.openldap.org/incoming/
> Submission from: (NULL) (14.140.114.207)
>
>
> We are trying to setup MMR with delta sync replication in OpenLDAP 2.4.44.
>
> We have two provider servers and 2 consumer servers. We have setup delta sync
> replication between the provider and consumer servers.
> Now we want to configure MMR between the two provider servers.
> But it does not seem to work together with delta sync.
>
> I have tried setting up MMR separately and it works also delta sync replication
> also works separately.
>
> Can you please help in configuring the two together also please let me know if
> this is even possible. As on some sites it is written that OpenLDAP 2.4 does not
> support MMR together with delta-sync replication.
>
> Please confirm.
>
>
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/
5 years, 3 months
(ITS#8911) Open LDAP 2.4 MMR with delta-sync replication
by sakshi.mittal@india.nec.com
Full_Name: Sakshi Mittal
Version: 2.4.44
OS: Centos7
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (14.140.114.207)
We are trying to setup MMR with delta sync replication in OpenLDAP 2.4.44.
We have two provider servers and 2 consumer servers. We have setup delta sync
replication between the provider and consumer servers.
Now we want to configure MMR between the two provider servers.
But it does not seem to work together with delta sync.
I have tried setting up MMR separately and it works also delta sync replication
also works separately.
Can you please help in configuring the two together also please let me know if
this is even possible. As on some sites it is written that OpenLDAP 2.4 does not
support MMR together with delta-sync replication.
Please confirm.
5 years, 3 months
Re: (ITS#8908) LMDB Documentation for MDB_XXX_MULTIPLE
by karl@waclawek.net
--000000000000a517d40574956804
Content-Type: text/plain; charset="UTF-8"
Thanks!
On Wed, Aug 29, 2018, 12:05 Howard Chu, <hyc(a)symas.com> wrote:
> karl(a)waclawek.net wrote:
> > --00000000000018b43a057492d87f
> > Content-Type: text/plain; charset="UTF-8"
> >
> > As far as point 2 is concerned I was basing it on this piece of code,
> where
> > it looks like MDB_GET_MULTIPLE just checks some flags and then goes to
> the
> > fetchm label where the code does nothing but retrieve data:
>
> You're not reading the code correctly. See below.
> >
> > case MDB_GET_MULTIPLE:
> > if (data == NULL || !(mc->mc_flags & C_INITIALIZED)) {
> > rc = EINVAL;
> > break;
> > }
> > if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) {
> > rc = MDB_INCOMPATIBLE;
> > break;
> > }
> > rc = MDB_SUCCESS;
> > if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) ||
> > (mc->mc_xcursor->mx_cursor.mc_flags & C_EOF))
> > break;
> > goto fetchm;
> > case MDB_NEXT_MULTIPLE:
> > if (data == NULL) {
> > rc = EINVAL;
> > break;
> > }
> > if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) {
> > rc = MDB_INCOMPATIBLE;
> > break;
> > }
> > rc = mdb_cursor_next(mc, key, data, MDB_NEXT_DUP);
> > if (rc == MDB_SUCCESS) {
> > if (mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) {
> > MDB_cursor *mx;
> > fetchm:
> > mx = &mc->mc_xcursor->mx_cursor;
> > data->mv_size = NUMKEYS(mx->mc_pg[mx->mc_top]) *
> > mx->mc_db->md_pad;
> > data->mv_data = METADATA(mx->mc_pg[mx->mc_top]);
> > mx->mc_ki[mx->mc_top] = NUMKEYS(mx->mc_pg[mx->mc_top])-1;
>
> ^^^ this line advances the cursor.
>
> > } else {
> > rc = MDB_NOTFOUND;
> > }
> > }
> > break;
> >
> >
> > On Tue, Aug 28, 2018 at 8:26 PM Howard Chu <openldap-its(a)openldap.org>
> > wrote:
> >
> >>> Full_Name: Karl Waclawek
> >>> Version: LMDB 0.9.22
> >>> OS: Windows 10
> >>> URL: ftp://ftp.openldap.org/incoming/
> >>> Submission from: (NULL) (2607:fea8:7a80:814:3ca9:e8f6:801c:d6f8)
> >>>
> >>>
> >>> The documentation in lmdb.h for MDB_GET_MULTIPLE, MDB_NEXT_MULTIPLE and
> >>> MDB_PREV_MULTIPLE seems to have two issues:
> >>>
> >>> 1) The documentation indicates that both, the key and data, are
> >> returned, but
> >> in
> >>> reality only the data is returned.
> >>
> >> Looks like you're right. Since these are DUPs the key would be the same
> >> every time so there's no need to return it on each call.
> >> Doc fixed in git mdb.master.
> >>
> >>> 2) The documentation states that MDB_GET_MULTIPLE moves the cursor.
> This
> >> does
> >>> not seem to be true.
> >>
> >> The doc is correct here. The cursor is advanced far enough that a
> >> MDB_NEXT_MULTIPLE will return the following data, as opposed to just
> >> returning the same data again.
> >>
> >
>
>
>
> --
> -- Howard Chu
> CTO, Symas Corp. http://www.symas.com
> Director, Highland Sun http://highlandsun.com/hyc/
> Chief Architect, OpenLDAP http://www.openldap.org/project/
>
--000000000000a517d40574956804
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"auto">Thanks!</div><br><div class=3D"gmail_quote"><div dir=3D"l=
tr">On Wed, Aug 29, 2018, 12:05 Howard Chu, <<a href=3D"mailto:hyc@symas=
.com">hyc(a)symas.com</a>> wrote:<br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">=
<a href=3D"mailto:karl@waclawek.net" target=3D"_blank" rel=3D"noreferrer">k=
arl(a)waclawek.net</a> wrote:<br>
> --00000000000018b43a057492d87f<br>
> Content-Type: text/plain; charset=3D"UTF-8"<br>
> <br>
> As far as point 2 is concerned I was basing it on this piece of code, =
where<br>
> it looks like MDB_GET_MULTIPLE just checks some flags and then goes to=
the<br>
> fetchm label where the code does nothing but retrieve data:<br>
<br>
You're not reading the code correctly. See below.<br>
> <br>
> case MDB_GET_MULTIPLE:<br>
> if (data =3D=3D NULL || !(mc->mc_flags & C_INITIALIZED)) {<br>
> rc =3D EINVAL;<br>
> break;<br>
> }<br>
> if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) {<br>
> rc =3D MDB_INCOMPATIBLE;<br>
> break;<br>
> }<br>
> rc =3D MDB_SUCCESS;<br>
> if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) ||=
<br>
> (mc->mc_xcursor->mx_cursor.mc_flags & C_EOF))<br>
> break;<br>
> goto fetchm;<br>
> case MDB_NEXT_MULTIPLE:<br>
> if (data =3D=3D NULL) {<br>
> rc =3D EINVAL;<br>
> break;<br>
> }<br>
> if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) {<br>
> rc =3D MDB_INCOMPATIBLE;<br>
> break;<br>
> }<br>
> rc =3D mdb_cursor_next(mc, key, data, MDB_NEXT_DUP);<br>
> if (rc =3D=3D MDB_SUCCESS) {<br>
> if (mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) {<br=
>
> MDB_cursor *mx;<br>
> fetchm:<br>
> mx =3D &mc->mc_xcursor->mx_cursor;<br>
> data->mv_size =3D NUMKEYS(mx->mc_pg[mx->mc_top]) *<br>
> mx->mc_db->md_pad;<br>
> data->mv_data =3D METADATA(mx->mc_pg[mx->mc_top]);<br>
> mx->mc_ki[mx->mc_top] =3D NUMKEYS(mx->mc_pg[mx->mc_top])-1=
;<br>
<br>
^^^ this line advances the cursor.<br>
<br>
> } else {<br>
> rc =3D MDB_NOTFOUND;<br>
> }<br>
> }<br>
> break;<br>
> <br>
> <br>
> On Tue, Aug 28, 2018 at 8:26 PM Howard Chu <<a href=3D"mailto:openl=
dap-its(a)openldap.org" target=3D"_blank" rel=3D"noreferrer">openldap-its@ope=
nldap.org</a>><br>
> wrote:<br>
> <br>
>>> Full_Name: Karl Waclawek<br>
>>> Version: LMDB 0.9.22<br>
>>> OS: Windows 10<br>
>>> URL: <a href=3D"ftp://ftp.openldap.org/incoming/" rel=3D"noref=
errer noreferrer" target=3D"_blank">ftp://ftp.openldap.org/incoming/</a><br=
>
>>> Submission from: (NULL) (2607:fea8:7a80:814:3ca9:e8f6:801c:d6f=
8)<br>
>>><br>
>>><br>
>>> The documentation in lmdb.h for MDB_GET_MULTIPLE, MDB_NEXT_MUL=
TIPLE and<br>
>>> MDB_PREV_MULTIPLE seems to have two issues:<br>
>>><br>
>>> 1) The documentation indicates that both, the key and data, ar=
e<br>
>> returned, but<br>
>> in<br>
>>> reality only the data is returned.<br>
>><br>
>> Looks like you're right. Since these are DUPs the key would be=
the same<br>
>> every time so there's no need to return it on each call.<br>
>> Doc fixed in git mdb.master.<br>
>><br>
>>> 2) The documentation states that MDB_GET_MULTIPLE moves the cu=
rsor. This<br>
>> does<br>
>>> not seem to be true.<br>
>><br>
>> The doc is correct here. The cursor is advanced far enough that a<=
br>
>> MDB_NEXT_MULTIPLE will return the following data, as opposed to ju=
st<br>
>> returning the same data again.<br>
>><br>
> <br>
<br>
<br>
<br>
-- <br>
=C2=A0 =C2=A0-- Howard Chu<br>
=C2=A0 =C2=A0CTO, Symas Corp.=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<a hr=
ef=3D"http://www.symas.com" rel=3D"noreferrer noreferrer" target=3D"_blank"=
>http://www.symas.com</a><br>
=C2=A0 =C2=A0Director, Highland Sun=C2=A0 =C2=A0 =C2=A0<a href=3D"http://hi=
ghlandsun.com/hyc/" rel=3D"noreferrer noreferrer" target=3D"_blank">http://=
highlandsun.com/hyc/</a><br>
=C2=A0 =C2=A0Chief Architect, OpenLDAP=C2=A0 <a href=3D"http://www.openldap=
.org/project/" rel=3D"noreferrer noreferrer" target=3D"_blank">http://www.o=
penldap.org/project/</a><br>
</blockquote></div>
--000000000000a517d40574956804--
5 years, 3 months
Re: (ITS#8908) LMDB Documentation for MDB_XXX_MULTIPLE
by hyc@symas.com
karl(a)waclawek.net wrote:
> --00000000000018b43a057492d87f
> Content-Type: text/plain; charset="UTF-8"
>
> As far as point 2 is concerned I was basing it on this piece of code, where
> it looks like MDB_GET_MULTIPLE just checks some flags and then goes to the
> fetchm label where the code does nothing but retrieve data:
You're not reading the code correctly. See below.
>
> case MDB_GET_MULTIPLE:
> if (data == NULL || !(mc->mc_flags & C_INITIALIZED)) {
> rc = EINVAL;
> break;
> }
> if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) {
> rc = MDB_INCOMPATIBLE;
> break;
> }
> rc = MDB_SUCCESS;
> if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) ||
> (mc->mc_xcursor->mx_cursor.mc_flags & C_EOF))
> break;
> goto fetchm;
> case MDB_NEXT_MULTIPLE:
> if (data == NULL) {
> rc = EINVAL;
> break;
> }
> if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) {
> rc = MDB_INCOMPATIBLE;
> break;
> }
> rc = mdb_cursor_next(mc, key, data, MDB_NEXT_DUP);
> if (rc == MDB_SUCCESS) {
> if (mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) {
> MDB_cursor *mx;
> fetchm:
> mx = &mc->mc_xcursor->mx_cursor;
> data->mv_size = NUMKEYS(mx->mc_pg[mx->mc_top]) *
> mx->mc_db->md_pad;
> data->mv_data = METADATA(mx->mc_pg[mx->mc_top]);
> mx->mc_ki[mx->mc_top] = NUMKEYS(mx->mc_pg[mx->mc_top])-1;
^^^ this line advances the cursor.
> } else {
> rc = MDB_NOTFOUND;
> }
> }
> break;
>
>
> On Tue, Aug 28, 2018 at 8:26 PM Howard Chu <openldap-its(a)openldap.org>
> wrote:
>
>>> Full_Name: Karl Waclawek
>>> Version: LMDB 0.9.22
>>> OS: Windows 10
>>> URL: ftp://ftp.openldap.org/incoming/
>>> Submission from: (NULL) (2607:fea8:7a80:814:3ca9:e8f6:801c:d6f8)
>>>
>>>
>>> The documentation in lmdb.h for MDB_GET_MULTIPLE, MDB_NEXT_MULTIPLE and
>>> MDB_PREV_MULTIPLE seems to have two issues:
>>>
>>> 1) The documentation indicates that both, the key and data, are
>> returned, but
>> in
>>> reality only the data is returned.
>>
>> Looks like you're right. Since these are DUPs the key would be the same
>> every time so there's no need to return it on each call.
>> Doc fixed in git mdb.master.
>>
>>> 2) The documentation states that MDB_GET_MULTIPLE moves the cursor. This
>> does
>>> not seem to be true.
>>
>> The doc is correct here. The cursor is advanced far enough that a
>> MDB_NEXT_MULTIPLE will return the following data, as opposed to just
>> returning the same data again.
>>
>
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/
5 years, 3 months
Re: (ITS#8908) LMDB Documentation for MDB_XXX_MULTIPLE
by karl@waclawek.net
--00000000000018b43a057492d87f
Content-Type: text/plain; charset="UTF-8"
As far as point 2 is concerned I was basing it on this piece of code, where
it looks like MDB_GET_MULTIPLE just checks some flags and then goes to the
fetchm label where the code does nothing but retrieve data:
case MDB_GET_MULTIPLE:
if (data == NULL || !(mc->mc_flags & C_INITIALIZED)) {
rc = EINVAL;
break;
}
if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) {
rc = MDB_INCOMPATIBLE;
break;
}
rc = MDB_SUCCESS;
if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) ||
(mc->mc_xcursor->mx_cursor.mc_flags & C_EOF))
break;
goto fetchm;
case MDB_NEXT_MULTIPLE:
if (data == NULL) {
rc = EINVAL;
break;
}
if (!(mc->mc_db->md_flags & MDB_DUPFIXED)) {
rc = MDB_INCOMPATIBLE;
break;
}
rc = mdb_cursor_next(mc, key, data, MDB_NEXT_DUP);
if (rc == MDB_SUCCESS) {
if (mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) {
MDB_cursor *mx;
fetchm:
mx = &mc->mc_xcursor->mx_cursor;
data->mv_size = NUMKEYS(mx->mc_pg[mx->mc_top]) *
mx->mc_db->md_pad;
data->mv_data = METADATA(mx->mc_pg[mx->mc_top]);
mx->mc_ki[mx->mc_top] = NUMKEYS(mx->mc_pg[mx->mc_top])-1;
} else {
rc = MDB_NOTFOUND;
}
}
break;
On Tue, Aug 28, 2018 at 8:26 PM Howard Chu <openldap-its(a)openldap.org>
wrote:
> > Full_Name: Karl Waclawek
> > Version: LMDB 0.9.22
> > OS: Windows 10
> > URL: ftp://ftp.openldap.org/incoming/
> > Submission from: (NULL) (2607:fea8:7a80:814:3ca9:e8f6:801c:d6f8)
> >
> >
> > The documentation in lmdb.h for MDB_GET_MULTIPLE, MDB_NEXT_MULTIPLE and
> > MDB_PREV_MULTIPLE seems to have two issues:
> >
> > 1) The documentation indicates that both, the key and data, are
> returned, but
> in
> > reality only the data is returned.
>
> Looks like you're right. Since these are DUPs the key would be the same
> every time so there's no need to return it on each call.
> Doc fixed in git mdb.master.
>
> > 2) The documentation states that MDB_GET_MULTIPLE moves the cursor. This
> does
> > not seem to be true.
>
> The doc is correct here. The cursor is advanced far enough that a
> MDB_NEXT_MULTIPLE will return the following data, as opposed to just
> returning the same data again.
>
--00000000000018b43a057492d87f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr">As far as point 2 is concerned I was basi=
ng it on this piece of code, where it looks like MDB_GET_MULTIPLE just chec=
ks some flags and then goes to the fetchm label where the code does nothing=
but retrieve data:<div><br></div><div><div><font face=3D"monospace, monosp=
ace"><span style=3D"white-space:pre"> </span>case MDB_GET_MULTIPLE:</font><=
/div><div><font face=3D"monospace, monospace"><span style=3D"white-space:pr=
e"> </span>if (data =3D=3D NULL || !(mc->mc_flags & C_INITIALIZED))=
{</font></div><div><font face=3D"monospace, monospace"><span style=3D"whit=
e-space:pre"> </span>rc =3D EINVAL;</font></div><div><font face=3D"monosp=
ace, monospace"><span style=3D"white-space:pre"> </span>break;</font></di=
v><div><font face=3D"monospace, monospace"><span style=3D"white-space:pre">=
</span>}</font></div><div><font face=3D"monospace, monospace"><span style=
=3D"white-space:pre"> </span>if (!(mc->mc_db->md_flags & MDB_DUP=
FIXED)) {</font></div><div><font face=3D"monospace, monospace"><span style=
=3D"white-space:pre"> </span>rc =3D MDB_INCOMPATIBLE;</font></div><div><f=
ont face=3D"monospace, monospace"><span style=3D"white-space:pre"> </span=
>break;</font></div><div><font face=3D"monospace, monospace"><span style=3D=
"white-space:pre"> </span>}</font></div><div><font face=3D"monospace, mono=
space"><span style=3D"white-space:pre"> </span>rc =3D MDB_SUCCESS;</font><=
/div><div><font face=3D"monospace, monospace"><span style=3D"white-space:pr=
e"> </span>if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALI=
ZED) ||</font></div><div><font face=3D"monospace, monospace"><span style=3D=
"white-space:pre"> </span>(mc->mc_xcursor->mx_cursor.mc_flags &=
C_EOF))</font></div><div><font face=3D"monospace, monospace"><span style=
=3D"white-space:pre"> </span>break;</font></div><div><font face=3D"monosp=
ace, monospace"><span style=3D"white-space:pre"> </span>goto fetchm;</font=
></div><div><font face=3D"monospace, monospace"><span style=3D"white-space:=
pre"> </span>case MDB_NEXT_MULTIPLE:</font></div><div><font face=3D"monospa=
ce, monospace"><span style=3D"white-space:pre"> </span>if (data =3D=3D NUL=
L) {</font></div><div><font face=3D"monospace, monospace"><span style=3D"wh=
ite-space:pre"> </span>rc =3D EINVAL;</font></div><div><font face=3D"mono=
space, monospace"><span style=3D"white-space:pre"> </span>break;</font></=
div><div><font face=3D"monospace, monospace"><span style=3D"white-space:pre=
"> </span>}</font></div><div><font face=3D"monospace, monospace"><span sty=
le=3D"white-space:pre"> </span>if (!(mc->mc_db->md_flags & MDB_D=
UPFIXED)) {</font></div><div><font face=3D"monospace, monospace"><span styl=
e=3D"white-space:pre"> </span>rc =3D MDB_INCOMPATIBLE;</font></div><div><=
font face=3D"monospace, monospace"><span style=3D"white-space:pre"> </spa=
n>break;</font></div><div><font face=3D"monospace, monospace"><span style=
=3D"white-space:pre"> </span>}</font></div><div><font face=3D"monospace, m=
onospace"><span style=3D"white-space:pre"> </span>rc =3D mdb_cursor_next(m=
c, key, data, MDB_NEXT_DUP);</font></div><div><font face=3D"monospace, mono=
space"><span style=3D"white-space:pre"> </span>if (rc =3D=3D MDB_SUCCESS) =
{</font></div><div><font face=3D"monospace, monospace"><span style=3D"white=
-space:pre"> </span>if (mc->mc_xcursor->mx_cursor.mc_flags & C_=
INITIALIZED) {</font></div><div><font face=3D"monospace, monospace"><span s=
tyle=3D"white-space:pre"> </span>MDB_cursor *mx;</font></div><div><font =
face=3D"monospace, monospace">fetchm:</font></div><div><font face=3D"monosp=
ace, monospace"><span style=3D"white-space:pre"> </span>mx =3D &mc-&=
gt;mc_xcursor->mx_cursor;</font></div><div><font face=3D"monospace, mono=
space"><span style=3D"white-space:pre"> </span>data->mv_size =3D NUMK=
EYS(mx->mc_pg[mx->mc_top]) *</font></div><div><font face=3D"monospace=
, monospace"><span style=3D"white-space:pre"> </span>mx->mc_db->m=
d_pad;</font></div><div><font face=3D"monospace, monospace"><span style=3D"=
white-space:pre"> </span>data->mv_data =3D METADATA(mx->mc_pg[mx-&=
gt;mc_top]);</font></div><div><font face=3D"monospace, monospace"><span sty=
le=3D"white-space:pre"> </span>mx->mc_ki[mx->mc_top] =3D NUMKEYS(m=
x->mc_pg[mx->mc_top])-1;</font></div><div><font face=3D"monospace, mo=
nospace"><span style=3D"white-space:pre"> </span>} else {</font></div><di=
v><font face=3D"monospace, monospace"><span style=3D"white-space:pre"> <=
/span>rc =3D MDB_NOTFOUND;</font></div><div><font face=3D"monospace, monosp=
ace"><span style=3D"white-space:pre"> </span>}</font></div><div><font fac=
e=3D"monospace, monospace"><span style=3D"white-space:pre"> </span>}</font=
></div><div><font face=3D"monospace, monospace"><span style=3D"white-space:=
pre"> </span>break;</font></div></div><div><br></div></div></div><br><div =
class=3D"gmail_quote"><div dir=3D"ltr">On Tue, Aug 28, 2018 at 8:26 PM Howa=
rd Chu <<a href=3D"mailto:openldap-its@openldap.org">openldap-its@openld=
ap.org</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> Full_Nam=
e: Karl Waclawek<br>
> Version: LMDB 0.9.22<br>
> OS: Windows 10<br>
> URL: <a href=3D"ftp://ftp.openldap.org/incoming/" rel=3D"noreferrer" t=
arget=3D"_blank">ftp://ftp.openldap.org/incoming/</a><br>
> Submission from: (NULL) (2607:fea8:7a80:814:3ca9:e8f6:801c:d6f8)<br>
> <br>
> <br>
> The documentation in lmdb.h for MDB_GET_MULTIPLE, MDB_NEXT_MULTIPLE an=
d<br>
> MDB_PREV_MULTIPLE seems to have two issues:<br>
> <br>
> 1) The documentation indicates that both, the key and data, are return=
ed, but<br>
in<br>
> reality only the data is returned.<br>
<br>
Looks like you're right. Since these are DUPs the key would be the same=
<br>
every time so there's no need to return it on each call.<br>
Doc fixed in git mdb.master.<br>
<br>
> 2) The documentation states that MDB_GET_MULTIPLE moves the cursor. Th=
is does<br>
> not seem to be true.<br>
<br>
The doc is correct here. The cursor is advanced far enough that a<br>
MDB_NEXT_MULTIPLE will return the following data, as opposed to just<br>
returning the same data again.<br>
</blockquote></div>
--00000000000018b43a057492d87f--
5 years, 3 months
Re: (ITS#8909) "authz-policy all" works as "authz-policy any", possibly yielding unauthorized access
by hyc@symas.com
Guilhem Moulin wrote:
> On Wed, 29 Aug 2018 at 01:14:51 +0100, Howard Chu wrote:
>> Thanks for the report. Looks like this has been present since commit
>> 113727ba. Fixed now in git master
>
> Thanks for the quick fix! Not sure why rc's value is preserved here but
> set to LDAP_INAPPROPRIATE_AUTH in all other failing cases, though. But
> that doesn't seem to matter beside debug logs now showing a return value
> other than 48, disclosing the actual reason of the failure; for instance
>
> <== slap_sasl_authorized: return 16
> SASL Proxy Authorize [conn=1022]: proxy authorization disallowed (16)
>
> for a missing authTo under authz-policy "all".
>
Probably not a bad thing overall, but for consistency it's now patched
to set INAPPROPRIATE_AUTH as with the other cases.
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/
5 years, 3 months
Re: (ITS#8909) "authz-policy all" works as "authz-policy any", possibly yielding unauthorized access
by guilhem@fripost.org
On Wed, 29 Aug 2018 at 01:14:51 +0100, Howard Chu wrote:
> Thanks for the report. Looks like this has been present since commit
> 113727ba. Fixed now in git master
Thanks for the quick fix! Not sure why rc's value is preserved here but
set to LDAP_INAPPROPRIATE_AUTH in all other failing cases, though. But
that doesn't seem to matter beside debug logs now showing a return value
other than 48, disclosing the actual reason of the failure; for instance
<== slap_sasl_authorized: return 16
SASL Proxy Authorize [conn=1022]: proxy authorization disallowed (16)
for a missing authTo under authz-policy "all".
--
Guilhem.
5 years, 3 months
Re: (ITS#8908) LMDB Documentation for MDB_XXX_MULTIPLE
by Howard Chu
> Full_Name: Karl Waclawek
> Version: LMDB 0.9.22
> OS: Windows 10
> URL: ftp://ftp.openldap.org/incoming/
> Submission from: (NULL) (2607:fea8:7a80:814:3ca9:e8f6:801c:d6f8)
>
>
> The documentation in lmdb.h for MDB_GET_MULTIPLE, MDB_NEXT_MULTIPLE and
> MDB_PREV_MULTIPLE seems to have two issues:
>
> 1) The documentation indicates that both, the key and data, are returned, but
in
> reality only the data is returned.
Looks like you're right. Since these are DUPs the key would be the same
every time so there's no need to return it on each call.
Doc fixed in git mdb.master.
> 2) The documentation states that MDB_GET_MULTIPLE moves the cursor. This does
> not seem to be true.
The doc is correct here. The cursor is advanced far enough that a
MDB_NEXT_MULTIPLE will return the following data, as opposed to just
returning the same data again.
5 years, 3 months