httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <>
Subject A last [extenstive testing required] patch to close 1.3 generation
Date Fri, 18 May 2001 05:33:40 GMT
I didn't bring this up before 1.3.20, because of it's scope.

We have the essential problems on Win32:

  1. filename case folding doesn't match clib folding [it's oem locale mapped]

  2. we were folding case, but the ambiguity in the win32 filesystem leads us
     to stat down the filepath anyways.  This became redundant.

  3. we actually stat down the filepath twice, once for true case and once for
     the 'canonical' lowercase.

I'd like to implement the following straightforward patch:

  1. roll back the case folding altogether, make r->case_preserved_filename
     point at the same r->filename string, both in true case.  We walk the
     filepath only once in our systemcase-canonicalization function.  Do so in
     conjunction with the file_info call, so we don't walk the non-existant 
     path backwards, but the real path, forwards.  Suppose that heavy cgi or
     scripted sites would benefit from tripping that flag, as well, since they
     wouldn't stat for all the missing /extra segments in the path.

  2. patch the server to assure we are always comparing with case insensitive 
     semantics throughout using strcasecmp or the ignorecase flag to our
     ap_fnmatch function.  But change the semantics slightly to use ap_fs_
     case folding functions (mapping to the usual clib on all other platforms.)

     This broad patch would only apply to <File > and <Directory > blocks and
     filesystem names, and _never_ URI space names.

That's it.  No optimized rewrite of the directory_walk in 1.3 (it's written, to
be committed to the 2.0 branch alone.)  Nothing else fancy.  Simple, true case
that's filesystem API normalized.

Our existing 'overwork' has cost us in performance, but we keep walking on while
IIS reveals yet another hole in it's uri->filesystem mapping every month or few.
We can recover some of the performance, if we want to go this direction.

I'd reiterate [already wearing my flame-retardant glasses] that I'm of the opinion 
that the 1.3 chapter of apache is closing (quickly, I hope) but we will have left 
a more stable product for folks to rely upon while APR and httpd-2.0 go through 
their growing pains.

If there are objections or hints, I'll take them before I attack.  ITMT, back to
the 2.0 tree again for me :-)


View raw message