Conversation
Did I understand it wrong with here?
| end | ||
|
|
||
| if domain_key_types_count ~= chains_set then | ||
| chains_set_count = #chains_set |
There was a problem hiding this comment.
chains_set could be in some case being { 2 = true }, so this won't work as chains_set is a sparse array, in lua using # to get length of a table
that has index doesn't start with 1 will be unspecified (in LuaJIT it returns 0)
There was a problem hiding this comment.
This code snippet "domain_key_types_count ~= chains_set" is always true, so every client https request will invoke code update_cert ->update_cert_handler->AUTOSSL.client:order_certificate(pkey, domain),it's not necessary.
Only "domain_key_types_count" was not equal to the length of "chains_set", must actively apply for a certificate.
By default, domain_key_types = { 'rsa'}, the "domain_key_types_count" is 1:
- If the length of "chains_set" is 0, need invoke update_cert() actively apply for a certificate.
- If the length of "chains_set"is 1, indicates that we has obtained the certificate, unnecessary and return.
When config domain_key_types = { 'rsa', 'ecc' }, the "domain_key_types_count" is 2:
- if the length of "chains_set" = 0 ,actively apply for rsa and ecc certificate;
- if the length of "chains_set" = 1 ,actively apply for ecc or rsa certificate;
- if the length of "chains_set" = 2, unnecessary and return.
There was a problem hiding this comment.
I failed to send one of my comment 🤦 . The change you made on Line 459 is indeed a good
fix. Although we do have another check on line 462 so the original code only creates redundant timer but not duplicate certs.
But the above is not correct as how Lua due with tables. If rsa cert is not
created but ecc does, chains_set becomes { [2] = true} and #chains_set is 0 not 1.
Let's keep only the change of line 459.
There was a problem hiding this comment.
hmmm, I ignored check on line 462, indeed only an empty timer will be generated. When I was studying your project, this snippet of code was very confusing for me, so I tried to modify it. Maybe create a new method for "timer" snippet of code, make it easier to understand. I will try it again.
Did I understand it wrong with here?