Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Shawn McKinney
OpenLDAP
Commits
73b63514
Commit
73b63514
authored
Sep 10, 2001
by
Kurt Zeilenga
Browse files
backport millionth second bug fix from HEAD
parent
98f27b3a
Changes
6
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
73b63514
OpenLDAP 1.x Change Log
Changes included in OpenLDAP 1.2.1
2
Engineering
Changes included in OpenLDAP 1.2.1
3
Engineering
CVS Tag: OPENLDAP_REL_ENG_1_2
Fixed slurpd millionth second bug (ITS#1323)
Fixed libldap result error memory leak (ITS#1161)
Changes included in OpenLDAP 1.2.12
...
...
servers/slurpd/re.c
View file @
73b63514
...
...
@@ -83,7 +83,6 @@ Re_free(
/* This seems to have problems under SunOS lwp */
ldap_pvt_thread_mutex_destroy
(
&
re
->
re_mutex
);
#endif
/* HAVE_LWP */
ch_free
(
re
->
re_timestamp
);
if
((
rh
=
re
->
re_replicas
)
!=
NULL
)
{
for
(
i
=
0
;
rh
[
i
].
rh_hostname
!=
NULL
;
i
++
)
{
free
(
rh
[
i
].
rh_hostname
);
...
...
@@ -175,7 +174,7 @@ Re_parse(
/* there was a sequence number */
*
p
++
=
'\0'
;
}
re
->
re_timestamp
=
strdup
(
value
);
re
->
re_timestamp
=
atol
(
value
);
if
(
p
!=
NULL
&&
isdigit
(
(
unsigned
char
)
*
p
))
{
re
->
re_seq
=
atoi
(
p
);
}
...
...
@@ -439,7 +438,7 @@ Re_dump(
}
fprintf
(
fp
,
"Re_dump: ******
\n
"
);
fprintf
(
fp
,
"re_refcnt: %d
\n
"
,
re
->
re_refcnt
);
fprintf
(
fp
,
"re_timestamp: %
s
\n
"
,
re
->
re_timestamp
);
fprintf
(
fp
,
"re_timestamp: %
ld
\n
"
,
(
long
)
re
->
re_timestamp
);
fprintf
(
fp
,
"re_seq: %d
\n
"
,
re
->
re_seq
);
for
(
i
=
0
;
re
->
re_replicas
&&
re
->
re_replicas
[
i
].
rh_hostname
!=
NULL
;
i
++
)
{
...
...
@@ -525,7 +524,7 @@ Re_write(
}
}
}
if
(
fprintf
(
fp
,
"time: %
s
.%d
\n
"
,
re
->
re_timestamp
,
re
->
re_seq
)
<
0
)
{
if
(
fprintf
(
fp
,
"time: %
ld
.%d
\n
"
,
(
long
)
re
->
re_timestamp
,
re
->
re_seq
)
<
0
)
{
rc
=
-
1
;
goto
bad
;
}
...
...
@@ -688,7 +687,7 @@ Re_init(
/* Initialize private data */
(
*
re
)
->
re_refcnt
=
sglob
->
num_replicas
;
(
*
re
)
->
re_timestamp
=
NULL
;
(
*
re
)
->
re_timestamp
=
0
;
(
*
re
)
->
re_replicas
=
NULL
;
(
*
re
)
->
re_dn
=
NULL
;
(
*
re
)
->
re_changetype
=
0
;
...
...
servers/slurpd/ri.c
View file @
73b63514
...
...
@@ -226,12 +226,12 @@ isnew(
Re
*
re
)
{
int
x
;
long
x
;
int
ret
;
/* Lock the St struct to avoid a race */
sglob
->
st
->
st_lock
(
sglob
->
st
);
x
=
strcmp
(
re
->
re_timestamp
,
ri
->
ri_stel
->
last
)
;
x
=
re
->
re_timestamp
-
ri
->
ri_stel
->
last
;
if
(
x
>
0
)
{
/* re timestamp is newer */
ret
=
1
;
...
...
servers/slurpd/rq.c
View file @
73b63514
...
...
@@ -180,7 +180,7 @@ Rq_add(
/* set the sequence number */
re
->
re_seq
=
0
;
if
(
!
wasempty
&&
!
strcmp
(
rq
->
rq_tail
->
re_timestamp
,
re
->
re_timestamp
))
{
if
(
!
wasempty
&&
(
rq
->
rq_tail
->
re_timestamp
==
re
->
re_timestamp
))
{
/*
* Our new re has the same timestamp as the tail's timestamp.
* Increment the seq number in the tail and use it as our seq number.
...
...
servers/slurpd/slurp.h
View file @
73b63514
...
...
@@ -217,7 +217,7 @@ struct re {
ldap_pvt_thread_mutex_t
re_mutex
;
/* mutex for this Re */
int
re_refcnt
;
/* ref count, 0 = done */
char
*
re_timestamp
;
/* timestamp of this re */
time_t
re_timestamp
;
/* timestamp of this re */
int
re_seq
;
/* sequence number */
Rh
*
re_replicas
;
/* array of replica info */
char
*
re_dn
;
/* dn of entry being modified */
...
...
@@ -288,7 +288,7 @@ struct rq {
typedef
struct
stel
{
char
*
hostname
;
/* host name of replica */
int
port
;
/* port number of replica */
char
last
[
64
];
/* timestamp of last successful repl */
time_t
last
;
/* timestamp of last successful repl */
int
seq
;
/* Sequence number of last repl */
}
Stel
;
...
...
servers/slurpd/st.c
View file @
73b63514
...
...
@@ -61,7 +61,7 @@ St_add(
st
->
st_data
[
ind
]
->
hostname
=
strdup
(
ri
->
ri_hostname
);
st
->
st_data
[
ind
]
->
port
=
ri
->
ri_port
;
memset
(
st
->
st_data
[
ind
]
->
last
,
0
,
sizeof
(
st
->
st_data
[
ind
]
->
last
))
;
st
->
st_data
[
ind
]
->
last
=
0L
;
st
->
st_data
[
ind
]
->
seq
=
0
;
ldap_pvt_thread_mutex_unlock
(
&
(
st
->
st_mutex
));
...
...
@@ -108,8 +108,8 @@ St_write (
fseek
(
st
->
st_fp
,
0L
,
0
);
for
(
i
=
0
;
i
<
st
->
st_nreplicas
;
i
++
)
{
stel
=
st
->
st_data
[
i
];
fprintf
(
st
->
st_fp
,
"%s:%d:%
s
:%d
\n
"
,
stel
->
hostname
,
stel
->
port
,
stel
->
last
,
stel
->
seq
);
fprintf
(
st
->
st_fp
,
"%s:%d:%
ld
:%d
\n
"
,
stel
->
hostname
,
stel
->
port
,
(
long
)
stel
->
last
,
stel
->
seq
);
}
fflush
(
st
->
st_fp
);
...
...
@@ -136,7 +136,7 @@ St_update(
}
ldap_pvt_thread_mutex_lock
(
&
(
st
->
st_mutex
));
strcpy
(
stel
->
last
,
re
->
re_timestamp
)
;
stel
->
last
=
re
->
re_timestamp
;
stel
->
seq
=
re
->
re_seq
;
ldap_pvt_thread_mutex_unlock
(
&
(
st
->
st_mutex
));
return
0
;
...
...
@@ -214,7 +214,7 @@ St_read(
if
(
!
strcmp
(
hostname
,
sglob
->
st
->
st_data
[
i
]
->
hostname
)
&&
atoi
(
port
)
==
sglob
->
st
->
st_data
[
i
]
->
port
)
{
found
=
1
;
strcpy
(
sglob
->
st
->
st_data
[
i
]
->
last
,
timestamp
);
sglob
->
st
->
st_data
[
i
]
->
last
=
atol
(
timestamp
);
sglob
->
st
->
st_data
[
i
]
->
seq
=
atoi
(
seq
);
break
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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