ITS#9725 Use backend's timestamp precision

This commit is contained in:
Ondřej Kuzník 2021-11-04 10:15:18 +00:00 committed by Quanah Gibson-Mount
parent 69727ebbc8
commit 7a4b42600b

View File

@ -23,8 +23,9 @@
* last successful bind operation in a directory entry.
*
* Optimization: to avoid performing a write on each bind,
* a precision for this timestamp may be configured, causing it to
* only be updated if it is older than a given number of seconds.
* a precision for this timestamp may be configured on the database,
* causing it to only be updated if it is older than a given number
* of seconds.
*/
#ifdef SLAPD_OVER_LASTBIND
@ -40,8 +41,6 @@
/* Per-instance configuration information */
typedef struct lastbind_info {
/* precision to update timestamp in authTimestamp attribute */
int timestamp_precision;
int forward_updates; /* use frontend for authTimestamp updates */
} lastbind_info;
@ -68,14 +67,6 @@ static struct schema_info {
/* configuration attribute and objectclass */
static ConfigTable lastbindcfg[] = {
{ "lastbind-precision", "seconds", 2, 2, 0,
ARG_INT|ARG_OFFSET,
(void *)offsetof(lastbind_info, timestamp_precision),
"( OLcfgCtAt:5.1 "
"NAME 'olcLastBindPrecision' "
"DESC 'Precision of authTimestamp attribute' "
"EQUALITY integerMatch "
"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
{ "lastbind_forward_updates", "on|off", 1, 2, 0,
ARG_ON_OFF|ARG_OFFSET,
(void *)offsetof(lastbind_info,forward_updates),
@ -91,7 +82,7 @@ static ConfigOCs lastbindocs[] = {
"NAME 'olcLastBindConfig' "
"DESC 'Last Bind configuration' "
"SUP olcOverlayConfig "
"MAY ( olcLastBindPrecision $ olcLastBindForwardUpdates) )",
"MAY ( olcLastBindForwardUpdates) )",
Cft_Overlay, lastbindcfg, NULL, NULL },
{ NULL, 0, NULL }
};
@ -148,7 +139,7 @@ lastbind_bind_response( Operation *op, SlapReply *rs )
if (bindtime != (time_t)-1) {
/* if the recorded bind time is within our precision, we're done
* it doesn't need to be updated (save a write for nothing) */
if ((now - bindtime) < lbi->timestamp_precision) {
if ((now - bindtime) < op->o_bd->be_lastbind_precision) {
goto done;
}
}