I built and tested on Windows XP SP3. There's no Win source download available at /dev/dist yet, but I did the build using the Unix sources.
It looks good in principle, so +1 but I have some observations to remark (all tests done with Win32DisableAcceptEx). See especially remark number 5). 1) Rotatelogs now uses cmd.exe (as expected) as an intermediate process between httpd and rotatelogs. 2) There are still independent cmd/rotatelogs processes associated to the parent and to the child. Each configure rotatelogs produces two pairs of processes, cmd+rotatelogs as children of the parent and another cmd/rotatelogs as children of the httpd child process. 3) Restarts recycle all those processes, including the ones attached to the parent. This is true for real restarts as well as for MaxRequestsPerChild induced ones. 4) Most of the times the restart occurs I get a "select" error message. Here's an example: [Sat Jul 25 15:26:07 2009] [notice] Child 5936: Process exiting because it reached MaxRequestsPerChild. Signaling the parent to restart a new child process. [Sat Jul 25 15:26:07 2009] [error] (OS 10022)Ein ungültiges Argument wurde angegeben. : Too many errors in select loop. Child process exiting. (the German message should be something like "Invalid Argument"). [Sat Jul 25 15:26:07 2009] [notice] Apache/2.2.12 (Win32) configured -- resuming normal operations Nevertheless the restart works. 5) Starting a service only works using the ApacheMonitor or the Windows Service Control. Using the commandline httpd.exe I can not start the service. The event log shows: [Sat Jul 25 15:11:03 2009] [notice] Disabled use of AcceptEx() WinSock2 API (OS 10048)Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden. : make_sock: could not bind to address 127.0.0.1:8000 no listening sockets available, shutting down Unable to open logs So there's a warning about using IP address or port twice. I did check, that no other process uses the port and starting via ApacheMonitor with the same config is no problem. So I guess (wildly), that we have a bug when starting from the commandline, resulting in the parent and the child both trying to do the bind. I'll see, what I can find out about it, but I would say it's not a blocker, because IMHO most users do not control the service via the commandline interface. Regards, Rainer
