/
githubmirror
/
postgres
Обзор
Документация
Войти
/
githubmirror
/
postgres
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
contrib/auth_delay/auth_delay.c
75 строк
2 KB
Bruce Momjian
Update copyright for 2026
01 янв 2026, 21:24
01 янв 2026, 21:24
451c439
Код
Авторство
О чём код?
/* ------------------------------------------------------------------------- * * auth_delay.c * * Copyright (c) 2010-2026, PostgreSQL Global Development Group * * IDENTIFICATION * contrib/auth_delay/auth_delay.c * * ------------------------------------------------------------------------- */ #include "postgres.h" #include <limits.h> #include "libpq/auth.h" #include "utils/guc.h" PG_MODULE_MAGIC_EXT( .name = "auth_delay", .version = PG_VERSION ); /* GUC Variables */ static int auth_delay_milliseconds = 0; /* Original Hook */ static ClientAuthentication_hook_type original_client_auth_hook = NULL; /* * Check authentication */ static void auth_delay_checks(Port *port, int status) { /* * Any other plugins which use ClientAuthentication_hook. */ if (original_client_auth_hook) original_client_auth_hook(port, status); /* * Inject a short delay if authentication failed. */ if (status != STATUS_OK) { pg_usleep(1000L * auth_delay_milliseconds); } } /* * Module Load Callback */ void _PG_init(void) { /* Define custom GUC variables */ DefineCustomIntVariable("auth_delay.milliseconds", "Milliseconds to delay before reporting authentication failure", NULL, &auth_delay_milliseconds, 0, 0, INT_MAX / 1000, PGC_SIGHUP, GUC_UNIT_MS, NULL, NULL, NULL); MarkGUCPrefixReserved("auth_delay"); /* Install Hooks */ original_client_auth_hook = ClientAuthentication_hook; ClientAuthentication_hook = auth_delay_checks; }