Of course, one could also say that anyone who uses internal APR implementation knowledge is doing something wrong...
And they would have a point. But it still begs the question what to do w/ slotmem which must set shmem permissions. I would guess what we should really do is provide apr_shmem_perms(). We could then have httpd 2.4 require APR 1.5.1 or later and let those who choose to use ftok know the risks. On Jan 24, 2014, at 6:20 PM, Jim Jagielski <j...@jagunet.com> wrote: > It's easy to generate something unique... the problem is that > external APR users (such as mod_fcgid, etc) occasionally need > to adjust the segment resources, and thus call ftok(...). Unless > both APR *and* the users use the same proj_id, then they won't > get the right segment (if at all). > > I just couldn't think of an easy way to get around that > except for having 1.5.1 break ABI. > > What we need is apr_shm_ftok() that replaces ftok, both > internally to unix/shmem.c as well as to users. We still > would need to worry about versioning there as well since > APR consumers would need to be aware if that function > exists or not. > > On Jan 24, 2014, at 6:00 PM, Yann Ylavic <ylavic....@gmail.com> wrote: > >> According to the man >> (http://pubs.opengroup.org/onlinepubs/009696899/functions/ftok.html), ftok() >> uses only the low-order 8-bits of the id. >> Maybe the APR could use the last char of the filename instead, so that the >> users knows and can choose it. >> For APR's internal/choosen filenames (if any), this byte could be generated >> randomly. >> >> >> On Fri, Jan 24, 2014 at 10:57 PM, Jim Jagielski <j...@jagunet.com> wrote: >> On httpd there was a discussion regarding versioning, and >> this got me thinking... >> >> Included in the APR 1.5.1 changes is an internal change >> to how apr_shm_create(), when using APR_USE_SHMEM_SHMGET, >> calculates the key (via ftok())... >> >> The problem (see the Bugz report) was that using the constant >> 1 would cause collisions, so I adjusted it to use a hash >> of the filename. The problem there is that any external >> APR users that needed to also determine the key needs to >> be aware of that. And from what I can see, there is no >> easy way to do that. >> >> So I will be pulling that from 2.0-dev and 1.5-dev until >> we can figure out a better way. Ideas appreciated. >> >