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
Nadezhda Ivanova
OpenLDAP
Commits
67a64c29
Commit
67a64c29
authored
Dec 10, 2001
by
Howard Chu
Browse files
Fixed suffix DN_SUBTREE again. Index was still being written even though
it was not being read.
parent
b54df180
Changes
2
Hide whitespace changes
Inline
Side-by-side
servers/slapd/back-bdb/dn2id.c
View file @
67a64c29
...
...
@@ -77,24 +77,12 @@ bdb_dn2id_add(
pdn
,
rc
,
0
);
goto
done
;
}
pdn
[
-
1
]
=
DN_SUBTREE_PREFIX
;
rc
=
bdb_idl_insert_key
(
be
,
db
,
txn
,
&
key
,
e
->
e_id
);
if
(
rc
!=
0
)
{
Debug
(
LDAP_DEBUG_ANY
,
"=> bdb_dn2id_add: subtree (%s) insert failed: %d
\n
"
,
pdn
,
rc
,
0
);
goto
done
;
}
ptr
=
pdn
;
pdn
=
dn_parent
(
be
,
pdn
);
}
while
(
pdn
!=
NULL
)
{
if
(
be_issuffix
(
be
,
pdn
))
break
;
pdn
[
-
1
]
=
DN_SUBTREE_PREFIX
;
key
.
size
-=
pdn
-
ptr
;
key
.
data
=
pdn
-
1
;
rc
=
bdb_idl_insert_key
(
be
,
db
,
txn
,
&
key
,
e
->
e_id
);
...
...
@@ -106,6 +94,8 @@ bdb_dn2id_add(
}
ptr
=
pdn
;
pdn
=
dn_parent
(
be
,
pdn
);
key
.
size
-=
pdn
-
ptr
;
key
.
data
=
pdn
-
1
;
}
done:
...
...
@@ -173,25 +163,13 @@ bdb_dn2id_delete(
pdn
,
rc
,
0
);
goto
done
;
}
pdn
[
-
1
]
=
DN_SUBTREE_PREFIX
;
rc
=
bdb_idl_delete_key
(
be
,
db
,
txn
,
&
key
,
e
->
e_id
);
if
(
rc
!=
0
)
{
Debug
(
LDAP_DEBUG_ANY
,
"=> bdb_dn2id_delete: subtree (%s) delete failed: %d
\n
"
,
pdn
,
rc
,
0
);
goto
done
;
}
ptr
=
pdn
;
pdn
=
dn_parent
(
be
,
pdn
);
}
while
(
pdn
!=
NULL
)
{
if
(
be_issuffix
(
be
,
pdn
))
break
;
pdn
[
-
1
]
=
DN_SUBTREE_PREFIX
;
key
.
size
-=
pdn
-
ptr
;
key
.
data
=
pdn
-
1
;
rc
=
bdb_idl_delete_key
(
be
,
db
,
txn
,
&
key
,
e
->
e_id
);
if
(
rc
!=
0
)
{
...
...
@@ -202,6 +180,8 @@ bdb_dn2id_delete(
}
ptr
=
pdn
;
pdn
=
dn_parent
(
be
,
pdn
);
key
.
size
-=
pdn
-
ptr
;
key
.
data
=
pdn
-
1
;
}
done:
...
...
servers/slapd/back-ldbm/dn2id.c
View file @
67a64c29
...
...
@@ -26,6 +26,7 @@ dn2id_add(
int
rc
,
flags
;
DBCache
*
db
;
Datum
key
,
data
;
char
*
buf
,
*
ptr
,
*
pdn
;
#ifdef NEW_LOGGING
LDAP_LOG
((
"backend"
,
LDAP_LEVEL_ENTRY
,
...
...
@@ -51,8 +52,11 @@ dn2id_add(
ldbm_datum_init
(
key
);
key
.
dsize
=
strlen
(
dn
)
+
2
;
key
.
dptr
=
ch_malloc
(
key
.
dsize
);
sprintf
(
key
.
dptr
,
"%c%s"
,
DN_BASE_PREFIX
,
dn
);
buf
=
ch_malloc
(
key
.
dsize
);
key
.
dptr
=
buf
;
buf
[
0
]
=
DN_BASE_PREFIX
;
ptr
=
buf
+
1
;
strcpy
(
ptr
,
dn
);
ldbm_datum_init
(
data
);
data
.
dptr
=
(
char
*
)
&
id
;
...
...
@@ -61,46 +65,44 @@ dn2id_add(
flags
=
LDBM_INSERT
;
rc
=
ldbm_cache_store
(
db
,
key
,
data
,
flags
);
free
(
key
.
dptr
);
if
(
rc
!=
-
1
&&
!
be_issuffix
(
be
,
ptr
))
{
buf
[
0
]
=
DN_SUBTREE_PREFIX
;
ldap_pvt_thread_mutex_lock
(
&
db
->
dbc_write_mutex
);
rc
=
idl_insert_key
(
be
,
db
,
key
,
id
);
ldap_pvt_thread_mutex_unlock
(
&
db
->
dbc_write_mutex
);
}
if
(
rc
!=
-
1
)
{
char
*
pdn
=
dn_parent
(
be
,
dn
);
pdn
=
dn_parent
(
be
,
ptr
);
if
(
pdn
!=
NULL
)
{
ldbm_datum_init
(
key
);
key
.
dsize
=
strlen
(
pdn
)
+
2
;
key
.
dptr
=
ch_malloc
(
key
.
dsize
);
sprintf
(
key
.
dptr
,
"%c%s"
,
DN_ONE_PREFIX
,
pdn
);
pdn
[
-
1
]
=
DN_ONE_PREFIX
;
key
.
dsize
-=
pdn
-
ptr
;
key
.
dptr
=
pdn
-
1
;
ldap_pvt_thread_mutex_lock
(
&
db
->
dbc_write_mutex
);
rc
=
idl_insert_key
(
be
,
db
,
key
,
id
);
ldap_pvt_thread_mutex_unlock
(
&
db
->
dbc_write_mutex
);
free
(
key
.
dptr
);
}
}
if
(
rc
!=
-
1
)
{
char
**
subtree
=
dn_subtree
(
be
,
dn
);
if
(
subtree
!=
NULL
)
{
int
i
;
for
(
i
=
0
;
subtree
[
i
]
!=
NULL
;
i
++
)
{
ldbm_datum_init
(
key
);
key
.
dsize
=
strlen
(
subtree
[
i
]
)
+
2
;
key
.
dptr
=
ch_malloc
(
key
.
dsize
);
sprintf
(
key
.
dptr
,
"%c%s"
,
DN_SUBTREE_PREFIX
,
subtree
[
i
]
);
ldap_pvt_thread_mutex_lock
(
&
db
->
dbc_write_mutex
);
rc
=
idl_insert_key
(
be
,
db
,
key
,
id
);
ldap_pvt_thread_mutex_unlock
(
&
db
->
dbc_write_mutex
);
free
(
key
.
dptr
);
if
(
rc
==
-
1
)
break
;
}
charray_free
(
subtree
);
}
while
(
rc
!=
-
1
&&
pdn
!=
NULL
)
{
if
(
be_issuffix
(
be
,
pdn
))
break
;
pdn
[
-
1
]
=
DN_SUBTREE_PREFIX
;
ldap_pvt_thread_mutex_lock
(
&
db
->
dbc_write_mutex
);
rc
=
idl_insert_key
(
be
,
db
,
key
,
id
);
ldap_pvt_thread_mutex_unlock
(
&
db
->
dbc_write_mutex
);
if
(
rc
!=
0
)
break
;
ptr
=
pdn
;
pdn
=
dn_parent
(
be
,
pdn
);
key
.
dsize
-=
pdn
-
ptr
;
key
.
dptr
=
pdn
-
1
;
}
free
(
buf
);
ldbm_cache_close
(
be
,
db
);
#ifdef NEW_LOGGING
...
...
@@ -269,6 +271,7 @@ dn2id_delete(
DBCache
*
db
;
Datum
key
;
int
rc
;
char
*
buf
,
*
ptr
,
*
pdn
;
#ifdef NEW_LOGGING
LDAP_LOG
((
"backend"
,
LDAP_LEVEL_ENTRY
,
...
...
@@ -294,56 +297,52 @@ dn2id_delete(
return
(
-
1
);
}
ldbm_datum_init
(
key
);
key
.
dsize
=
strlen
(
dn
)
+
2
;
buf
=
ch_malloc
(
key
.
dsize
);
key
.
dptr
=
buf
;
buf
[
0
]
=
DN_BASE_PREFIX
;
ptr
=
buf
+
1
;
strcpy
(
ptr
,
dn
);
{
char
*
pdn
=
dn_parent
(
be
,
dn
);
rc
=
ldbm_cache_delete
(
db
,
key
);
if
(
!
be_issuffix
(
be
,
ptr
))
{
buf
[
0
]
=
DN_SUBTREE_PREFIX
;
ldap_pvt_thread_mutex_lock
(
&
db
->
dbc_write_mutex
);
(
void
)
idl_delete_key
(
be
,
db
,
key
,
id
);
ldap_pvt_thread_mutex_unlock
(
&
db
->
dbc_write_mutex
);
}
if
(
pdn
!=
NULL
)
{
ldbm_datum_init
(
key
);
key
.
dsize
=
strlen
(
pdn
)
+
2
;
key
.
dptr
=
ch_malloc
(
key
.
dsize
);
sprintf
(
key
.
dptr
,
"%c%s"
,
DN_ONE_PREFIX
,
pdn
);
pdn
=
dn_parent
(
be
,
ptr
);
ldap_pvt_thread_mutex_lock
(
&
db
->
dbc_write_mutex
);
(
void
)
idl_delete_key
(
be
,
db
,
key
,
id
);
ldap_pvt_thread_mutex_unlock
(
&
db
->
dbc_write_mutex
);
if
(
pdn
!=
NULL
)
{
pdn
[
-
1
]
=
DN_ONE_PREFIX
;
key
.
dsize
-=
pdn
-
ptr
;
key
.
dptr
=
pdn
-
1
;
free
(
key
.
dptr
);
}
ldap_pvt_thread_mutex_lock
(
&
db
->
dbc_write_mutex
);
(
void
)
idl_delete_key
(
be
,
db
,
key
,
id
);
ldap_pvt_thread_mutex_unlock
(
&
db
->
dbc_write_mutex
);
}
{
char
**
subtree
=
dn_subtree
(
be
,
dn
);
if
(
subtree
!=
NULL
)
{
int
i
;
for
(
i
=
0
;
subtree
[
i
]
!=
NULL
;
i
++
)
{
ldbm_datum_init
(
key
);
key
.
dsize
=
strlen
(
subtree
[
i
]
)
+
2
;
key
.
dptr
=
ch_malloc
(
key
.
dsize
);
sprintf
(
key
.
dptr
,
"%c%s"
,
DN_SUBTREE_PREFIX
,
subtree
[
i
]
);
while
(
pdn
!=
NULL
)
{
if
(
be_issuffix
(
be
,
pdn
))
break
;
ldap_pvt_thread_mutex_lock
(
&
db
->
dbc_write_mutex
);
(
void
)
idl_delete_key
(
be
,
db
,
key
,
id
);
ldap_pvt_thread_mutex_unlock
(
&
db
->
dbc_write_mutex
);
pdn
[
-
1
]
=
DN_SUBTREE_PREFIX
;
free
(
key
.
dptr
);
}
ldap_pvt_thread_mutex_lock
(
&
db
->
dbc_write_mutex
);
(
void
)
idl_delete_key
(
be
,
db
,
key
,
id
);
ldap_pvt_thread_mutex_unlock
(
&
db
->
dbc_write_mutex
);
charray_free
(
subtree
);
}
ptr
=
pdn
;
pdn
=
dn_parent
(
be
,
pdn
);
key
.
dsize
-=
pdn
-
ptr
;
key
.
dptr
=
pdn
-
1
;
}
ldbm_datum_init
(
key
);
key
.
dsize
=
strlen
(
dn
)
+
2
;
key
.
dptr
=
ch_malloc
(
key
.
dsize
);
sprintf
(
key
.
dptr
,
"%c%s"
,
DN_BASE_PREFIX
,
dn
);
rc
=
ldbm_cache_delete
(
db
,
key
);
free
(
key
.
dptr
);
free
(
buf
);
ldbm_cache_close
(
be
,
db
);
...
...
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