IMO, the below ignores the impacts on OS distributors who
provide httpd. We have seen how long it takes for them
to go from 2.2 to 2.4... I can't imagine the impact for our
end user community if "new features" cause a minor
bump all the time and we "force" distributions for
2.4->2.6->2.8->2.10...

Just my 2c

> On Apr 13, 2018, at 2:28 PM, David Zuelke <dzue...@salesforce.com> wrote:
> 
> Remember the thread I started on that quite a while ago? ;)
> 
> IMO:
> 
> - x.y.0 for new features
> - x.y.z for bugfixes only
> - stop the endless backporting
> - make x.y.0 releases more often
> - x.y.0 goes through alpha, beta, RC phases
> - x.y.z goes through RC phases
> 
> That's how PHP has been doing it for a few years, and it's amazing how
> well it works, how few regressions there are, and how predictable the
> cycle is (they cut an x.y.zRC1 every four weeks like clockwork, with
> exceptions only around late December because of holiday season).
> 
> This would also fix all the confusing cases where two or three faulty
> releases get made, end up in the changelog, but ultimately are never
> released.
> 
> 
> On Fri, Apr 13, 2018 at 5:28 PM, William A Rowe Jr <wr...@rowe-clan.net> 
> wrote:
>> Terrific analysis! But on the meta-question...
>> 
>> Instead of changing the behavior of httpd on each and every subversion bump,
>> is it time to revisit our revisioning discipline and hygiene?
>> 
>> I promise to stay out of such discussion provided that one equally stubborn
>> and intractable PMC member agrees to do the same, and let the balance of the
>> PMC make our decision, moving forwards.
>> 
>> On Fri, Apr 13, 2018, 06:11 Joe Orton <jor...@redhat.com> wrote:
>>> 
>>> On Thu, Apr 12, 2018 at 09:38:46PM +0200, Ruediger Pluem wrote:
>>>> On 04/12/2018 09:28 AM, Joe Orton wrote:
>>>>> But logged is:
>>>>> 
>>>>> ::1 - - [12/Apr/2018:08:11:12 +0100] "GET /agag HTTP/1.1" 404 12
>>>>> HTTPS=on SNI=localhost.localdomain
>>>>> 127.0.0.1 - - [12/Apr/2018:08:11:15 +0100] "GET /agag HTTP/1.1" 404 12
>>>>> HTTPS=- SNI=-
>>>>> 
>>>>> Now mod_ssl only sees the "off" SSLSrvConfigRec in the second vhost so
>>>>> the logging is wrong.
>>>> 
>>>> What does the same test result in with 2.4.29?
>>> 
>>> Excellent question, I should have checked that.  Long e-mail follows,
>>> sorry.
>>> 
>>> In fact it is the same with 2.4.29, because the SSLSrvConfigRec
>>> associated with the vhost's server_rec is the same as the default/base
>>> (non-SSL) server_rec, aka base_server passed to post_config hooks aka
>>> the ap_server_conf global.
>>> 
>>> So, maybe I understand this a bit better now.
>>> 
>>> Config with three vhosts / server_rec structs:
>>> a) base server config :80 non-SSL (<-- ap_server_conf/base_server)
>>> b) alpha vhost :443, explicit SSLEngine on, SSLCertificateFile etc
>>> c) beta vhost :443, no SSL*
>>> 
>>> For 2.4.29 mod_ssl config derived is:
>>> a) SSLSrvConfigRec for base_server = { whatever config at global scope }
>>> b) SSLSrvConfigRec for alpha = { sc->enabled = TRUE, ... }
>>> c) SSLSrvConfigRec pointer for beta == SSLSrvConfigRec for base_server
>>>   in the lookup vector (pointer is copied prior to ALWAYS_MERGE flag)
>>> 
>>> For 2.4.33 it is:
>>> a) and b) exactly as before
>>> c) separate SSLSrvConfigRec for beta = { merged copy of config at global }
>>>   time because of the ALWAYS_MERGE flag, i.e. still sc->enabled = UNSET
>>> 
>>> When running ssl_init_Module(post_config hook), with 2.4.29:
>>> - SSLSrvConfig(base_server)->enabled = FALSE because UNSET previously
>>> - SSLSrvConfig(base_server)->vhost_id gets overwritten with vhost_id
>>>  for beta vhost because it's later in the loop and there's no check
>>> 
>>> And with 2.4.33:
>>> - SSLSrvConfig(beta)->enabled is UNSET but gets flipped to ENABLED,
>>>  then startup fails (the issue in question)
>>> 
>>> w/my patch for 2.4.33:
>>> - SSLSrvConfig(beta)->enabled is FALSE and startup works
>>> 
>>> At run-time a request via SSL which matches the beta vhost via SNI/Host:
>>> 
>>> For 2.4.29:
>>> - r->server is the beta vhost and mySrvConfig(r->server) still gives
>>>  you the ***base_server*** SSLSrvConfigRec i.e. sc->enabled=FALSE
>>> - thus e.g. ssl_hook_Fixup() does nada
>>> 
>>> For 2.4.33 plus my patch:
>>> - r->server is the beta vhost and mySrvConfig(r->server) gives
>>>  you the SSLSrvConfigRec which is also sc->enabled = FALSE
>>> - thus e.g. ssl_hook_Fixup() also does nada
>>> 
>>> I was trying to convince myself whether mySrvConfig(r->server) is going
>>> to change between 2.4.29 and .33+patch in this case, and I think it
>>> should be identical, because it is *only* the handling of ->enabled
>>> which has changed with _ALWAYS_MERGE.
>>> 
>>> TL;DR:
>>> 1. my head hurts
>>> 2. I think my patch is OK
>>> 
>>> Anyone read this far?

Reply via email to