httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <>
Subject Re: Windows HTTP API
Date Mon, 21 Jun 2004 15:52:57 GMT
Thanks for the interesting references and citations.

Apache HTTP server works at a lower level, below the layer exposed
by this http.dll API.  To actually use this interface would require a few

1a) Either support the http channel with the apr_socket_foo() API (this
     is not a great option - because the interface is too high level and
     cannot be polled, etc)

1b) or Implement an alternative core filter schema which works at the
     http.dll API layer

2) Create a separate winhttp MPM 

  2.1) When initializing vhosts in post-config, map out the vhosts registered
        in httpd.conf and register them all with http.dll

  2.2) Instead of creating a pool of socket connections, create a pool
        of http.dll handlers

  2.3) Serve requests by initializing core input and output filters at the
        connection level to the handlers identified in either 1a or 1b above.

  2.4) If ssl support is desired, this code would look more like a winsock 
        SSL connection (see mod_netware_ssl), mod_ssl couldn't be used.

So it's an interesting thought experiment to me.  But because all of the
headers decoding would be double-processed in the Win32 kernel and
in Apache itself, and win32 is handling this processing at the -kernel- level
(something both IIS and Apache are guilty of bungling from time to time),
the schema doesn't strike me as a secure or fast solution.  I didn't see
any sendfile() or other optimized mechanisms for response bodies, maybe
I just wasn't digging deep enough.

This might be good discussion for the module development list, if anyone
is looking for how-to pointers, since in Apache 2.0 the MPM is just another
module (well, ok, a very sophisticated and key module, but a module
none-the-less.)  Nothing I described above is terribly difficult.


At 05:46 PM 6/20/2004, Kornél Pál wrote:
>> To successfully allow applications to
>> use the same port on different IP
>> addresses, you must use a new utility,
>> Httpcfg.exe.
>I don't agree with MUST as it uses HTTP API and it's source code is
>available as well.
>> So I guess the real question is has one
>> tried Apache and IIS with Windows Server
>> 2003 or Windows XP SP2 via HTTP.SYS?
>Windows XP SP2 includes HTTP API however IIS 5.1 doesn't use it (uses
>Winsock) so this option doesn't exist, but on Windows Server 2003 with IIS
>6.0 it's a real opportunity.

View raw message