1. 18 Jul, 2018 2 commits
    • Yann Ylavic's avatar
      core: core output filter optimizations. · 2bb82219
      Yann Ylavic authored
      The core output filter used to determine first if it needed to block before
      trying to send its data (including set aside ones), and if so it did call
      send_brigade_blocking().
      
      This can be avoided by making send_brigade_nonblocking() send as much data as
      possible (nonblocking), and only if data remain check whether they should be
      flushed (blocking), according to the same ap_filter_reinstate_brigade()
      heuristics but afterward.
      
      This allows both to simplify the code (axe send_brigade_blocking and some
      duplicated logic) and optimize sends since send_brigade_nonblocking() is now
      given all the buckets so it can make use of scatter/gather (iovec) or NOPUSH
      option with the whole picture.
      
      When sendfile is available and/or with fine tuning of FlushMaxThreshold (and
      ReadBufferSize) from r1836032, one can now take advantage of modern network
      speeds and bandwidth.
      
      This commit also adds some APLOG_TRACE6 messages for outputed bytes (including
      at mod_ssl level since splitting happens there when it's active).
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1836237 13f79535-47bb-0310-9956-ffa450edef68
      2bb82219
    • Joe Orton's avatar
      * Makefile.in (install-suexec*): Fix make -jN install. · c3a02877
      Joe Orton authored
      Submitted by: Arkadiusz Miskiewicz <arekm maven.pl>
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1836154 13f79535-47bb-0310-9956-ffa450edef68
      c3a02877
  2. 17 Jul, 2018 2 commits
  3. 16 Jul, 2018 7 commits
  4. 13 Jul, 2018 3 commits
    • Yann Ylavic's avatar
      util_filter: follow up to r1835640: pending_filter_cleanup() precedence. · 93bab76a
      Yann Ylavic authored
      Register pending_filter_cleanup() as a normal cleanup (not pre_cleanup) so
      that the pending filters are still there on pool cleanup, and f->bb is set
      to NULL where needed.
      
      Then is_pending_filter() check is moved where relevant.
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1835847 13f79535-47bb-0310-9956-ffa450edef68
      93bab76a
    • Yann Ylavic's avatar
      event: always favor APR_POLLSET_WAKEABLE over method/implementation. · b4f758c9
      Yann Ylavic authored
      (probably more about correctness than a real issue since systems are
      unlikely to implement more than one/their method...).
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1835846 13f79535-47bb-0310-9956-ffa450edef68
      b4f758c9
    • Yann Ylavic's avatar
      event, worker: runtime pool. · 3088f2b0
      Yann Ylavic authored
      MPMs event and worker both need a dedicated pool to handle the creation of
      the threads (listener, workers) and synchronization objects (queues, pollset,
      mutexes...) in the start_threads() thread, with at least the lifetime of
      the connections they handle, and thus survive pchild destruction (notably
      in ONE_PROCCESS mode, but SIG_UNGRACEFUL is concerned too).
      
      For instance, without this fix, the below backtrace can happen in ONE_PROCCESS
      mode and a signal/^C is received (with active connections):
      
      Thread 1 "httpd" received signal SIGSEGV, Segmentation fault.
      (gdb) bt
      #0  <BOOM>
      #1  0x00007ffff7c7e016 in apr_file_write (thefile=0x0, ...)
                                                ^ NULL (cleared)
                             at file_io/unix/readwrite.c:230
      #2  0x00007ffff7c7e4a7 in apr_file_putc (ch=1 '\001', thefile=0x0)
                                                            ^ NULL (cleared)
                             at file_io/unix/readwrite.c:377
      #3  0x00007ffff7c8da4a in apr_pollset_wakeup (pollset=0x55555568b870)
                                                    ^ already destroyed by pchild
                             at poll/unix/pollset.c:224
      #4  0x00007ffff7fc16c7 in decrement_connection_count (cs_=0x7fff08000ea0)
                             at event.c:811
      #5  0x00007ffff7c83e15 in run_cleanups (cref=0x7fffe4002b78)
                             at memory/unix/apr_pools.c:2672
      #6  0x00007ffff7c82c2f in apr_pool_destroy (pool=0x7fffe4002b58)
                                                  ^ master_conn
                             at memory/unix/apr_pools.c:1007
      #7  0x00007ffff7c82c12 in apr_pool_destroy (pool=0x7fff08000c28)
                                                  ^ ptrans
                             at memory/unix/apr_pools.c:1004
      #8  0x00007ffff7c82c12 in apr_pool_destroy (pool=0x555555638698)
                                                  ^ pconf
                             at memory/unix/apr_pools.c:1004
      #9  0x00007ffff7c82c12 in apr_pool_destroy (pool=0x555555636688)
                                                  ^ pglobal
                             at memory/unix/apr_pools.c:1004
      #10 0x00005555555f4709 in ap_terminate ()
                             at unixd.c:522
      #11 0x00007ffff6dbc8f1 in __run_exit_handlers (...)
                             at exit.c:108
      #12 0x00007ffff6dbc9ea in __GI_exit (status=<optimized out>)
                             at exit.c:139
      #13 0x00007ffff7fc1616 in clean_child_exit (code=0)
                             at event.c:774
                                        ^ pchild already destroyed here
      #14 0x00007ffff7fc5ae4 in child_main (child_num_arg=0, child_bucket=0)
                             at event.c:2869
      ...
      
      
      While at it, add comments about the lifetimes of MPMs pools and their objects,
      and give each pool a tag (e.g. "pchild" accordingly to other MPMs).
      
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1835845 13f79535-47bb-0310-9956-ffa450edef68
      3088f2b0
  5. 12 Jul, 2018 12 commits
  6. 11 Jul, 2018 3 commits
  7. 10 Jul, 2018 1 commit
  8. 07 Jul, 2018 1 commit
  9. 06 Jul, 2018 3 commits
  10. 05 Jul, 2018 5 commits
  11. 03 Jul, 2018 1 commit