On 8/15/25 1:23 PM, ic...@apache.org wrote:
> Author: icing
> Date: Fri Aug 15 11:23:29 2025
> New Revision: 1927807
>
> Log:
> *) mod_md: update to version 2.6.1
> - Increasing default `MDRetryDelay` to 30 seconds to generate less bursty
> traffic on errored renewals for the ACME CA. This leads to error
> retries
> of 30s, 1 minute, 2, 4, etc. up to daily attempts.
> - Checking that configuring `MDRetryDelay` will result in a positive
> duration. A delay of 0 is not accepted.
> - Fix a bug in checking Content-Type of responses from the ACME server.
> - Added ACME ARI support (rfc9773) to the module. Enabled by default. New
> directive "MDRenewViaARI on|off" for controlling this.
> - Removing tailscale support. It has not been working for a long time
> as the company decided to change their APIs. Away with the dead code,
> documentation and tests.
> - Fixed a compilation issue with pre-industrial versions of libcurl.
>
> Added:
> httpd/httpd/trunk/changes-entries/md_v2.6.1.txt
> Deleted:
> httpd/httpd/trunk/modules/md/md_tailscale.c
> httpd/httpd/trunk/modules/md/md_tailscale.h
> httpd/httpd/trunk/test/modules/md/test_780_tailscale.py
> Modified:
> httpd/httpd/trunk/docs/manual/mod/mod_md.xml
> httpd/httpd/trunk/modules/md/config2.m4
> httpd/httpd/trunk/modules/md/md.h
> httpd/httpd/trunk/modules/md/md_acme.c
> httpd/httpd/trunk/modules/md/md_acme.h
> httpd/httpd/trunk/modules/md/md_acme_authz.c
> httpd/httpd/trunk/modules/md/md_acme_drive.c
> httpd/httpd/trunk/modules/md/md_acme_order.c
> httpd/httpd/trunk/modules/md/md_acme_order.h
> httpd/httpd/trunk/modules/md/md_acmev2_drive.c
> httpd/httpd/trunk/modules/md/md_core.c
> httpd/httpd/trunk/modules/md/md_crypt.c
> httpd/httpd/trunk/modules/md/md_crypt.h
> httpd/httpd/trunk/modules/md/md_http.c
> httpd/httpd/trunk/modules/md/md_json.c
> httpd/httpd/trunk/modules/md/md_reg.c
> httpd/httpd/trunk/modules/md/md_reg.h
> httpd/httpd/trunk/modules/md/md_status.c
> httpd/httpd/trunk/modules/md/md_time.c
> httpd/httpd/trunk/modules/md/md_time.h
> httpd/httpd/trunk/modules/md/md_version.h
> httpd/httpd/trunk/modules/md/mod_md.c
> httpd/httpd/trunk/modules/md/mod_md.dsp
> httpd/httpd/trunk/modules/md/mod_md_config.c
> httpd/httpd/trunk/modules/md/mod_md_config.h
> httpd/httpd/trunk/modules/md/mod_md_drive.c
> httpd/httpd/trunk/modules/md/mod_md_status.c
> httpd/httpd/trunk/test/modules/md/md_conf.py
> httpd/httpd/trunk/test/modules/md/test_702_auto.py
> httpd/httpd/trunk/test/modules/md/test_710_profiles.py
> httpd/httpd/trunk/test/modules/md/test_730_static.py
> httpd/httpd/trunk/test/modules/md/test_920_status.py
>
>
> Modified: httpd/httpd/trunk/modules/md/md_status.c
> ==============================================================================
> --- httpd/httpd/trunk/modules/md/md_status.c Fri Aug 15 10:27:32 2025
> (r1927806)
> +++ httpd/httpd/trunk/modules/md/md_status.c Fri Aug 15 11:23:29 2025
> (r1927807)
> @@ -598,11 +612,19 @@ apr_time_t md_job_delay_on_errors(md_job
> delay = max_delay;
> }
> else if (err_count > 0) {
> - /* back off duration, depending on the errors we encounter in a row
> */
> - delay = job->min_delay << (err_count - 1);
> - if (delay > max_delay) {
> - delay = max_delay;
> + /* back off duration, depending on the errors we encounter in a row.
> + * As apr_time_t is signed, this might wrap around*/
> + int i;
> + delay = job->min_delay;
> + for (i = 0; i < err_count; ++i) {
> + delay <<= 1;
> + if ((delay <= 0) || (delay > max_delay)) {
> + delay = max_delay;
> + break;
> + }
> }
> + if (delay > max_delay)
> + delay = max_delay;
I don't think that delay can be > max_delay here.
> }
> if (delay > 0) {
> /* jitter the delay by +/- 0-50%.
>
Regards
RĂ¼diger