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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.