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
Joe Martin
OpenLDAP
Commits
79368206
Commit
79368206
authored
Jan 11, 2013
by
Howard Chu
Committed by
Quanah Gibson-Mount
Jan 26, 2013
Browse files
ITS#7473 check DN scope before fetching id2e
This is only a 10% gain, but still worth having for now.
parent
5fb54b68
Changes
2
Hide whitespace changes
Inline
Side-by-side
servers/slapd/back-mdb/dn2id.c
View file @
79368206
...
...
@@ -616,7 +616,7 @@ mdb_idscopes(
key
.
mv_data
=
&
id
;
rc
=
mdb_cursor_get
(
isc
->
mc
,
&
key
,
&
data
,
MDB_SET
);
if
(
rc
)
b
re
ak
;
re
turn
rc
;
/* save RDN info */
}
...
...
@@ -649,5 +649,5 @@ mdb_idscopes(
if
(
op
->
ors_scope
==
LDAP_SCOPE_ONELEVEL
)
break
;
}
return
MDB_
NOTFOUND
;
return
MDB_
SUCCESS
;
}
servers/slapd/back-mdb/search.c
View file @
79368206
...
...
@@ -634,42 +634,6 @@ loop_begin:
goto
done
;
}
if
(
id
==
base
->
e_id
)
{
e
=
base
;
}
else
{
/* get the entry */
rs
->
sr_err
=
mdb_id2edata
(
op
,
mci
,
id
,
&
edata
);
if
(
rs
->
sr_err
==
MDB_NOTFOUND
)
{
if
(
!
MDB_IDL_IS_RANGE
(
candidates
)
)
{
/* only complain for non-range IDLs */
Debug
(
LDAP_DEBUG_TRACE
,
LDAP_XSTRING
(
mdb_search
)
": candidate %ld not found
\n
"
,
(
long
)
id
,
0
,
0
);
}
else
{
/* get the next ID from the DB */
rs
->
sr_err
=
mdb_get_nextid
(
mci
,
&
cursor
);
if
(
rs
->
sr_err
==
MDB_NOTFOUND
)
{
break
;
}
if
(
rs
->
sr_err
)
{
rs
->
sr_err
=
LDAP_OTHER
;
rs
->
sr_text
=
"internal error in get_nextid"
;
send_ldap_result
(
op
,
rs
);
goto
done
;
}
cursor
--
;
}
goto
loop_continue
;
}
else
if
(
rs
->
sr_err
)
{
rs
->
sr_err
=
LDAP_OTHER
;
rs
->
sr_text
=
"internal error in mdb_id2edata"
;
send_ldap_result
(
op
,
rs
);
goto
done
;
}
}
/* Does this candidate actually satisfy the search scope?
*/
...
...
@@ -694,7 +658,15 @@ loop_begin:
/* Fall-thru */
case
LDAP_SCOPE_ONELEVEL
:
isc
.
id
=
id
;
if
(
mdb_idscopes
(
op
,
&
isc
)
==
MDB_SUCCESS
)
scopeok
=
1
;
isc
.
nscope
=
0
;
rs
->
sr_err
=
mdb_idscopes
(
op
,
&
isc
);
if
(
rs
->
sr_err
==
MDB_SUCCESS
)
{
if
(
isc
.
nscope
)
scopeok
=
1
;
}
else
{
if
(
rs
->
sr_err
==
MDB_NOTFOUND
)
goto
notfound
;
}
break
;
}
...
...
@@ -708,7 +680,43 @@ loop_begin:
goto
loop_continue
;
}
if
(
id
!=
base
->
e_id
)
{
if
(
id
==
base
->
e_id
)
{
e
=
base
;
}
else
{
/* get the entry */
rs
->
sr_err
=
mdb_id2edata
(
op
,
mci
,
id
,
&
edata
);
if
(
rs
->
sr_err
==
MDB_NOTFOUND
)
{
notfound:
if
(
!
MDB_IDL_IS_RANGE
(
candidates
)
)
{
/* only complain for non-range IDLs */
Debug
(
LDAP_DEBUG_TRACE
,
LDAP_XSTRING
(
mdb_search
)
": candidate %ld not found
\n
"
,
(
long
)
id
,
0
,
0
);
}
else
{
/* get the next ID from the DB */
rs
->
sr_err
=
mdb_get_nextid
(
mci
,
&
cursor
);
if
(
rs
->
sr_err
==
MDB_NOTFOUND
)
{
break
;
}
if
(
rs
->
sr_err
)
{
rs
->
sr_err
=
LDAP_OTHER
;
rs
->
sr_text
=
"internal error in get_nextid"
;
send_ldap_result
(
op
,
rs
);
goto
done
;
}
cursor
--
;
}
goto
loop_continue
;
}
else
if
(
rs
->
sr_err
)
{
rs
->
sr_err
=
LDAP_OTHER
;
rs
->
sr_text
=
"internal error in mdb_id2edata"
;
send_ldap_result
(
op
,
rs
);
goto
done
;
}
rs
->
sr_err
=
mdb_entry_decode
(
op
,
&
edata
,
&
e
);
if
(
rs
->
sr_err
)
{
rs
->
sr_err
=
LDAP_OTHER
;
...
...
Write
Preview
Markdown
is supported
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