IMHO we shouldn't require APR 2.0 for trunk (although trunk should be capable 
to run with 2.0).
Apart from the other stuff you mentioned before it makes it much harder to cut 
2.4.

So I am -1 on this change until APR 2.0 is at least in beta state.
So Mladen please revert.

Regards

Rüdiger

> -----Ursprüngliche Nachricht-----
> Von: Jim Jagielski [mailto:[email protected]] 
> Gesendet: Montag, 30. März 2009 16:58
> An: [email protected]
> Cc: [email protected]
> Betreff: Re: svn commit: r759711 - /httpd/httpd/trunk/os/unix/unixd.c
> 
> FWIW, this means that apr-1.4 is no longer viable for httpd-trunk.
> As of a few days ago, I could build with 1.4.x.... no longer.
> 
> Are we *sure* we want to do that?
> 
> Just asking :)
> 
> On Mar 29, 2009, at 12:05 PM, [email protected] wrote:
> 
> > Author: mturk
> > Date: Sun Mar 29 16:05:53 2009
> > New Revision: 759711
> >
> > URL: http://svn.apache.org/viewvc?rev=759711&view=rev
> > Log:
> > Use apr-2 object perms setter
> >
> > Modified:
> >    httpd/httpd/trunk/os/unix/unixd.c
> >
> > Modified: httpd/httpd/trunk/os/unix/unixd.c
> > URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/os/unix/unixd.c
> ?rev=759711&r1=759710&r2=759711&view=diff
> > =
> > =
> > =
> > =
> > =
> > =
> > =
> > =
> > 
> ======================================================================
> > --- httpd/httpd/trunk/os/unix/unixd.c (original)
> > +++ httpd/httpd/trunk/os/unix/unixd.c Sun Mar 29 16:05:53 2009
> > @@ -26,6 +26,7 @@
> > #include "apr_thread_proc.h"
> > #include "apr_strings.h"
> > #include "apr_portable.h"
> > +#include "apr_perms_set.h"
> > #ifdef HAVE_PWD_H
> > #include <pwd.h>
> > #endif
> > @@ -208,71 +209,19 @@
> >                                               attr, ugid, p);
> > }
> >
> > -/* XXX move to APR and externalize (but implement 
> differently :) ) */
> > -static apr_lockmech_e proc_mutex_mech(apr_proc_mutex_t *pmutex)
> > -{
> > -    const char *mechname = apr_proc_mutex_name(pmutex);
> > -
> > -    if (!strcmp(mechname, "sysvsem")) {
> > -        return APR_LOCK_SYSVSEM;
> > -    }
> > -    else if (!strcmp(mechname, "flock")) {
> > -        return APR_LOCK_FLOCK;
> > -    }
> > -    return APR_LOCK_DEFAULT;
> > -}
> > -
> > AP_DECLARE(apr_status_t)  
> > ap_unixd_set_proc_mutex_perms(apr_proc_mutex_t *pmutex)
> > {
> > +    apr_status_t rv = APR_SUCCESS;
> >     if (!geteuid()) {
> > -        apr_lockmech_e mech = proc_mutex_mech(pmutex);
> > -
> > -        switch(mech) {
> > -#if APR_HAS_SYSVSEM_SERIALIZE
> > -        case APR_LOCK_SYSVSEM:
> > -        {
> > -            apr_os_proc_mutex_t ospmutex;
> > -#if !APR_HAVE_UNION_SEMUN
> > -            union semun {
> > -                long val;
> > -                struct semid_ds *buf;
> > -                unsigned short *array;
> > -            };
> > -#endif
> > -            union semun ick;
> > -            struct semid_ds buf;
> > -
> > -            apr_os_proc_mutex_get(&ospmutex, pmutex);
> > -            buf.sem_perm.uid = ap_unixd_config.user_id;
> > -            buf.sem_perm.gid = ap_unixd_config.group_id;
> > -            buf.sem_perm.mode = 0600;
> > -            ick.buf = &buf;
> > -            if (semctl(ospmutex.crossproc, 0, IPC_SET, ick) < 0) {
> > -                return errno;
> > -            }
> > -        }
> > -        break;
> > -#endif
> > -#if APR_HAS_FLOCK_SERIALIZE
> > -        case APR_LOCK_FLOCK:
> > -        {
> > -            const char *lockfile = apr_proc_mutex_lockfile(pmutex);
> > -
> > -            if (lockfile) {
> > -                if (chown(lockfile, ap_unixd_config.user_id,
> > -                          -1 /* no gid change */) < 0) {
> > -                    return errno;
> > -                }
> > -            }
> > -        }
> > -        break;
> > -#endif
> > -        default:
> > -            /* do nothing */
> > -            break;
> > +        rv = APR_PERMS_SET_FN(proc_mutex)(pmutex,
> > +                                          APR_FPROT_GWRITE |  
> > APR_FPROT_UWRITE,
> > +                                          ap_unixd_config.user_id,
> > +                                          
> ap_unixd_config.group_id);
> > +        if (rv == APR_ENOTIMPL) {
> > +            rv = APR_SUCCESS;
> >         }
> >     }
> > -    return APR_SUCCESS;
> > +    return rv;
> > }
> >
> > AP_DECLARE(apr_status_t)  
> > ap_unixd_set_global_mutex_perms(apr_global_mutex_t *gmutex)
> >
> >
> 
> 

Reply via email to