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
Tero Saarni
OpenLDAP
Commits
e98410cf
Commit
e98410cf
authored
Jan 26, 2011
by
Quanah Gibson-Mount
Browse files
ITS#6739
parent
2249d1b6
Changes
2
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
e98410cf
...
...
@@ -57,6 +57,7 @@ OpenLDAP 2.4.24 Engineering
Fixed slapd sortvals of attributes with 1 value (ITS#6715)
Fixed slapd syncrepl reuse of presence list (ITS#6707)
Fixed slapd syncrepl uninitialized return code (ITS#6719)
Fixed slapd syncrepl variable initialization (ITS#6739)
Fixed slapd-bdb hasSubordinates generation (ITS#6712)
Fixed slapd-bdb entry cache delete failure (ITS#6577)
Fixed slapd-bdb entry cache leak on multi-core systems (ITS#6660)
...
...
servers/slapd/syncrepl.c
View file @
e98410cf
...
...
@@ -756,38 +756,25 @@ do_syncrep2(
Operation
*
op
,
syncinfo_t
*
si
)
{
LDAPControl
**
rctrls
=
NULL
;
BerElementBuffer
berbuf
;
BerElement
*
ber
=
(
BerElement
*
)
&
berbuf
;
LDAPMessage
*
msg
=
NULL
;
char
*
retoid
=
NULL
;
struct
berval
*
retdata
=
NULL
;
Entry
*
entry
=
NULL
;
int
syncstate
;
struct
berval
syncUUID
=
BER_BVNULL
;
struct
sync_cookie
syncCookie
=
{
NULL
};
struct
sync_cookie
syncCookie_req
=
{
NULL
};
struct
berval
cookie
=
BER_BVNULL
;
int
rc
,
err
=
LDAP_SUCCESS
;
ber_len_t
len
;
Modifications
*
modlist
=
NULL
;
int
m
atch
,
m
,
punlock
=
-
1
;
int
m
;
struct
timeval
*
tout_p
=
NULL
;
struct
timeval
tout
=
{
0
,
0
};
int
refreshDeletes
=
0
;
BerVarray
syncUUIDs
=
NULL
;
ber_tag_t
si_tag
;
if
(
slapd_shutdown
)
{
rc
=
-
2
;
...
...
@@ -810,7 +797,14 @@ do_syncrep2(
while
(
(
rc
=
ldap_result
(
si
->
si_ld
,
si
->
si_msgid
,
LDAP_MSG_ONE
,
tout_p
,
&
msg
)
)
>
0
)
{
LDAPControl
*
rctrlp
=
NULL
;
int
match
,
punlock
,
syncstate
;
struct
berval
*
retdata
,
syncUUID
,
cookie
=
BER_BVNULL
;
char
*
retoid
;
LDAPControl
**
rctrls
=
NULL
,
*
rctrlp
=
NULL
;
BerVarray
syncUUIDs
;
ber_len_t
len
;
ber_tag_t
si_tag
;
Entry
*
entry
;
if
(
slapd_shutdown
)
{
rc
=
-
2
;
...
...
@@ -848,7 +842,14 @@ do_syncrep2(
goto
done
;
}
ber_init2
(
ber
,
&
rctrlp
->
ldctl_value
,
LBER_USE_DER
);
ber_scanf
(
ber
,
"{em"
/*"}"*/
,
&
syncstate
,
&
syncUUID
);
if
(
ber_scanf
(
ber
,
"{em"
/*"}"*/
,
&
syncstate
,
&
syncUUID
)
==
LBER_ERROR
)
{
Debug
(
LDAP_DEBUG_ANY
,
"do_syncrep2: %s malformed message"
,
si
->
si_ridtxt
,
0
,
0
);
ldap_controls_free
(
rctrls
);
rc
=
-
1
;
goto
done
;
}
/* FIXME: what if syncUUID is NULL or empty?
* (happens with back-sql...) */
if
(
BER_BVISEMPTY
(
&
syncUUID
)
)
{
...
...
@@ -860,6 +861,7 @@ do_syncrep2(
rc
=
-
1
;
goto
done
;
}
punlock
=
-
1
;
if
(
ber_peek_tag
(
ber
,
&
len
)
==
LDAP_TAG_SYNC_COOKIE
)
{
ber_scanf
(
ber
,
/*"{"*/
"m}"
,
&
cookie
);
...
...
@@ -920,6 +922,7 @@ do_syncrep2(
si
->
si_cookieState
->
cs_psids
=
ch_realloc
(
si
->
si_cookieState
->
cs_psids
,
si
->
si_cookieState
->
cs_pnum
*
sizeof
(
int
));
si
->
si_cookieState
->
cs_psids
[
i
]
=
sid
;
}
assert
(
punlock
<
0
);
punlock
=
i
;
}
op
->
o_controls
[
slap_cids
.
sc_LDAPsync
]
=
&
syncCookie
;
...
...
@@ -988,6 +991,7 @@ do_syncrep2(
Debug
(
LDAP_DEBUG_SYNC
,
"do_syncrep2: %s LDAP_RES_SEARCH_RESULT
\n
"
,
si
->
si_ridtxt
,
0
,
0
);
err
=
LDAP_OTHER
;
/* FIXME check parse result properly */
ldap_parse_result
(
si
->
si_ld
,
msg
,
&
err
,
NULL
,
NULL
,
NULL
,
&
rctrls
,
0
);
#ifdef LDAP_X_SYNC_REFRESH_REQUIRED
...
...
@@ -1098,9 +1102,10 @@ do_syncrep2(
rc
=
-
2
;
}
goto
done
;
break
;
case
LDAP_RES_INTERMEDIATE
:
retoid
=
NULL
;
retdata
=
NULL
;
rc
=
ldap_parse_intermediate
(
si
->
si_ld
,
msg
,
&
retoid
,
&
retdata
,
NULL
,
0
);
if
(
!
rc
&&
!
strcmp
(
retoid
,
LDAP_SYNC_INFO
)
)
{
...
...
@@ -1203,6 +1208,7 @@ do_syncrep2(
{
ber_scanf
(
ber
,
"b"
,
&
refreshDeletes
);
}
syncUUIDs
=
NULL
;
ber_scanf
(
ber
,
"[W]"
,
&
syncUUIDs
);
ber_scanf
(
ber
,
/*"{"*/
"}"
);
if
(
refreshDeletes
)
{
...
...
@@ -1257,7 +1263,6 @@ do_syncrep2(
ldap_memfree
(
retoid
);
ber_bvfree
(
retdata
);
break
;
}
else
{
Debug
(
LDAP_DEBUG_ANY
,
"do_syncrep2: %s "
...
...
@@ -1265,7 +1270,6 @@ do_syncrep2(
si
->
si_ridtxt
,
rc
,
0
);
ldap_memfree
(
retoid
);
ber_bvfree
(
retdata
);
break
;
}
break
;
...
...
@@ -1292,6 +1296,7 @@ do_syncrep2(
}
if
(
rc
==
-
1
)
{
rc
=
LDAP_OTHER
;
ldap_get_option
(
si
->
si_ld
,
LDAP_OPT_ERROR_NUMBER
,
&
rc
);
err
=
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