summaryrefslogtreecommitdiffstats
path: root/modules (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Changed ap_ssl_answer_challenge() and its hook to provide PEM data forStefan Eissing2021-03-034-39/+86
| | | | | | | | | | | certificate and key instead of file names. Added support for this in mod_ssl and verified with a local mod_md version that uses it. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887151 13f79535-47bb-0310-9956-ffa450edef68
* Synch from mod_md github:Joe Orton2021-03-031-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mod_md: tolerate missing revokeCert or keyChange resource RFC 8555 §7.1 states: The server MUST provide "directory" and "newNonce" resources. But RFC 8555 makes no explicit statement anywhere whether other resources are, or are not, required (with the exception of "newAuthz" which is optional). Therefore it is possible that some ACME server implementations may omit some resources; in particular those that are not an essential part of the "order" workflow. Indeed, I am working with one such server implementation, which does not at this time implement "keyChange". mod_md refuses to interact with this server because it is checking that a certain set of resources are defined in the directory object - despite some of those resources not currently being used. Update the check to require only "newNonce", "newAccount" and "newOrder". Omit from the check and therefore tolerate the absense of resources which are not always required: "revokeCert" and "keyChange". If mod_md implements revocation and/or key rollover in the future, the availability of those features should be predicated on the server's advertised capabilities. https://github.com/icing/mod_md/commit/38ff597f3ccb3c942e68701fb185c6a68f0708e4 Submitted by: Fraser Tweedale <ftweedal redhat.com> Github: closes #122 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887148 13f79535-47bb-0310-9956-ffa450edef68
* Simplify balancer-manager XSS protection, no functional change:Joe Orton2021-03-031-26/+20
| | | | | | | | | | | | | * modules/proxy/mod_proxy_balancer.c (balancer_process_balancer_worker): Drop the ok2change parameter, which makes the function a noop, and require the function is not called for that case. (balancer_handler): Only call balancer_process_balancer_worker if the nonce matches. Simplify call to balancer_display_page. Github: closes #174 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887144 13f79535-47bb-0310-9956-ffa450edef68
* rollback r1887138. Sorry ;-(Jean-Frederic Clere2021-03-032-119/+81
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887143 13f79535-47bb-0310-9956-ffa450edef68
* Allow empty <balancer://mycluster/> and add a provider to allow other ↵Jean-Frederic Clere2021-03-032-81/+119
| | | | | | modules to create workers. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887138 13f79535-47bb-0310-9956-ffa450edef68
* Fixed regression in r1887085 where a SSL function was used that is not ↵Stefan Eissing2021-03-031-1/+1
| | | | | | available in OpenSSL 1.0.2. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887134 13f79535-47bb-0310-9956-ffa450edef68
* Adding log tags where log tags are needed.Stefan Eissing2021-03-021-2/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887087 13f79535-47bb-0310-9956-ffa450edef68
* Adding more ap_ssl_* functions and hooks to the core server.Stefan Eissing2021-03-024-12/+43
| | | | | | | | | | | | | | | | | | - ap_ssl_add_cert_files() to enable other modules like mod_md to provide certificate and keys for an SSL module like mod_ssl. - ap_ssl_add_fallback_cert_files() to enable other modules like mod_md to provide a fallback certificate in case no 'proper' certificate is available for an SSL module like mod_ssl. - ap_ssl_answer_challenge() to enable other modules like mod_md to provide a certificate as used in the RFC 8555 'tls-alpn-01' challenge for the ACME protocol for an SSL module like mod_ssl. - Hooks for 'ssl_add_cert_files', 'ssl_add_fallback_cert_files' and 'ssl_answer_challenge' where modules like mod_md can provide providers to the above mentioned functions. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887085 13f79535-47bb-0310-9956-ffa450edef68
* mod_session: account for the '&' in identity_concat().Yann Ylavic2021-03-011-2/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887052 13f79535-47bb-0310-9956-ffa450edef68
* mod_session: save one apr_strtok() in session_identity_decode().Yann Ylavic2021-03-011-1/+1
| | | | | | When the encoding is invalid (missing '='), no need to parse further. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887050 13f79535-47bb-0310-9956-ffa450edef68
* Enable mod_cgid stderr handling via Unix socket fd transfer byJoe Orton2021-02-253-22/+6
| | | | | | | | | | | | | | | | | | | | | | | default, rather than as an opt-in configure flag. (This has been tested in Fedora for >12 months without seeing any new problems) * configure.in: Check for CMSG_DATA here, and define HAVE_FDPASSING and $ap_has_fdpassing if fd passing is supported. * modules/generator/config5.m4, modules/generator/mod_cgid.c: Drop configure flag for mod_cgid fdpassing support, instead enable where possible by default. * modules/proxy/config.m4: Rely on configure test for CMSG_DATA. * .travis.yml: Switch test for cgid fdpassing for testing w/o CMSG_DATA. Github: closes #172 PR: 54221 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1886912 13f79535-47bb-0310-9956-ffa450edef68
* mod_htt2, synch with changes from github module version:Stefan Eissing2021-02-2212-28/+121
| | | | | | | | | - logio: improvements to reporting of sent bytes for http2 responses - directive H2OutputBuffering, controls if any output should be sent immediately. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1886792 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: Fix workers synchronization on pchild cleanup.Yann Ylavic2021-02-062-61/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the MPM child exits and pre-workers_pool_cleanup() is called, all the workers are are necessarily in their idle critical section, thus aborting slots in the ->idle list only may leave worker threads alive, later blocked in the idle critical section with no one to wake them. Instead of the per-slot ->aborted flag, workers_pool_cleanup() will now set workers->aborted "globally" such that slot_run() does not wait to be woken up from idle in this case, and all workers really exit. Also, for workers_pool_cleanup() to wait for all the workers to reach the ->zombies list before returning, a new ->all_done condition variable is armed when the last thread exits. Since this depends on the atomic ->worker_count to reach zero, for accuracy the increment in activate_slot() is moved before the thread startup. * modules/http2/h2_workers.h (struct h2_workers): volatilize ->aborted and add the ->all_done condition variable. * modules/http2/h2_workers.c (push_slot, pop_slot): volatilize the h2_slot* being cas-ed. * modules/http2/h2_workers.c (cleanup_zombies): rename to join_zombies(), and move ->worker_count atomic inc to slot_done(). * modules/http2/h2_workers.c (get_next): when workers->aborted, leave and don't wait for ->not_idle. Return an int/bool since it's gotten / not gotten. * modules/http2/h2_workers.c (slot_done): signal ->all_done when the last worker and the MPM child are exiting. * modules/http2/h2_workers.c (slot_run): rework the loops now that get_next() is the stop signal. * modules/http2/h2_workers.c (workers_pool_cleanup): wait for ->all_done when needed, and remove the !workers->aborted condition since the cleanup will only be called once. * modules/http2/h2_workers.c (activate_slot): move ->worker_count atomic inc before the thread creation and handle failure rollback. github: closes #169 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1886255 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_http: follow up to r1886141, axe overlong scheme check.Yann Ylavic2021-02-031-5/+0
| | | | | | | | | | | Since mod_proxy can see CONNECT URIs, "hostname:port" versus "scheme:" is hardly distinguishable (we don't want to limit the length of hostnames), and we don't allocate the scheme anymore while parsing, let's simply decline unrecognized schemes (overlong or not) and be caught by the no-handler case if there really is no proxy handler interested. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1886151 13f79535-47bb-0310-9956-ffa450edef68
* * We need to check for (!scheme && (u = strchr(url, ':')) && (u - url) > 14)Ruediger Pluem2021-02-021-5/+5
| | | | | | | | | | | later as (!scheme || u[0] != '/' || u[1] != '/' || u[2] == '\0') is true for requests with the CONNECT method which we need to decline. But in many cases requests with the CONNECT method have (u - url) > 14 as in this case (u - url) is the length of the FQDN the forward proxy should connect to. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1886141 13f79535-47bb-0310-9956-ffa450edef68
* * Add lognumberRuediger Pluem2021-01-271-1/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885945 13f79535-47bb-0310-9956-ffa450edef68
* Before doing any bind check that the provided username is not NULL and that theRuediger Pluem2021-01-271-15/+26
| | | | | | | | | | | | | password is neither NULL nor empty. Binds with empty passwords always succeed, but in case the password of the user was not empty subsequent LDAP operations fail. This causes authentications that use user supplied credentials (AuthLDAPInitialBindAsUser set to on) to fail with status code 500 instead of 401 if the user supplied an empty password. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885940 13f79535-47bb-0310-9956-ffa450edef68
* Do not allow to set empty bind passwords to be set via AuthLDAPBindPasswordRuediger Pluem2021-01-271-0/+4
| | | | | | | | Binds with empty passwords always succeed, but in case the password of the user was not empty subsequent LDAP operations fail. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885939 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_hcheck: don't pile up health checks. PR 63010.Yann Ylavic2021-01-191-25/+40
| | | | | | | | | | | | | | | Prevent health checks from running for a worker until the last one is fully finished, to avoid making things worse (memory growth, #connections, ..). This is done by zeroing worker->s->updated before scheduling the worker in the threadpool, and resetting the time when it's finished. The scheduler then does nothing if worker->s->updated is zero. Also, to save some apr_time_now() calls when !HC_USE_THREADS, *baton->now is updated in the callback and reused by the scheduler. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885691 13f79535-47bb-0310-9956-ffa450edef68
* mod_auth_digest: Fast validation of the nonce's base64 to fail early ifYann Ylavic2021-01-181-2/+7
| | | | | | | | the format can't match anyway. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885659 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_wstunnel: follow up to r1885239: use ap_find_linked_module().Yann Ylavic2021-01-071-11/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885244 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_http: follow up to r1885239: fix *is_ssl for wss scheme.Yann Ylavic2021-01-071-1/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885240 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_wstunnel: leave Upgrade requests handling to mod_proxy_http.Yann Ylavic2021-01-074-70/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | Let mod_proxy_http's canon and scheme handlers accept "ws[s]:" schemes so that mod_proxy_wstunnel can decline requests when mod_proxy_http is loaded. * modules/proxy/{mod_proxy.h,proxy_util.c} (ap_proxy_worker_can_upgrade): Add a "dflt" argument to ap_proxy_worker_can_upgrade() which, if not NULL, is matched when no worker upgrade= parameter is configured. This allows to handle the default "Upgrade: websocket" case for "ws[s]:" schemes. * modules/proxy/mod_proxy_http.c (proxy_http_canon, proxy_http_handler): Add and use the new get_url_scheme() helper to parse URL schemes handled by mod_proxy_http and use it in canon and scheme handlers. This helper now accepts ws[s] schemes. * modules/proxy/mod_proxy_wstunnel.c (proxy_wstunnel_post_config): New post_config hook to detect whether mod_proxy_http is loaded and set global fallback_to_mod_proxy_http flag in this case. * modules/proxy/mod_proxy_wstunnel.c (proxy_wstunnel_check_trans, proxy_wstunnel_canon, proxy_wstunnel_handler): These hooks now early return DECLINED if fallback_to_mod_proxy_http is set. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1885239 13f79535-47bb-0310-9956-ffa450edef68
* Treat non-leaf certificates present in SSLProxyMachineCertificateFileJoe Orton2020-12-171-13/+33
| | | | | | | | | | | | | | the same was as non-leaf certs are in SSLCertificateFile - use them to build the trusted cert chain for the end-entity (client) cert. * modules/ssl/ssl_engine_init.c (ssl_init_proxy_certs): For any non-leaf certificate present in the configured, trust as if used in SSLProxyMachineCertificateChainFile. Github: closes #151 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884552 13f79535-47bb-0310-9956-ffa450edef68
* * modules/ssl/ssl_private.h (modssl_pk_proxy_t): Update comment,Joe Orton2020-12-171-4/+7
| | | | | | | no functional change. [skip ci] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884551 13f79535-47bb-0310-9956-ffa450edef68
* * modules/mappers/mod_rewrite.c: Remove unused MAX_COOKIE_LEN.Joe Orton2020-12-161-4/+0
| | | | | | | | Submitted by: Bryan Heden <b.heden gmail.com> Github: closes #147 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884510 13f79535-47bb-0310-9956-ffa450edef68
* The Microsoft OOXML format uses xml packaged into a zip file, and hasJoe Orton2020-12-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | mimetypes like: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet This mimetypes contains 'xml', but is unfortunately not an xml file. xml2enc processes these files (in particular, when mod_proxy_html is used), typically resulting in them being corrupted as it seems to attempt to perform a ISO-8859-1 to UTF-8 conversion on them. * modules/filters/mod_xml2enc.c (xml2enc_ffunc): Restrict test for XML types to matching "+xml". Submitted by: Joseph Heenan <joseph.heenan fintechlabs.io> PR: 64339 Github: closes #150 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884505 13f79535-47bb-0310-9956-ffa450edef68
* * modules/ssl/ssl_engine_init.c (ssl_init_ctx_cert_chain): Log theJoe Orton2020-12-151-1/+4
| | | | | | | OpenSSL errors if CA certs cannot be loaded. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884452 13f79535-47bb-0310-9956-ffa450edef68
* Revert r1480058, -1'ed on dev@ and STATUS.Yann Ylavic2020-12-103-122/+55
| | | | | | | | | | | Never backported (and never will supposedly), while often creating merge conflicts. See https://lists.apache.org/thread.html/be0e7bdc3510fddd2dd80accece44917eba361ef4fcc713dd0f7f7fa%401367999236%40%3Cdev.httpd.apache.org%3E and https://lists.apache.org/thread.html/6e63271b308a2723285d288857318e7bb51b6756690514d9bc75a71b%401371148914%40%3Ccvs.httpd.apache.org%3E git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884280 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_http2: stop/wait the workers threads before their pool is killed.Yann Ylavic2020-12-071-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There shouldn't be any worker thread active when pchild is destroyed (thus each thread's pool), so register workers_pool_cleanup as a pre_cleanup of pchild. This is to avoid races like the below stacktrace, where slot_run() threads are still running when clean_child_exit() is called. Thread 23 (Thread 0x7f4865b79800 (LWP 3740)): #0 0x00007f4864dec449 in pthread_cond_destroy@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x00007f4865020117 in run_cleanups (cref=<optimized out>) at memory/unix/apr_pools.c:2629 #2 pool_clear_debug (pool=pool@entry=0x558a5297e4a0, file_line=0x558a5237456b "event.c:757") at memory/unix/apr_pools.c:1830 #3 0x00007f486501ffee in pool_destroy_debug (pool=0x558a5297e4a0, file_line=<optimized out>) at memory/unix/apr_pools.c:1915 #4 0x00007f48650200f0 in pool_clear_debug (pool=pool@entry=0x558a52a41070, file_line=0x558a5237456b "event.c:757") at memory/unix/apr_pools.c:1827 #5 0x00007f486501ffee in pool_destroy_debug (pool=0x558a52a41070, file_line=<optimized out>) at memory/unix/apr_pools.c:1915 #6 0x00007f486502085c in apr_pool_destroy_debug (pool=<optimized out>, file_line=<optimized out>) at memory/unix/apr_pools.c:1957 #7 0x0000558a52326cfc in clean_child_exit (code=0) at event.c:757 #8 0x0000558a52327969 in child_main (child_num_arg=child_num_arg@entry=1, child_bucket=child_bucket@entry=0) at event.c:2926 #9 0x0000558a52327ce5 in make_child (s=0x558a52c9f840, slot=slot@entry=1, bucket=0) at event.c:2992 #10 0x0000558a52327d4c in startup_children (number_to_start=2, number_to_start@entry=3) at event.c:3015 #11 0x0000558a523289ac in event_run (_pconf=<optimized out>, plog=0x558a5273ce00, s=0x558a52c9f840) at event.c:3374 #12 0x0000558a5233e91e in ap_run_mpm (pconf=0x558a5270cbe0, plog=0x558a5273ce00, s=0x558a52c9f840) at mpm_common.c:100 #13 0x0000558a5231b763 in main (argc=<optimized out>, argv=<optimized out>) at main.c:844 Thread 2 (Thread 0x7f4840b70700 (LWP 3836)): #0 0x00007f4864dec9f3 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x00007f486501f65d in apr_thread_cond_wait (cond=<optimized out>, mutex=<optimized out>) at locks/unix/thread_cond.c:68 #2 0x00007f484e14ae4a in get_next (slot=0x558a528d5fe0) at h2_workers.c:209 #3 slot_run (thread=0x558a52828b30, wctx=0x558a528d5fe0) at h2_workers.c:228 #4 0x00007f4864de66db in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #5 0x00007f4864b0f88f in clone () from /lib/x86_64-linux-gnu/libc.so.6 Thread 1 (Thread 0x7f4841b72700 (LWP 3834)): #0 0x00007f4864a2ce97 in raise () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007f4864a2e801 in abort () from /lib/x86_64-linux-gnu/libc.so.6 #2 0x00007f4865020865 in apr_pool_destroy_debug (pool=<optimized out>, file_line=<optimized out>) at memory/unix/apr_pools.c:1955 #3 0x00007f486502b536 in apr_thread_exit (thd=thd@entry=0x558a52ba8980, retval=retval@entry=0) at threadproc/unix/thread.c:206 #4 0x00007f484e14aec6 in slot_run (thread=0x558a52ba8980, wctx=0x558a528d6060) at h2_workers.c:248 #5 0x00007f4864de66db in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #6 0x00007f4864b0f88f in clone () from /lib/x86_64-linux-gnu/libc.so.6 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884170 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: Rename server_pool as pchild in h2_workers_create()Yann Ylavic2020-12-061-3/+7
| | | | | | | | | | To clarify which parent pool the workers threads have. And add a comment about workers_pool_cleanup()'s role and when it runs. No functional change. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884169 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: revert r1883675.Yann Ylavic2020-12-061-7/+4
| | | | | | | | | | The issue was caused by races in APR_POOL_DEBUG code. Stopping the h2 workers threads as pre_cleanup of workers->pool is soon enough since it's a child of pchild already. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884168 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_fcgi: follow up to r1884068 and r1884069.Yann Ylavic2020-12-031-6/+11
| | | | | | | No mixed Transfer-Encoding and Content-Length possible. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884070 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_fcgi: follow up to r1884068.Yann Ylavic2020-12-031-34/+83
| | | | | | | | Use the same heuristic as mod_proxy_http to determinine whether we need to spool the request body. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884069 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_fcgi: Honor "SetEnv proxy-sendcl".Yann Ylavic2020-12-031-7/+72
| | | | | | | | | | | | | When proxy-sendcl is set, spool the request body to memory/disk so that a Content-Length can be computed and provided to the backend. If not set, still try to prefetch the body in non blocking mode, which allows to handle small bodies (< 16K) the same way by default. PR 57087. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884068 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy: provide prefetching and spooling mechanisms to all proxy modules.Yann Ylavic2020-12-033-247/+323
| | | | | | | | | | | Export ap_proxy_prefetch_input(), ap_proxy_spool_input() and ap_proxy_read_input() from mod_proxy_http to mod_proxy.h/proxy_util.c so that they are usable by all proxy modules. mod_proxy_fcgi will use them in a following commit. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1884067 13f79535-47bb-0310-9956-ffa450edef68
* * modules/metadata/mod_unique_id.c: Use base64url encoding forJoe Orton2020-11-301-6/+3
| | | | | | | | | | uuencoder table. PR: 57044 Submitted by: Michael Kaufmann <apache-bugzilla michael-kaufmann.ch> git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883947 13f79535-47bb-0310-9956-ffa450edef68
* mod_auth_digest: fix crash with ONE_PROCESS (debug) mode shutdown.Yann Ylavic2020-11-251-2/+6
| | | | | | | | | | | Avoid double free/cleanup by just letting shm/rmm/global_mutex cleanups do their work on restart/exit. Set the globals to NULL in initialize_tables() should cleanup_tables() be called on error. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883810 13f79535-47bb-0310-9956-ffa450edef68
* Revert r1883807 and r1883745, not the right fix.Yann Ylavic2020-11-251-43/+38
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883809 13f79535-47bb-0310-9956-ffa450edef68
* mod_auth_digest: axe useless assignment from r1883745.Yann Ylavic2020-11-251-1/+0
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883807 13f79535-47bb-0310-9956-ffa450edef68
* mod_auth_digest: fix crash on ONE_PROCESS (debug) mode shutdown.Yann Ylavic2020-11-231-38/+44
| | | | | | | | | | There need to be separate global variables for rmm and mutex(es) in the parent and child processes, otherwise in ONE_PROCCESS (were clean_child_exit() and ap_terminate() execute in the same process) the variables get overwritten in child_init and freed twice when pchild and then pconf are destroyed. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883745 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy: pconf vs pchild consistency, and correctness in ONE_PROCESS mode.Yann Ylavic2020-11-233-9/+10
| | | | | | | | | | | | | Consistently use pconf for ap_proxy_define_{worker,balancer}() and pchild for ap_proxu_initialize_{worker,balancer}() in mod_proxy [child_]init code. pchild is needed in _initialize() for mutexes/shms' child_init and cleanup, and to avoid a crash on shutdown (i.e. ap_terminate) in ONE_PROCESS mode, where worker->cp->pool is destroyed twice, let's register conn_pool_cleanup() as a pre_cleanup of pchild. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883744 13f79535-47bb-0310-9956-ffa450edef68
* mod_case_filter_in: fix memory leak.Yann Ylavic2020-11-221-1/+1
| | | | | | | Each ap_malloc()ed buffer should be free()d with its bucket. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883730 13f79535-47bb-0310-9956-ffa450edef68
* mod_example_hooks: fix global "trace" string lifetime.Yann Ylavic2020-11-221-4/+5
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883709 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_http2: follow up to r1883704.Yann Ylavic2020-11-221-5/+8
| | | | | | | For event/worker MPMs, pchild uses pconf's allocator, so its is NULL. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883707 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_http2: thread safety with MPM prefork, still..Yann Ylavic2020-11-221-3/+18
| | | | | | | | | | | The allocator of pchild has no mutex with MPM prefork, but we need one for h2 workers threads synchronization. Even though mod_http2 shouldn't be used with prefork, better be safe than sorry, so forcibly set the mutex in h2_child_init() if it doesn't exist. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883704 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_http2: stop/wait the workers threads before their pool is killed.Yann Ylavic2020-11-201-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There shouldn't be any worker thread active when pchild is destroyed (thus each thread's pool), so register workers_pool_cleanup as a pre_cleanup of pchild. This is to avoid races like the below stacktrace, where slot_run() threads are still running when clean_child_exit() is called. Thread 23 (Thread 0x7f4865b79800 (LWP 3740)): #0 0x00007f4864dec449 in pthread_cond_destroy@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x00007f4865020117 in run_cleanups (cref=<optimized out>) at memory/unix/apr_pools.c:2629 #2 pool_clear_debug (pool=pool@entry=0x558a5297e4a0, file_line=0x558a5237456b "event.c:757") at memory/unix/apr_pools.c:1830 #3 0x00007f486501ffee in pool_destroy_debug (pool=0x558a5297e4a0, file_line=<optimized out>) at memory/unix/apr_pools.c:1915 #4 0x00007f48650200f0 in pool_clear_debug (pool=pool@entry=0x558a52a41070, file_line=0x558a5237456b "event.c:757") at memory/unix/apr_pools.c:1827 #5 0x00007f486501ffee in pool_destroy_debug (pool=0x558a52a41070, file_line=<optimized out>) at memory/unix/apr_pools.c:1915 #6 0x00007f486502085c in apr_pool_destroy_debug (pool=<optimized out>, file_line=<optimized out>) at memory/unix/apr_pools.c:1957 #7 0x0000558a52326cfc in clean_child_exit (code=0) at event.c:757 #8 0x0000558a52327969 in child_main (child_num_arg=child_num_arg@entry=1, child_bucket=child_bucket@entry=0) at event.c:2926 #9 0x0000558a52327ce5 in make_child (s=0x558a52c9f840, slot=slot@entry=1, bucket=0) at event.c:2992 #10 0x0000558a52327d4c in startup_children (number_to_start=2, number_to_start@entry=3) at event.c:3015 #11 0x0000558a523289ac in event_run (_pconf=<optimized out>, plog=0x558a5273ce00, s=0x558a52c9f840) at event.c:3374 #12 0x0000558a5233e91e in ap_run_mpm (pconf=0x558a5270cbe0, plog=0x558a5273ce00, s=0x558a52c9f840) at mpm_common.c:100 #13 0x0000558a5231b763 in main (argc=<optimized out>, argv=<optimized out>) at main.c:844 Thread 2 (Thread 0x7f4840b70700 (LWP 3836)): #0 0x00007f4864dec9f3 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x00007f486501f65d in apr_thread_cond_wait (cond=<optimized out>, mutex=<optimized out>) at locks/unix/thread_cond.c:68 #2 0x00007f484e14ae4a in get_next (slot=0x558a528d5fe0) at h2_workers.c:209 #3 slot_run (thread=0x558a52828b30, wctx=0x558a528d5fe0) at h2_workers.c:228 #4 0x00007f4864de66db in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #5 0x00007f4864b0f88f in clone () from /lib/x86_64-linux-gnu/libc.so.6 Thread 1 (Thread 0x7f4841b72700 (LWP 3834)): #0 0x00007f4864a2ce97 in raise () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007f4864a2e801 in abort () from /lib/x86_64-linux-gnu/libc.so.6 #2 0x00007f4865020865 in apr_pool_destroy_debug (pool=<optimized out>, file_line=<optimized out>) at memory/unix/apr_pools.c:1955 #3 0x00007f486502b536 in apr_thread_exit (thd=thd@entry=0x558a52ba8980, retval=retval@entry=0) at threadproc/unix/thread.c:206 #4 0x00007f484e14aec6 in slot_run (thread=0x558a52ba8980, wctx=0x558a528d6060) at h2_workers.c:248 #5 0x00007f4864de66db in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #6 0x00007f4864b0f88f in clone () from /lib/x86_64-linux-gnu/libc.so.6 While at it, rename server_pool as pchild in h2_workers_create(), to make it clear which pool it is. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883675 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy_http2: explicitely apr_thread_exit() at the end of slot_run().Yann Ylavic2020-11-201-0/+2
| | | | | | | | Calling apr_thread_exit() before returning from the thread function avoids leaking the thread's pool (until/unless APR-2.0 is used). git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883668 13f79535-47bb-0310-9956-ffa450edef68
* mod_ssl_ct: join the threads before their parent pools are destroyed.Yann Ylavic2020-11-201-4/+4
| | | | | | | | | | | | | | | | | | This can happen on stop/restart for the daeomon thread, or on clean_child_exit() for the service thread. When an apr_thread_create()d thread exits it destroys its pool (in any case), either explicitely when apr_thread_exit() is called, or implicitely after the function returns (only in APR 2.0 for now). So we should make sure that mod_ssl_ct's daemon and service threads exit before pconf and pchild (the parent pools, respectively) destroy their children pools, otherwise the threads' pool will be destroyed twice and cause a crash. Using a pre_cleanup to wait for the threads avoids this. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883667 13f79535-47bb-0310-9956-ffa450edef68
* Follow up to r1883639: debug log for rfc7231#section-5.1.1Yann Ylavic2020-11-191-0/+4
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1883641 13f79535-47bb-0310-9956-ffa450edef68