mirror of
https://github.com/graygnuorg/pound.git
synced 2026-10-23 22:28:53 +03:00
Make sure a dunamic backend remains referenced for as long as there is an update job for it in the queue. * src/pound.h (be_matrix): New field: override_ttl. (backend_create): New proto. * src/config.c (backend_create,xbackend_create): New function. Initialize backend mutex using mutex_attr_recursive. (backend_parsetab): New statement: OverrideTTL. (parse_backend_internal,parse_backend) (parse_use_backend,parse_control_backend) (parse_metrics,parse_redirect_backend) (parse_error_backend,parse_acme) (parse_control_listener): Use xbackend_create. * src/dynbe.c: Increment reference counter of a backend before scheduling a resolver job for it. Decrement the counter before leaving the job (no matter whether it was run or cancelled). (BACKEND_hash,BACKEND_cmp): For matrix backends, use both hostname and port number. (backend_table_hostname_lookup): Take port number as argument. (service_matrix_addr_update_backends): Use backend_create to create and initialize the backend. (service_matrix_srv_update_backends): Likewise. (backend_ref,backend_unref): Apply to all backend types. (backend_matrix_srv_update,backend_matrix_addr_update): Override response expiration time, if v.mtx.override_ttl is set. * tests/dyn_a_ttl.at: New test. * tests/dyn_srv_ttl.at: New test. * tests/Makefile.am: Add new tests. * tests/testsuite.at: Likewise. * NEWS: Document changes. * doc/pound.8: Likewise. * doc/pound.texi: Likewise.