Sensible suggestion, provided it doesn't cause incompatibility with the previous versions; I'd have to test that. In any case, you were looking for the dev@ list, since this is a suggestion about the httpd code :)
On 8/17/2010 12:57 PM, MegaBrutal wrote: > Hello, > > I noticed that after I restart my system, there are signs that Apache > was shut down uncleanly (httpd.pid stays there, error.log doesn't > contain data on exiting). I also see a warning in my error.log, like: > [Tue Aug 17 18:43:06 2010] [warn] pid file C:/Program Files/Apache > Software Foundation/Apache2.2/logs/httpd.pid overwritten -- Unclean > shutdown of previous Apache run? > > Note that I always shut down my computer cleanly. On a clean shutdown, > services should exit cleanly as well, but Apache doesn't. > > Indeed, when I issue an "sc query Apache2.2" command, I see the following: > > SERVICE_NAME: Apache2.2 > TYPE : 10 WIN32_OWN_PROCESS > STATE : 4 RUNNING > (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) > WIN32_EXIT_CODE : 0 (0x0) > SERVICE_EXIT_CODE : 0 (0x0) > CHECKPOINT : 0x0 > WAIT_HINT : 0x0 > > It says, the Apache service ignores shutdown - it lets itself > terminated by Windows uncleanly. I've downloaded the source code, and > I've found the problem in /server/mpm/winnt/service.c, in function > "ReportStatusToSCMgr" and "service_nt_ctrl". > > I wouldn't like to mess around and making a patch, so I supply what > would need to be changed here: > > This line in "ReportStatusToSCMgr": > globdat.ssStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; > Should be replaced with this: > globdat.ssStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | > SERVICE_ACCEPT_PRESHUTDOWN | SERVICE_ACCEPT_SHUTDOWN; > > This line in "service_nt_ctrl": > if (dwCtrlCode == SERVICE_CONTROL_STOP) > Should be replaced with: > if ((dwCtrlCode == SERVICE_CONTROL_STOP) || (dwCtrlCode == > SERVICE_CONTROL_PRESHUTDOWN) || (dwCtrlCode == > SERVICE_CONTROL_SHUTDOWN)) > > NOTE: SERVICE_ACCEPT_PRESHUTDOWN and SERVICE_CONTROL_PRESHUTDOWN are > only supported in Windows Vista and above, however AFAIK earlier > Windows versions just ignore it. So it wouldn't cause compatibility > problems. On Vista & 7, the service would be shut down by a > PRESHUTDOWN; on XP and earlier, it would be shut down by a SHUTDOWN. > If you wouldn't like to use PRESHUTDOWN, it's OK, I just suggest it, > because I noticed that it takes several seconds for Apache to shut > down, so where possible, I'd start it earlier (that's the purpose of > PRESHUTDOWN) to make sure that Apache won't run out of time. > > If you'd really like me to make a patch, then I will, but first I > posted it here - it's just a minor modification, maybe it would be > easier to add for someone who already set up their system to compile > Apache on Windows, and doesn't always forget the proper "diff" command > that makes proper patches. ;) But still, if you don't feel like to do > it, I'll make a patch and also test the feature, if you promise you'd > include it in the next release. > > > Best regards, > MegaBrutal > > > P.S.: Ooops! Sorry, I was a bit outdated. I've just downloaded the > 2.3.6-alpha source code, and I notice you've already added support for > SERVICE_CONTROL_SHUTDOWN. I don't feel like to recompose my e-mail > after all. You could still consider adding SERVICE_CONTROL_PRESHUTDOWN > then. > > --------------------------------------------------------------------- > The official User-To-User support forum of the Apache HTTP Server Project. > See <URL:http://httpd.apache.org/userslist.html> for more info. > To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org > " from the digest: users-digest-unsubscr...@httpd.apache.org > For additional commands, e-mail: users-h...@httpd.apache.org > >