You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Ruediger Pluem <rp...@apache.org> on 2006/09/05 22:15:07 UTC
Re: svn commit: r440337 - in /httpd/httpd/trunk: ./ include/ modules/arch/netware/
modules/experimental/ modules/generators/ modules/http/ modules/mappers/
modules/proxy/ modules/ssl/ server/ server/mpm/beos/ server/mpm/experimental/event/
server/mpm/exper...
On 09/05/2006 03:08 PM, wrote:
> Author: trawick
> Date: Tue Sep 5 06:08:15 2006
> New Revision: 440337
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=440337
> Log:
> Replace ap_get_server_version with ap_get_server_banner() and
> ap_get_server_description().
>
> High-level summary:
>
> The full server version information is now included in the error log at
> startup as well as server status reports, irrespective of the setting
> of the ServerTokens directive.
>
> Third-party modules must now use ap_get_server_banner() or
> ap_get_server_description() in place of ap_get_server_version().
>
>
> /**
> - * Get the server version string
> - * @return The server version string
> + * Get the server banner in a form suitable for sending over the
> + * network, with the level of information controlled by the
> + * ServerTokens directive.
> + * @return The server banner
> */
> -AP_DECLARE(const char *) ap_get_server_version(void);
> +AP_DECLARE(const char *) ap_get_server_banner(void);
Two comments:
1. If we stick to
AP_DECLARE(const char *) ap_get_server_version(void);
and do
#define ap_get_server_banner ap_get_server_version
I guess we can backport this without breaking binary compatibility and the need
for a major bump (on trunk the major bump makes sense to me). Given the fact that
we want to calm certain FAQ requests it would make sense to me to backport it.
2. On trunk shouldn't we add
#define ap_get_server_version ap_get_server_banner
While this still breaks binary compatibility it would allow modules using ap_get_server_version
to compile against trunk. Maybe we could mark ap_get_server_version as deprecated on trunk.
I am not a macro expert, but maybe it is even possible to spit out a warning if ap_get_server_version
is used.
Thoughts?
Regards
RĂ¼diger
Re: svn commit: r440337 - in /httpd/httpd/trunk: ./ include/ modules/arch/netware/
modules/experimental/ modules/generators/ modules/http/ modules/mappers/
modules/proxy/ modules/ssl/ server/ server/mpm/beos/ server/mpm/experimental/event/
server/mpm/exper...
Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
Ruediger Pluem wrote:
>
> Hm, what backport are you thinking of? I thought of backporting it to 2.2.x
> not to 2.0.x. I see no general backwards compatibilty of modules written for
> 2.2.x to 2.0.x.
Well, we are talking about breaking <= 2.2.3 / > 2.2.3 right?
You are right, the new function would require an MMN bump. I'm rethinking
this, most modules don't directly query this information, so I suppose it's
not as horrible as I thought. It will be up to the module authors to be as
conservative or optimistic about using this API and spelling out the version
required for their module.
Nevermind, no problem with backporting to 2.2 ;-) Just don't change the
ap_get_server_version export or function signature, and those who want
to adopt _banner will.
(The more I think about this from the principle of least (unpleasant) surprise,
the more I think the existing function's behavior shouldn't change, and the
-new- function should provide the full description no matter what the settings
for the server signature are.)
Re: svn commit: r440337 - in /httpd/httpd/trunk: ./ include/ modules/arch/netware/
modules/experimental/ modules/generators/ modules/http/ modules/mappers/
modules/proxy/ modules/ssl/ server/ server/mpm/beos/ server/mpm/experimental/event/
server/mpm/exper...
Posted by Ruediger Pluem <rp...@apache.org>.
On 09/05/2006 11:49 PM, William A. Rowe, Jr. wrote:
> Brian Akins wrote:
>
>>Ruediger Pluem wrote:
>>
>>
>>>1. If we stick to
>>>
>>>AP_DECLARE(const char *) ap_get_server_version(void);
>>>
>>>and do
>>>
>>>#define ap_get_server_banner ap_get_server_version
>>
>>
>>I hate macros. Just do it like:
>>
>>AP_DECLARE(const char *) ap_get_server_banner() {
>> return ap_get_server_version();
>>}
>>
>>That way, it gets a symbol rather than disappearing after compile.
>
>
> If we do that, we break backwards compatibility that otherwise existed
> back to 2.0.44 for anyone who uses the new symbol.
Hm, what backport are you thinking of? I thought of backporting it to 2.2.x
not to 2.0.x. I see no general backwards compatibilty of modules written for
2.2.x to 2.0.x.
But appart from this, isn't this what minor bumps are for? If someone wants to use
the new symbol this would only work if the module is used with a httpd that has
a minimum minor module magic number.
Regards
RĂ¼diger
Re: svn commit: r440337 - in /httpd/httpd/trunk: ./ include/ modules/arch/netware/
modules/experimental/ modules/generators/ modules/http/ modules/mappers/
modules/proxy/ modules/ssl/ server/ server/mpm/beos/ server/mpm/experimental/event/
server/mpm/exper...
Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
Brian Akins wrote:
> Ruediger Pluem wrote:
>
>> 1. If we stick to
>>
>> AP_DECLARE(const char *) ap_get_server_version(void);
>>
>> and do
>>
>> #define ap_get_server_banner ap_get_server_version
>
>
> I hate macros. Just do it like:
>
> AP_DECLARE(const char *) ap_get_server_banner() {
> return ap_get_server_version();
> }
>
> That way, it gets a symbol rather than disappearing after compile.
If we do that, we break backwards compatibility that otherwise existed
back to 2.0.44 for anyone who uses the new symbol.
I'd skip the idea of backporting; there's no way to do this and still
retain this backwards module compatibility across minor versions.
Let's just move on 2.4.0 at our first opportunity.
Re: svn commit: r440337 - in /httpd/httpd/trunk: ./ include/ modules/arch/netware/
modules/experimental/ modules/generators/ modules/http/ modules/mappers/
modules/proxy/ modules/ssl/ server/ server/mpm/beos/ server/mpm/experimental/event/
server/mpm/exper...
Posted by Brian Akins <br...@turner.com>.
Ruediger Pluem wrote:
> 1. If we stick to
>
> AP_DECLARE(const char *) ap_get_server_version(void);
>
> and do
>
> #define ap_get_server_banner ap_get_server_version
I hate macros. Just do it like:
AP_DECLARE(const char *) ap_get_server_banner() {
return ap_get_server_version();
}
That way, it gets a symbol rather than disappearing after compile.
--
Brian Akins
Chief Operations Engineer
Turner Digital Media Technologies