httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <>
Subject RE: [STATUS] (apache-1.3) Wed Apr 12 23:45:02 EDT 2000
Date Thu, 13 Apr 2000 19:01:05 GMT
Except to delete what I've noted should be killed, this isn't a
diff, it's a discussion basis.  These are out of order, Win32 
issues.  I promise to wrap up the discussion next week with a 
real diff, although if someone wants to kill the already complete
items beforehand, feel free.

The first is not a Win32 specific issue, nor one I'm 
offering to address, but so you know...

>     * suexec doesn't understand argv parameters; e.g.
>         <!--#exec cmd="./ls -l" -->
>       fails even when "ls" is in the same directory because 
> suexec is trying
>       to stat a file called "ls -l".  A patch for this is available at
>       and it's not bad except that it doesn't handle programs 
> with spaces in
>       the filename (think win32, or samba-mounted 
> filesystems).  There are
>       several PR's to this and I don't see for security 
> reasons why we can't
>       accomodate it, though it does add complexity to suexec.c.
>       PR #1120
>       Brian: +1

If someone else cares to focus on this, you simply need to watch 
for a quoted executable/script name.  Nested quoting may not be 
pretty, but it will solve the 80/20, everyone can run, and old
cgi's that had spaces in the file name will need to be edited.
Oh Well.  Please add the thought to the status file.

>     * Stipe Tolj's Cygwin32 port
> 	PR#: 2936
>         Status: Lars +1 (on concept), Martin +1 (on concept), 
> Ken +1 (concept)

I mention this only in passing... I'm not considering attacking it.
If we are interested, invite him to the 2.0 table for reconsideration?
I would strongly oppose new 1.3.x. 'platforms'.  I think the extra
layer, though, would be overkill.  Looks like it was already debated.

>     * should have a pretty little icon for Apache on Win32
>       (Resolved?! there's a tiny feather icon now!?!)
Kill this already!

>     * mod_include --> exec cgi, exec cmd, etc. don't work right.
>       Looks like a code path that isn't run anywhere else that has
>       something not quite right...  A PR or two on it.

I can't reproduce on NT.

>     * signal type handling
>     	- how to rotate logs from command line?
> 	  (Point people to Andrew Ford's cronolog because it's "better"
> 	   than ours?)

We don't do it, won't do it, and can now use piped logs in Win32.
Kill it (or simply point them anyway, so they can have fun). 

>     * JJ Keijser's patch (99/10/06) to enable mod_info on Win32
> 	PR#: PR2415, PR1442
> 	Status: 
>     * Jim Patterson's patch to make mod_info work on Win32
>         Message-ID: PR#1442
>         Status: Lars +1 (on concept), Ken +1 (concept)

Can we finally get this closed?!?  I've submitted the updated 
patch at least once, although I have yet to walk through the 
bare minimum number of EXPORT's required to accomplish it.

>     * JJ Keijser's patch (99/10/06) to: 
> 	- Run Apache as a service on Win95 (PR2208)
> 	- Use apache -i/-u to install/uninstalling Apache on Win95

Good!  I'd port to 2.0 as well.  There is -nothing- specific
that will land in the common files, the only changes will occur
in the Win32 startup/shutdown code and win32 modules.

> 	- Making sure that Apache is shut down when the system 
>       is shutdown. 
>            (PR1643, PR2472)
> 	- Add ConsoleCtrlHandler to catch Ctrl-C in the Apache 
>       console window
> 	- Make Apache shut down cleanly when run on Windows 95 (PR4125)

> 	PR#: PR2472, PR4125, PR1643 (suspended) and PR2208 (suspended).
> 	Status: Martin +1(untested)
>     * should trap ^C when running not-as-service and do 
>       proper shutdown

about time.  But I may steal from 2.0's code on this, and assure
2.0 handles all correctly (several cases are already good for 2.0).

>     * Keith Wannamaker's NT multiple services patch
> 	Message-ID: <>
> 	Status: Bill +1 (on concept), Lars +1 (on concept)

Didn't we do this?  I'll look at the patch if you point me at it.
I will also look at the fact that our service declaration/registry
entries need to indicate their dependencies that the IP stack 
must be initialized, which seems to be a problem from some reports.

>     * DDA's adding a tray application to the Windoze version 
>       for ease of status/management.
> 	<>
> 	<>
> 	Status: Ken +1, Sameer +1, Martin +1, Ben +1 (as long as
> 		we get a single executable)
> 	Paul: No like Win95 specific stuff
> 	Ken: What's W95-specific about it?

Look, the code will live in it's own module, in the os/win32
folder, with minimal (if any) changes to the common code path.
I don't like to see ap_slack around either, but if that's 
required to make Apache useable on a platform, then you do it.
This requires a windows message loop, but I can isolate that 
sufficiently to keep it out of the way.

> Win32 specific issues:

Why weren't all these things in this bucket already? :-)

>  Important
>     * fix O(n^2) attack in mod_isapi.c ... i.e. recopy the code from
>       scan_script_headers_err_core.

Ick and yuck.  It interests me (although asp interests me more)... so
I'll take a look.  I'm rather against offering isapi/asp support or
expansion to the 1.3.x family - these should be 2.0 features.  Since
the 1.3.x game is primarily unix <-> win facilities, let's keep the
focus on that till the end of the 1.3.x cycle.  If I don't fix it, I'll
document the security hole, at least to keep folks from falling in it.

>  In progress:
>     * Ben's ASP work... All agree it sounds cool.

Great, any reference to where it resides?  See my thoughts on
isapi though, above.

>  Help:
>     * There are several PRs reporting Apache looping and they 
>       each seem to implicate CGI script processing. The first 
>       PR happened about the time we migrated to using native 
>       Win32 function calls to create the child process. I have 
>       tried to recreate the problem w/o success. It just now
>       occurs to me that there may be a race condition between 
>       when the new process comes alive and the parent sending 
>       data to (or attempting to read data from) the child process.
>       CreateProcess() returns immediately, before the new process 
>       is created. The parent may be attempting I/O with the child 
>       before it's ready. TODO: investigate ways to cause the
>       parent to wait for the child process to become fully 
>       active before proceeding with CGI I/O processing.

Still a problem?  More notes?  If they are trying async, we know the
pipes deadlock.  Better to document the shortcoming in 1.3.x and
move forward with 2.0.  Other causes or ideas?

>     * proxy module doesn't load on Win95.  Why?  Good 
>       question.  PR#1462.  David Whitmarsh 
>       <> says it's because
>       you can't dynamically load a DLL that uses 
>       declspec(thread).  He supplied a patch.
> 	MID: <>

Did we do this?  I'll try it myself and look at the issue.     

>     * Proxy cache garbage collection doesn't work. PR#1891

True, and I've updated that patch (if it's the one I'm thinking of).

>     * chdir() for CGI scripts and mod_include #exec needs to be 
>       re-implemented now that CreateProcess is being used.

Hmmm?  Really?  A pointer please?

>     * process/thread model
> 	- need dynamic thread creation/destruction, similar to 
> 	  Unix process model
> 	- can't use WaitForMultipleObjects in the same way we
> 	  do now, since that has a limit of 64(!) objects.  Grr.
> 	  PR#1665

Yes, and not in 1.3.x, IMHO.  Isn't what we have sufficient till 2.0?

>     * some errors printed by CGIs to stderr don't end up making it
>       to the server log unless an extra debugging message is added
>       after they run? (PR#1725 indicates this may not be just Win32)

I just heard one today... and I'm clueless?!?

>     * handle bugs that make it pop up errors on console, ie. segv 
>       equiv?  Can we do this?  Need to make it robust.

Does it still?  I would look at this ... pointers?

>     * install
> 	- make installshield work
> 	- config in cvs tree?
> 	- install docs, etc.?
> 	- location for install

Do we have install problems still?  I've seen none (provided the
admin first uninstalls the last version).

>     * the mutex should be critical-regions, since the current design
>       is creating a mess of SO calls that are unnecessary
>     * we don't mmap on NT.  Use TransmitFile?

Perhaps - steal from 2.0 what I already fixing for 95?  No promises.

>     * CGIs
> 	- docs on how they work w/scripts
> 	- WTF is the buffering coming from?
> 	    - we don't have a way to make non-blocking files on NT!

I say drop threading/buffering from the wish list/todo.
The docs I'll cover, including shortcomings.

>     * performance

I'm against fighting this battle until 2.0.

>     * documentation:
> 	- running the server without admin
> 	- how CGIs work
> 	- update README.NT
> 	- short/long name handling
> 	- better status page on current state of NT for users

Like I said... I will build these up.

>     * http_main.c hell
> 	- split into two files?
Not a chance... small changes fixing what's gotta be fixed.

>     * who should run the service?  Who exactly is the "system 
>       account"?
>       docs say:
>       Localsystem is a very privileged account locally, so 
>       you shouldn't run any shareware applications there. 
>       However, it has no network privileges and cannot leave 
>       the machine via any NT-secured mechanism, including
>       file system, named pipes, DCOM, or secure RPC.
>       and:
>       A service that runs in the context of the LocalSystem account
>       inherits the security context of the SCM. It is not 
>       associated with any logged-on user account and does not have 
>       credentials (domain name, user name, and password) to be used
>       for verification. This has several implications: [... removed ...]
>       That _really_ sucks.  Can we recommend running Apache as some 
>       other user?

I will write 1.3.x and 2.0 updates for the docs about requirements.
I don't want to see us rewriting the 1.3.x install scripts to create
such accounts, though.

>     * modules that need to be made to work on win32
>         - mod_example isn't multithreadreded
We don't really care for new 1.3.x development, so I'd push this to 2.0

> 	- mod_unique_id (needs mt changes)
I'm really against revisiting threading at all for the 1.3.x releases.

> 	- mod_auth_db.c  (do we want to even try this?  We 
>       should have some db of some sort... what else can
>       we pick from under win32?)
> 	- mod_auth_dbm.c
ODBC for 2.0 - but drop any thought of doing this to 1.3.x ...
or offer NT authentication, but drop that thought from 1.3.x as well.

> 	- mod_info.c (PR#1442 re exporting symbols for it...)
Discussed above

> 	- mod_log_agent.c
mod_log_agent is deprecated. Use mod_log_config instead
Kill this item.

> 	- mod_log_referer.c
As of Apache 1.3.5 it is deprecated. Use CustomLog (conditional) instead. 
Kill this item.

> 	- mod_mime_magic.c (needs access to mod_mime API stage...)
Huh?  Ok, I'll look at it.

>     * do something to disable bogus warnings

What warnings?

>     * rfc1413.c has static storage which won't work multithreaded

I'm really against revisiting threading at all for the 1.3.x releases.

>     * Currently if you double click on the conf files or the
>       log files you get a useless dialog offering the set of all
>       executables, usually after a very long pause.  Ought
>       to stuff .conf in the registry mapping it to text.

I believe that the install now does this?  

>     * apparently either "BrowserMatch" or the "nokeepalive" variable
>       cause instability - see PR#1729.

Ok, I'll read the PR.  Still a problem?

View raw message