Skip to content
  1. Aug 14, 2006
    • Chris Darroch's avatar
      Introduce a check_config phase between pre_config and open_logs, · e2725f04
      Chris Darroch authored
      to allow modules to review interdependent configuration directive
      values and adjust them while messages can still be logged to the
      console.
      
      The open_logs phase is already used somewhat for this purpose by
      certain MPMs (winnt, prefork, worker, and event) but only by forcing
      their functions ahead of the core ap_open_logs() function, and
      since this phase runs after the ap_signal_server function during startup,
      it can not be used to generate messages on the console when restarting.
      
      Add the check_config phase to mod_info and mod_example.
      
      Handle relevant MPM directives during this phase and format messages
      for both the console and the error log, as appropriate.  Bounds and sanity
      checks on the values of the MPM directives are handled in sequence in
      this phase instead of in the various directive handling functions, since
      those functions (e.g., set_max_clients()) may not be called at all if their
      directives do not appear in the configuration files, and even if they
      are called, there is no guarantee that this will occur in any particular
      order.
      
      Remove from the worker and event MPMs the code in the pre_config phase
      that alters the configuration node tree by re-ordering ThreadsPerChild
      ahead of MaxClients.  This code is effective but insufficient; for
      example, if ServerLimit follows MaxClients, the test against server_limit
      in set_max_clients() is invalid.  (In practice, this only results in
      incorrect or absent warnings on the console, because server_limit is
      set to its configured value when the main loop re-runs the configuration
      process.)
      
      Prevent ap_threads_per_child from exceeding thread_limit in the
      winnt, worker, and event MPMs.  This situation could occur if
      ThreadsPerChild was not specified in the configuration files and
      ThreadLimit was set to a value smaller than DEFAULT_THREADS_PER_CHILD,
      because set_threads_per_child() would never be called and therefore
      its bounds check against thread_limit would not be performed.
      
      Remove from the winnt, prefork, worker, and event MPMs the
      changed_limit_at_restart flag.  Set the first_server_limit and
      first_thread_limit values during the first execution of the check_config
      function, and use them to detect changes to ServerLimit and ThreadLimit
      across restarts and issue appropriately formatted warnings.  Remove the
      comments about the error log being a "bit bucket"; this was true when
      the code was originally committed in r92530 but that was due to a bug
      fixed in r92769.
      
      Be consistent about setting all MPM configuration directive values in the
      pre_config phase.
      
      Rephrase and reformat the console and log file messages relating to
      MPM configuration directives to be consistent across all MPMs.  Use
      briefer messages when logging to the error log than to the console.
      
      Update miscellaneous stale comments and messages (e.g., reference to
      daemons_min_free in worker and event MPMs, "prefork open_logs" in
      winnt MPM, and StartServers in netware MPM).
      
      The winnt, netware, beos, and mpmt_os2 MPMs should be tested by developers
      with access to those platforms, especially the winnt MPM, which has
      unique logic with respect to distinguishing between parent and child
      processes during the configuration phases.
      
      Update the English documentation for the worker MPM's ThreadsPerChild
      directive, which no longer needs to precede other MPM directives in the
      configuration files if it has a non-default value.  The German (.de) and
      Japanese (.ja) translations should be updated by developers fluent in
      those languages.
      
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@431460 13f79535-47bb-0310-9956-ffa450edef68
      e2725f04
    • Nick Kew's avatar
      Note bugfix · 90989779
      Nick Kew authored
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@431342 13f79535-47bb-0310-9956-ffa450edef68
      90989779
  2. Aug 08, 2006
  3. Aug 02, 2006
  4. Jul 31, 2006
  5. Jul 27, 2006
  6. Jul 26, 2006
  7. Jul 25, 2006
  8. Jul 24, 2006
  9. Jul 23, 2006
  10. Jul 20, 2006
  11. Jul 13, 2006
  12. Jul 12, 2006
  13. Jul 09, 2006
  14. Jun 27, 2006
  15. Jun 26, 2006
  16. Jun 22, 2006
  17. Jun 14, 2006
  18. Jun 03, 2006
  19. Jun 02, 2006
  20. Jun 01, 2006
  21. May 30, 2006
    • Ruediger Pluem's avatar
      * Keep the Content-Type for successfully revalidated · 49d8d09a
      Ruediger Pluem authored
        cached objects, by unsetting possible Content-Type headers in
        r->headers_out and r->err_headers_out as they may be different to what
        we have received from the cache.
        Actually they are not needed as r->content_type set by
        ap_set_content_type a few lines above will be used in the store_headers
        functions of the storage providers as a fallback and the HTTP_HEADER filter
        does overwrite the Content-Type header with r->content_type anyway.
      
      PR: 39647
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@410370 13f79535-47bb-0310-9956-ffa450edef68
      49d8d09a
  22. May 28, 2006
  23. May 26, 2006
    • Chris Darroch's avatar
      On graceless shutdown or restart, send AP_SIG_GRACEFUL to all worker · 14774214
      Chris Darroch authored
      threads so that any that are polling on Keep-Alive connections will
      wake up and exit promptly.  Otherwise, on Linux, they wait until
      poll()'s timeout interval completes, which is often too long for
      the parent process; the parent issues SIGKILL before the child's main
      thread manages to re-join all the worker threads.  PR 38737.
      
      On Solaris, by contrast, the close_worker_sockets() function
      successfully alerts all worker threads that they should exit quickly.
      On Linux, this side-effect of one thread closing another's socket
      doesn't occur; see:
      
      http://bugme.osdl.org/show_bug.cgi?id=546
      
      Also, expand on the placeholder in CHANGES regarding previous
      cleanups to scoreboard.c and scoreboard.h in r404848 and r404849.
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@409715 13f79535-47bb-0310-9956-ffa450edef68
      14774214
    • Chris Darroch's avatar
      Make the worker and event MPMs not touch the scoreboard when · 053c9598
      Chris Darroch authored
      handling a fork() failure.  The previous behaviour appears to have
      been inherited from the prefork MPM, where is it appropriate.
      
      The prefork MPM sets thread_limit to 1 and therefore each
      child process has a single worker_score structure in the scoreboard's
      array, i.e., ap_scoreboard_image->servers[slot][0].  In make_child(),
      it sets this structure's status to SERVER_STARTING, and then does
      a fork(); if the fork() fails, it resets the status to SERVER_DEAD.
      
      The worker and event MPMs, by constrast, obviously use multiple
      worker_score structures per child process.  They may also be
      in use by worker threads from a previous generation at any particular
      moment.  Therefore make_child() and the parent process in general
      doesn't normally update them; make_child() doesn't set them all
      to SERVER_STARTING before doing fork(), for example.
      
      So, make_child() shouldn't set them to SERVER_DEAD if fork()
      fails (and even if it should, it certainly shouldn't be just
      updating the first one).
      
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@409693 13f79535-47bb-0310-9956-ffa450edef68
      053c9598
  24. May 21, 2006
  25. May 17, 2006
    • Ruediger Pluem's avatar
      * Handle the cases "no proxy request" and "reverse proxy request" in the same · 25ae9a5d
      Ruediger Pluem authored
        manner, when setting scheme and port_str. This is needed because if a cached
        entry is looked up by mod_cache's quick handler r->proxyreq
        is still unset in the reverse proxy case as it only gets set in the
        translate name hook (either by ProxyPass or mod_rewrite) which is run
        after the quick handler hook. This is different to the forward proxy
        case where it gets set before the quick handler is run (in the
        post_read_request hook).
        If a cache entry is created by the CACHE_SAVE filter we always have
        r->proxyreq set correctly.
        Also set scheme to ap_http_scheme(r) instead of "http" to handle SSL
        correctly.
      
      PR: 39593
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@407357 13f79535-47bb-0310-9956-ffa450edef68
      25ae9a5d