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
deba0105
Commit
deba0105
authored
May 13, 2021
by
Tero Saarni
Browse files
ITS#9468 do not arm expire timer for connections that are already tainted
parent
efb84b3e
Pipeline
#2680
passed with stage
in 54 minutes and 47 seconds
Changes
1
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
servers/slapd/back-ldap/bind.c
View file @
deba0105
...
...
@@ -3122,6 +3122,38 @@ ldap_back_conn_prune( ldapinfo_t *li )
while
(
lc
)
{
ldapconn_t
*
next
=
LDAP_TAILQ_NEXT
(
lc
,
lc_q
);
if
(
!
LDAP_BACK_CONN_TAINTED
(
lc
)
)
{
time_t
conn_expires
=
ldap_back_conn_expire_time
(
li
,
lc
);
if
(
now
>=
conn_expires
)
{
if
(
lc
->
lc_refcnt
==
0
)
{
Debug
(
LDAP_DEBUG_TRACE
,
"ldap_back_conn_prune: closing expired connection lc=%p
\n
"
,
lc
);
ldap_back_freeconn
(
li
,
lc
,
0
);
}
else
{
Debug
(
LDAP_DEBUG_TRACE
,
"ldap_back_conn_prune: tainting expired connection lc=%p
\n
"
,
lc
);
LDAP_BACK_CONN_TAINTED_SET
(
lc
);
}
}
else
if
(
next_timeout
==
-
1
||
conn_expires
<
next_timeout
)
{
/* next_timeout was not yet initialized or current connection expires sooner */
next_timeout
=
conn_expires
;
}
}
lc
=
next
;
}
}
edge
=
ldap_tavl_end
(
li
->
li_conninfo
.
lai_tree
,
TAVL_DIR_LEFT
);
while
(
edge
)
{
TAvlnode
*
next
=
ldap_tavl_next
(
edge
,
TAVL_DIR_RIGHT
);
ldapconn_t
*
lc
=
(
ldapconn_t
*
)
edge
->
avl_data
;
if
(
!
LDAP_BACK_CONN_TAINTED
(
lc
)
)
{
time_t
conn_expires
=
ldap_back_conn_expire_time
(
li
,
lc
);
if
(
now
>=
conn_expires
)
{
...
...
@@ -3137,34 +3169,8 @@ ldap_back_conn_prune( ldapinfo_t *li )
LDAP_BACK_CONN_TAINTED_SET
(
lc
);
}
}
else
if
(
next_timeout
==
-
1
||
conn_expires
<
next_timeout
)
{
/* next_timeout was not yet initialized or current connection expires sooner */
next_timeout
=
conn_expires
;
}
lc
=
next
;
}
}
edge
=
ldap_tavl_end
(
li
->
li_conninfo
.
lai_tree
,
TAVL_DIR_LEFT
);
while
(
edge
)
{
TAvlnode
*
next
=
ldap_tavl_next
(
edge
,
TAVL_DIR_RIGHT
);
ldapconn_t
*
lc
=
(
ldapconn_t
*
)
edge
->
avl_data
;
time_t
conn_expires
=
ldap_back_conn_expire_time
(
li
,
lc
);
if
(
now
>=
conn_expires
)
{
if
(
lc
->
lc_refcnt
==
0
)
{
Debug
(
LDAP_DEBUG_TRACE
,
"ldap_back_conn_prune: closing expired connection lc=%p
\n
"
,
lc
);
ldap_back_freeconn
(
li
,
lc
,
0
);
}
else
{
Debug
(
LDAP_DEBUG_TRACE
,
"ldap_back_conn_prune: tainting expired connection lc=%p
\n
"
,
lc
);
LDAP_BACK_CONN_TAINTED_SET
(
lc
);
}
}
else
if
(
next_timeout
==
-
1
||
conn_expires
<
next_timeout
)
{
next_timeout
=
conn_expires
;
}
edge
=
next
;
...
...
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