You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by William A Rowe Jr <wr...@rowe-clan.net> on 2021/10/07 03:55:47 UTC

Re: pollset WAKEABLE

On Tue, Sep 28, 2021, 07:22 stefan@eissing.org <st...@eissing.org> wrote:

>
> > Am 28.09.2021 um 14:10 schrieb stefan@eissing.org:
> >
> >> Am 28.09.2021 um 14:04 schrieb Yann Ylavic <yl...@gmail.com>:
> >>
> >> On Tue, Sep 28, 2021 at 1:08 PM stefan@eissing.org <st...@eissing.org>
> wrote:
> >>>
> >>> Does anyone know which platforms do *not* support WAKEABLE apr
> pollsets?
> >>
> >> Last time I checked (IIRC) all platforms support it on the APR side,
> >> every platform handles pipes at least it seems.
> >> Possibly it wasn't the case some (long) time ago, we are probably
> >> overly cautious with APR_POLLSET_WAKEABLE availability check in
> >> mpm_event..
> >>
> >>>
> >>> And if http2 should support this, would be adding an own wakeup pipe
> be the way to go?
> >>
> >> Looks overly cautious to me :)
> >
> > Uhm, due to an error report from Windows, I am reading the APR pollset
> > implementation again. And Windows does not support polling on pipes?
> >
> > There is a special hack inside apr to realize a wakeup pipe,
> > but otherwise it returns APR_EBADF. If I read it correctly...
> >
> > That would pose some major difficulties.
>
> Hmm, apr_file_pipe_create() under Windows makes me cry...
>

Indeed, what you think of as pipes are not what windows implemented, and
while they have been stdio for years, the left a lot to be desired.

This means I need another strategy under Windows. *sadge*
>

Such as true AF_UNIX pipes, introduced after the initial launch of Window
10/Server 2019. And can do one better in Server 2022/Windows 11 with actual
edge triggered eventing.

To bake this into apr, it needs to be run-time detected, at least if there
continues to be a single binary for apr-1.dll, but our feature macros are
all compile time.

Compound this with the fact that MS supports named pipes, but isn't
supporting socketpair to create a usefully unnamed pipe.

None of this will work in the initial Windows 10/Server 2019 releases.

At least this opens up a number of options that had been missing for 25
years.

Re: pollset WAKEABLE

Posted by "stefan@eissing.org" <st...@eissing.org>.

> Am 07.10.2021 um 05:55 schrieb William A Rowe Jr <wr...@rowe-clan.net>:
> 
> On Tue, Sep 28, 2021, 07:22 stefan@eissing.org <st...@eissing.org> wrote:
> 
> > Am 28.09.2021 um 14:10 schrieb stefan@eissing.org:
> > 
> >> Am 28.09.2021 um 14:04 schrieb Yann Ylavic <yl...@gmail.com>:
> >> 
> >> On Tue, Sep 28, 2021 at 1:08 PM stefan@eissing.org <st...@eissing.org> wrote:
> >>> 
> >>> Does anyone know which platforms do *not* support WAKEABLE apr pollsets?
> >> 
> >> Last time I checked (IIRC) all platforms support it on the APR side,
> >> every platform handles pipes at least it seems.
> >> Possibly it wasn't the case some (long) time ago, we are probably
> >> overly cautious with APR_POLLSET_WAKEABLE availability check in
> >> mpm_event..
> >> 
> >>> 
> >>> And if http2 should support this, would be adding an own wakeup pipe be the way to go?
> >> 
> >> Looks overly cautious to me :)
> > 
> > Uhm, due to an error report from Windows, I am reading the APR pollset
> > implementation again. And Windows does not support polling on pipes?
> > 
> > There is a special hack inside apr to realize a wakeup pipe, 
> > but otherwise it returns APR_EBADF. If I read it correctly...
> > 
> > That would pose some major difficulties.
> 
> Hmm, apr_file_pipe_create() under Windows makes me cry...
> 
> Indeed, what you think of as pipes are not what windows implemented, and while they have been stdio for years, the left a lot to be desired.
> 
> This means I need another strategy under Windows. *sadge*
> 
> Such as true AF_UNIX pipes, introduced after the initial launch of Window 10/Server 2019. And can do one better in Server 2022/Windows 11 with actual edge triggered eventing.

Neat.

> To bake this into apr, it needs to be run-time detected, at least if there continues to be a single binary for apr-1.dll, but our feature macros are all compile time.
> 
> Compound this with the fact that MS supports named pipes, but isn't supporting socketpair to create a usefully unnamed pipe.
> 
> None of this will work in the initial Windows 10/Server 2019 releases.
> 
> At least this opens up a number of options that had been missing for 25 years.

In the http2 case, changing the switching to dynamic detection should not pose a problem or performance penalty. When the CVE storm this week is over, I'll bring my code into trunk here.

Nice hearing from you!

Kind Regards,
Stefan