diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 90c2f4a..cdd9e33 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -2030,6 +2030,8 @@ retry1: port->user_name = pstrdup(valptr); else if (strcmp(nameptr, "options") == 0) port->cmdline_options = pstrdup(valptr); + else if (strcmp(nameptr, "driver") == 0) + port->driver = pstrdup(valptr); else if (strcmp(nameptr, "replication") == 0) { /* diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index 7b19714..b880c91 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -1087,6 +1087,15 @@ process_startup_options(Port *port, bool am_superuser) SetConfigOption(name, value, gucctx, PGC_S_CLIENT); } + + /* + * Apply any driver-specific overrides... + */ + if (port->driver != NULL) + { + if (strcmp(port->driver, "npgsql") == 0) + SetConfigOption("ssl_renegotiation_limit", 0, PGC_INTERNAL, PGC_S_OVERRIDE); + } } /* diff --git a/src/include/libpq/libpq-be.h b/src/include/libpq/libpq-be.h index caaa8b5..57e199a 100644 --- a/src/include/libpq/libpq-be.h +++ b/src/include/libpq/libpq-be.h @@ -138,6 +138,7 @@ typedef struct Port char *database_name; char *user_name; char *cmdline_options; + char *driver; List *guc_options; /*