You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@apache.org on 2002/04/13 21:58:04 UTC

cvs commit: httpd-2.0/include ap_mmn.h

wrowe       02/04/13 12:58:04

  Modified:    .        CHANGES
               include  ap_mmn.h
  Log:
    The fix requires a bump
  
  Revision  Changes    Path
  1.704     +5 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.703
  retrieving revision 1.704
  diff -u -r1.703 -r1.704
  --- CHANGES	12 Apr 2002 19:58:51 -0000	1.703
  +++ CHANGES	13 Apr 2002 19:58:04 -0000	1.704
  @@ -1,5 +1,10 @@
   Changes with Apache 2.0.36
   
  +  *) Allow Win32 shebang scripts to follow the path (or omit the .exe
  +     suffix from the shebang command), and allow ScriptInterpreterSource
  +     Registry or RegistryStrict to override shebang lines, as 1.3 did.
  +     [William Rowe]
  +
     *) worker MPM: Fix a situation where a child exited without releasing
        the accept mutex.  Depending on the OS and mutex mechanism this 
        could result in a hang.  [Jeff Trawick]
  
  
  
  1.42      +2 -1      httpd-2.0/include/ap_mmn.h
  
  Index: ap_mmn.h
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/include/ap_mmn.h,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- ap_mmn.h	29 Mar 2002 08:17:19 -0000	1.41
  +++ ap_mmn.h	13 Apr 2002 19:58:04 -0000	1.42
  @@ -103,12 +103,13 @@
    * 20020319 (2.0.34-dev) M_INVALID changed, plus new M_* methods for RFC 3253
    * 20020327 (2.0.35-dev) Add parameter to quick_handler hook
    * 20020329 (2.0.35-dev) bump for addition of freelists to bucket API
  + * 20020413 (2.0.36-dev) bump for new arg to opt fn ap_cgi_build_command
    */
   
   #define MODULE_MAGIC_COOKIE 0x41503230UL /* "AP20" */
   
   #ifndef MODULE_MAGIC_NUMBER_MAJOR
  -#define MODULE_MAGIC_NUMBER_MAJOR 20020329
  +#define MODULE_MAGIC_NUMBER_MAJOR 20020413
   #endif
   #define MODULE_MAGIC_NUMBER_MINOR 0                     /* 0...n */
   #define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR	/* backward compat */
  
  
  

Re: cvs commit: httpd-2.0/include ap_mmn.h

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
At 04:26 PM 4/17/2002, William A. Rowe, Jr. wrote:
>At 04:05 PM 4/17/2002, Greg Stein wrote:
>>Why is this change required?
>
>So we had to add the apr_progtype_e * so that it could be updated to reflect
>the new choice of interpreter.

Doug and I were just chatting about this.  Perhaps if we change the optional_fn
and registered hooks schema to accept the -entire- arglist in the declaration
and stringify it, we could break optional functions, registered hooks and other
'dynamic' function pointers away from the entire mmn schema.

This would mean that the arglist would be checked at registration time
(at startup - so the overhead is insignificant) and the hook/optional function
registration can return a new status, such as APR_EWRONGVERSION,
if they mismatch.

Thoughts?

Bill



Re: cvs commit: httpd-2.0/include ap_mmn.h

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
At 04:05 PM 4/17/2002, Greg Stein wrote:
>Why is this change required?

Sorry... pulled in 30 directions at once.  Here's the short answer.

This bugfix is required.  If you study the entire code path of CGI creation
for Win32... you will discover that -most- exec's are by explicit full path 
names
(APR_PROGRAM).  But we discovered that the logic precluded our invoking
"perl "c:\full\path\to\script.pl" since perl wasn't decoded to 
c:\perl\bin\perl.exe.
The same change is appropriate for interpretersource Registry execution as
well.  The difference is in the -source- of the command.

The script requested by the client is untrusted.  The program or path given by
a shebang line or registry entry is trusted.

So it's entirely appropriate to invoke the shebang-specified interpreter, 
or the
interpretersource registry command, as APR_PROGRAM_PATH.  But it's
never appropriate to do so for the user-provided script.

So we had to add the apr_progtype_e * so that it could be updated to reflect
the new choice of interpreter.

In the meantime, folks are renaming APR functions, and other goodness
progresses.  Please refer back to ap_mmn.h from Apache 1.3 - we rarely
went two versions before we bumped the mmn.  Later, since 1.3.14, the
code has really stabilized.  But we can't expect that tens of thousands of
testers won't uncover deficiencies in the API, and the right answer is to
fix them.  Sure, the 2.1 tree might not bump as often, after we've gotten
the API near-perfect in 2.0 :-)

Finally, was this bump necessary?  You could argue that the registered
function I modified was principally internal.  But because this function is now
passed a pointer that is dereferenced, I felt the consequences of missing
that API change outweighed the value of "Binary Compatibility" and changing
the mmn bumping rules as we go.  I won't argue if you want to keep the change
but revert the mmn since it's 'internal'.  In fact, it's really meant for 
MPM or
platform-port authors only, I never anticipate that registered fn to be used by
typical module authors.

Bill

>On Tue, Apr 16, 2002 at 02:46:25AM -0700, Greg Stein wrote:
> > Woah... this just blew away all modules built for 2.0.35. This is an API
> > change, which thus means a very careful review of WHY this change was
> > required. Specifically, is there any way to avoid the change?
> >
> > For example, we could introduce a new function, and call that one instead
> > from our code, leaving the old API untouched for third party modules.
> >
> > IOW, please justify the necessity of bumping the MMN.
> >
> > Cheers,
> > -g
> >
> > On Sat, Apr 13, 2002 at 07:58:04PM -0000, wrowe@apache.org wrote:
> > > wrowe       02/04/13 12:58:04
> > >
> > >   Modified:    .        CHANGES
> > >                include  ap_mmn.h
> > >   Log:
> > >     The fix requires a bump
> > >
> > >   Revision  Changes    Path
> > >   1.704     +5 -0      httpd-2.0/CHANGES
> > >
> > >   Index: CHANGES
> > >   ===================================================================
> > >   RCS file: /home/cvs/httpd-2.0/CHANGES,v
> > >   retrieving revision 1.703
> > >   retrieving revision 1.704
> > >   diff -u -r1.703 -r1.704
> > >   --- CHANGES       12 Apr 2002 19:58:51 -0000      1.703
> > >   +++ CHANGES       13 Apr 2002 19:58:04 -0000      1.704
> > >   @@ -1,5 +1,10 @@
> > >    Changes with Apache 2.0.36
> > >
> > >   +  *) Allow Win32 shebang scripts to follow the path (or omit the .exe
> > >   +     suffix from the shebang command), and allow 
> ScriptInterpreterSource
> > >   +     Registry or RegistryStrict to override shebang lines, as 1.3 did.
> > >   +     [William Rowe]
> > >   +
> > >      *) worker MPM: Fix a situation where a child exited without 
> releasing
> > >         the accept mutex.  Depending on the OS and mutex mechanism this
> > >         could result in a hang.  [Jeff Trawick]
> > >
> > >
> > >
> > >   1.42      +2 -1      httpd-2.0/include/ap_mmn.h
> > >
> > >   Index: ap_mmn.h
> > >   ===================================================================
> > >   RCS file: /home/cvs/httpd-2.0/include/ap_mmn.h,v
> > >   retrieving revision 1.41
> > >   retrieving revision 1.42
> > >   diff -u -r1.41 -r1.42
> > >   --- ap_mmn.h      29 Mar 2002 08:17:19 -0000      1.41
> > >   +++ ap_mmn.h      13 Apr 2002 19:58:04 -0000      1.42
> > >   @@ -103,12 +103,13 @@
> > >     * 20020319 (2.0.34-dev) M_INVALID changed, plus new M_* methods 
> for RFC 3253
> > >     * 20020327 (2.0.35-dev) Add parameter to quick_handler hook
> > >     * 20020329 (2.0.35-dev) bump for addition of freelists to bucket API
> > >   + * 20020413 (2.0.36-dev) bump for new arg to opt fn 
> ap_cgi_build_command
> > >     */
> > >
> > >    #define MODULE_MAGIC_COOKIE 0x41503230UL /* "AP20" */
> > >
> > >    #ifndef MODULE_MAGIC_NUMBER_MAJOR
> > >   -#define MODULE_MAGIC_NUMBER_MAJOR 20020329
> > >   +#define MODULE_MAGIC_NUMBER_MAJOR 20020413
> > >    #endif
> > >    #define MODULE_MAGIC_NUMBER_MINOR 0                     /* 0...n */
> > >    #define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR    /* 
> backward compat */
> > >
> > >
> > >
> >
> > --
> > Greg Stein, http://www.lyra.org/
>
>--
>Greg Stein, http://www.lyra.org/



Re: cvs commit: httpd-2.0/include ap_mmn.h

Posted by Greg Stein <gs...@lyra.org>.
Bill? Comments?

Why is this change required?

-g

On Tue, Apr 16, 2002 at 02:46:25AM -0700, Greg Stein wrote:
> Woah... this just blew away all modules built for 2.0.35. This is an API
> change, which thus means a very careful review of WHY this change was
> required. Specifically, is there any way to avoid the change?
> 
> For example, we could introduce a new function, and call that one instead
> from our code, leaving the old API untouched for third party modules.
> 
> IOW, please justify the necessity of bumping the MMN.
> 
> Cheers,
> -g
> 
> On Sat, Apr 13, 2002 at 07:58:04PM -0000, wrowe@apache.org wrote:
> > wrowe       02/04/13 12:58:04
> > 
> >   Modified:    .        CHANGES
> >                include  ap_mmn.h
> >   Log:
> >     The fix requires a bump
> >   
> >   Revision  Changes    Path
> >   1.704     +5 -0      httpd-2.0/CHANGES
> >   
> >   Index: CHANGES
> >   ===================================================================
> >   RCS file: /home/cvs/httpd-2.0/CHANGES,v
> >   retrieving revision 1.703
> >   retrieving revision 1.704
> >   diff -u -r1.703 -r1.704
> >   --- CHANGES	12 Apr 2002 19:58:51 -0000	1.703
> >   +++ CHANGES	13 Apr 2002 19:58:04 -0000	1.704
> >   @@ -1,5 +1,10 @@
> >    Changes with Apache 2.0.36
> >    
> >   +  *) Allow Win32 shebang scripts to follow the path (or omit the .exe
> >   +     suffix from the shebang command), and allow ScriptInterpreterSource
> >   +     Registry or RegistryStrict to override shebang lines, as 1.3 did.
> >   +     [William Rowe]
> >   +
> >      *) worker MPM: Fix a situation where a child exited without releasing
> >         the accept mutex.  Depending on the OS and mutex mechanism this 
> >         could result in a hang.  [Jeff Trawick]
> >   
> >   
> >   
> >   1.42      +2 -1      httpd-2.0/include/ap_mmn.h
> >   
> >   Index: ap_mmn.h
> >   ===================================================================
> >   RCS file: /home/cvs/httpd-2.0/include/ap_mmn.h,v
> >   retrieving revision 1.41
> >   retrieving revision 1.42
> >   diff -u -r1.41 -r1.42
> >   --- ap_mmn.h	29 Mar 2002 08:17:19 -0000	1.41
> >   +++ ap_mmn.h	13 Apr 2002 19:58:04 -0000	1.42
> >   @@ -103,12 +103,13 @@
> >     * 20020319 (2.0.34-dev) M_INVALID changed, plus new M_* methods for RFC 3253
> >     * 20020327 (2.0.35-dev) Add parameter to quick_handler hook
> >     * 20020329 (2.0.35-dev) bump for addition of freelists to bucket API
> >   + * 20020413 (2.0.36-dev) bump for new arg to opt fn ap_cgi_build_command
> >     */
> >    
> >    #define MODULE_MAGIC_COOKIE 0x41503230UL /* "AP20" */
> >    
> >    #ifndef MODULE_MAGIC_NUMBER_MAJOR
> >   -#define MODULE_MAGIC_NUMBER_MAJOR 20020329
> >   +#define MODULE_MAGIC_NUMBER_MAJOR 20020413
> >    #endif
> >    #define MODULE_MAGIC_NUMBER_MINOR 0                     /* 0...n */
> >    #define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR	/* backward compat */
> >   
> >   
> >   
> 
> -- 
> Greg Stein, http://www.lyra.org/

-- 
Greg Stein, http://www.lyra.org/

Re: cvs commit: httpd-2.0/include ap_mmn.h

Posted by Greg Stein <gs...@lyra.org>.
Woah... this just blew away all modules built for 2.0.35. This is an API
change, which thus means a very careful review of WHY this change was
required. Specifically, is there any way to avoid the change?

For example, we could introduce a new function, and call that one instead
from our code, leaving the old API untouched for third party modules.

IOW, please justify the necessity of bumping the MMN.

Cheers,
-g

On Sat, Apr 13, 2002 at 07:58:04PM -0000, wrowe@apache.org wrote:
> wrowe       02/04/13 12:58:04
> 
>   Modified:    .        CHANGES
>                include  ap_mmn.h
>   Log:
>     The fix requires a bump
>   
>   Revision  Changes    Path
>   1.704     +5 -0      httpd-2.0/CHANGES
>   
>   Index: CHANGES
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/CHANGES,v
>   retrieving revision 1.703
>   retrieving revision 1.704
>   diff -u -r1.703 -r1.704
>   --- CHANGES	12 Apr 2002 19:58:51 -0000	1.703
>   +++ CHANGES	13 Apr 2002 19:58:04 -0000	1.704
>   @@ -1,5 +1,10 @@
>    Changes with Apache 2.0.36
>    
>   +  *) Allow Win32 shebang scripts to follow the path (or omit the .exe
>   +     suffix from the shebang command), and allow ScriptInterpreterSource
>   +     Registry or RegistryStrict to override shebang lines, as 1.3 did.
>   +     [William Rowe]
>   +
>      *) worker MPM: Fix a situation where a child exited without releasing
>         the accept mutex.  Depending on the OS and mutex mechanism this 
>         could result in a hang.  [Jeff Trawick]
>   
>   
>   
>   1.42      +2 -1      httpd-2.0/include/ap_mmn.h
>   
>   Index: ap_mmn.h
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/include/ap_mmn.h,v
>   retrieving revision 1.41
>   retrieving revision 1.42
>   diff -u -r1.41 -r1.42
>   --- ap_mmn.h	29 Mar 2002 08:17:19 -0000	1.41
>   +++ ap_mmn.h	13 Apr 2002 19:58:04 -0000	1.42
>   @@ -103,12 +103,13 @@
>     * 20020319 (2.0.34-dev) M_INVALID changed, plus new M_* methods for RFC 3253
>     * 20020327 (2.0.35-dev) Add parameter to quick_handler hook
>     * 20020329 (2.0.35-dev) bump for addition of freelists to bucket API
>   + * 20020413 (2.0.36-dev) bump for new arg to opt fn ap_cgi_build_command
>     */
>    
>    #define MODULE_MAGIC_COOKIE 0x41503230UL /* "AP20" */
>    
>    #ifndef MODULE_MAGIC_NUMBER_MAJOR
>   -#define MODULE_MAGIC_NUMBER_MAJOR 20020329
>   +#define MODULE_MAGIC_NUMBER_MAJOR 20020413
>    #endif
>    #define MODULE_MAGIC_NUMBER_MINOR 0                     /* 0...n */
>    #define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR	/* backward compat */
>   
>   
>   

-- 
Greg Stein, http://www.lyra.org/