fcgid_proctbl.h

Checkout Tools
  • last updated 7 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
follow up r939472 with a more complex fix which

should work with mass vhost modules that make copies

of server_rec so they can modify some of those

settings on a per-request basis

  1. … 6 more files in changeset.
Fix the search for processes with the proper vhost config when

ServerName isn't set in every vhost or a module updates

r->server->server_hostname dynamically (e.g., mod_vhost_cdb).

In r753578, the check for vhost was added to searches for available

processes so that only processes with the same configuration would

be found.

(In what seems like a separate issue, it was also added to the

search for the count of matching processes (spawn control).)

The check was implemented by saving r->server->server_hostname

and comparing that value. This fails in the following cases:

a) ServerName hasn't been configured in each vhost

b) some module updates r->server->server_hostname dynamically

(mod_vhost_cdb is one such module)

Change the implementation to just use the server_rec. This should

be sufficient for distinguishing potentially different vhost

configs, and it provides addressibility to server->server_hostname

for logging as well.

  1. … 8 more files in changeset.
clean up declarations of buffers for cmdline and executable paths

- now there are separate fcgid-specific constants for those limits

- cmdline limit is now larger than executable path limit

use sizeof(target buffer) as third param to apr_cpystrn instead of

expected size of the buffer, to help avoid future defects

add checks for truncated paths/cmdlines in order to generate a

more helpful error message

  1. … 9 more files in changeset.
Fix lookup of process command lines when using FcgidWrapper or

access control directives, including within .htaccess files.

Making the existing command-line-to-group-ID mapping work with dynamically

discovered configurations (i.e., .htaccess files) and making it thread-safe

would require global shared-memory storage with locks, or something similar.

Instead we just use the raw command lines to help distinguish different

processes.

Also clean up some interactions between access control directives and

wrappers, specifically, since AAA directives perform a check for an

extant (executable) file based on the path they're configured with,

they can only work with wrappers if the wrapper is an actual file, not

a virtual one, and thus we can remove the additional get_wrapper_info() calls

for these directives. Effectively, the AAA directives are themselves a

kind of wrapper, since we're not looking up their process from the requested

URL. Future work might allow the AAA directives to take a command line

with arguments, making them equal citizens with non-AAA wrappers.

  1. … 11 more files in changeset.
consolidate apr global_mutex setup

use httpd 2.3.4 mutex creation APIs so that Mutex directive is

respected and can be used for mod_fcgid's mutexes

  1. … 10 more files in changeset.
axe the anonymous union support to resolve warnings or fatal

errors with different levels of Sun Studio

use the extra storage to simplify access

style improvements for r835406

  1. … 3 more files in changeset.
Add fcgid extension to mod_status

  1. … 4 more files in changeset.
separate [un]locking of the process table by the PM and

the request handling threads for better logging

(and potentially context-appropriate error handling in

the future)

  1. … 4 more files in changeset.
proctable_lock_table() and proctable_unlock_table() are only used in the file where

they're implemented; make static, axe module-public prototype, rename

  1. … 2 more files in changeset.
Allow/respect virtual host settings for the following directives:

FCGIDBusyTimeout, FCGIDDefaultMaxClassProcessCount,

FCGIDDefaultMinClassProcessCount, FCGIDIdleTimeout, and

FCGIDProcessLifetime.

Prior to r815897 they were allowed in a virtual host but ignored

since the PM had no way to see them. Now a fcgid_cmd_options

structure with this information is passed to the PM. (Existing

initial env settings, already passed to the PM, now reside in

this structure too.)

  1. … 11 more files in changeset.
don't refer to r->server as "main_server"

continue to use "main_server" only when referring to the global

server_rec

  1. … 7 more files in changeset.