Re: svn commit: r1927807 - in httpd/httpd/trunk: changes-entries docs/manual/mod modules/md test/modules/md
"Stefan Eissing via dev" <[email protected]>
| Newsgroups | gmane.comp.apache.devel |
|---|---|
| Message-ID | <[email protected]> |
> Am 19.08.2025 um 11:10 schrieb Stefan Eissing via dev <[email protected]>: > > > >> Am 18.08.2025 um 09:39 schrieb Ruediger Pluem <[email protected]>: >> >> >> >> On 8/15/25 1:23 PM, [email protected] 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. > > I realized one mistake: the first error already triggers a doubling of the delay. Will fix that. > > Why do you think that the doubling could never reach the cap? I seem to be unable to see that... The brain works better by writing. I now see what you mean. The additional check after the loop is unnecessary. Thanks for reviewing! > > Cheers, > Stefan > >> >>> } >>> if (delay > 0) { >>> /* jitter the delay by +/- 0-50%. >>> >> >> Regards >> >> Rüdiger