new version 2.4.26

This commit is contained in:
Luboš Uhliarik 2017-06-19 11:48:36 +02:00
parent fce414a1c1
commit fd6452a0f2
8 changed files with 20 additions and 1488 deletions

1
.gitignore vendored
View File

@ -26,3 +26,4 @@ x86_64
/httpd-2.4.25.tar.bz2 /httpd-2.4.25.tar.bz2
/httpd.socket.8 /httpd.socket.8
/httpd.service.8 /httpd.service.8
/httpd-2.4.26.tar.bz2

View File

@ -1,24 +1,10 @@
From 20656c3b77cc548b59fea3bde5e2b7705d71c427 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Kalu=C5=BEa?= <jkaluza@apache.org>
Date: Mon, 18 Aug 2014 07:43:43 +0000
Subject: [PATCH] prefork: Ignore SIGINT in child. This fixes race-condition in
signals handling when httpd is runnning on foreground and user hits ctrl+c.
In this case, SIGINT is sent to all children followed by SIGTERM from the
main process, which interrupts the SIGINT handler and leads to inconsistency
(process freezes or crashes).
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1618555 13f79535-47bb-0310-9956-ffa450edef68
---
server/mpm/prefork/prefork.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/server/mpm/prefork/prefork.c b/server/mpm/prefork/prefork.c diff --git a/server/mpm/prefork/prefork.c b/server/mpm/prefork/prefork.c
index 8790ec0..d6c038b 100644 index 559f90a..a386a75 100644
--- a/server/mpm/prefork/prefork.c --- a/server/mpm/prefork/prefork.c
+++ b/server/mpm/prefork/prefork.c +++ b/server/mpm/prefork/prefork.c
@@ -222,6 +222,9 @@ static void clean_child_exit(int code) @@ -220,6 +220,9 @@ static void clean_child_exit(int code)
{ {
mpm_state = AP_MPMQ_STOPPING; retained->mpm->mpm_state = AP_MPMQ_STOPPING;
+ apr_signal(SIGHUP, SIG_IGN); + apr_signal(SIGHUP, SIG_IGN);
+ apr_signal(SIGTERM, SIG_IGN); + apr_signal(SIGTERM, SIG_IGN);
@ -26,7 +12,7 @@ index 8790ec0..d6c038b 100644
if (pchild) { if (pchild) {
apr_pool_destroy(pchild); apr_pool_destroy(pchild);
} }
@@ -817,6 +820,13 @@ static int make_child(server_rec *s, int slot) @@ -699,6 +702,13 @@ static int make_child(server_rec *s, int slot, int bucket)
*/ */
apr_signal(SIGHUP, just_die); apr_signal(SIGHUP, just_die);
apr_signal(SIGTERM, just_die); apr_signal(SIGTERM, just_die);
@ -40,6 +26,3 @@ index 8790ec0..d6c038b 100644
/* The child process just closes listeners on AP_SIG_GRACEFUL. /* The child process just closes listeners on AP_SIG_GRACEFUL.
* The pod is used for signalling the graceful restart. * The pod is used for signalling the graceful restart.
*/ */
--
2.0.4

File diff suppressed because it is too large Load Diff

View File

@ -73,12 +73,12 @@ index 67353a7..680a8f3 100644
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(00988) ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(00988)
"ajp_send_header: ajp_marshal_into_msgb failed"); "ajp_send_header: ajp_marshal_into_msgb failed");
diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c
index d6e6500..2fe71b9 100644 index f6fb473..f693f63 100644
--- a/modules/proxy/mod_proxy.c --- a/modules/proxy/mod_proxy.c
+++ b/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c
@@ -308,6 +308,12 @@ static const char *set_worker_param(apr_pool_t *p, @@ -314,6 +314,12 @@ static const char *set_worker_param(apr_pool_t *p,
(int)sizeof(worker->s->flusher)); (int)sizeof(worker->s->upgrade));
PROXY_STRNCPY(worker->s->flusher, val); }
} }
+ else if (!strcasecmp(key, "secret")) { + else if (!strcasecmp(key, "secret")) {
+ if (PROXY_STRNCPY(worker->s->secret, val) != APR_SUCCESS) { + if (PROXY_STRNCPY(worker->s->secret, val) != APR_SUCCESS) {
@ -90,7 +90,7 @@ index d6e6500..2fe71b9 100644
if (set_worker_hc_param_f) { if (set_worker_hc_param_f) {
return set_worker_hc_param_f(p, s, worker, key, val, NULL); return set_worker_hc_param_f(p, s, worker, key, val, NULL);
diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h
index 281a776..b416db4 100644 index 8a0ad10..f92c185 100644
--- a/modules/proxy/mod_proxy.h --- a/modules/proxy/mod_proxy.h
+++ b/modules/proxy/mod_proxy.h +++ b/modules/proxy/mod_proxy.h
@@ -352,6 +352,7 @@ PROXY_WORKER_HC_FAIL ) @@ -352,6 +352,7 @@ PROXY_WORKER_HC_FAIL )
@ -101,10 +101,10 @@ index 281a776..b416db4 100644
/* RFC-1035 mentions limits of 255 for host-names and 253 for domain-names, /* RFC-1035 mentions limits of 255 for host-names and 253 for domain-names,
* dotted together(?) this would fit the below size (+ trailing NUL). * dotted together(?) this would fit the below size (+ trailing NUL).
@@ -442,6 +443,7 @@ typedef struct { @@ -443,6 +444,7 @@ typedef struct {
int fcount; /* current count of failures */
hcmethod_t method; /* method to use for health check */ hcmethod_t method; /* method to use for health check */
apr_interval_time_t interval; apr_interval_time_t interval;
char upgrade[PROXY_WORKER_MAX_SCHEME_SIZE];/* upgrade protocol used by mod_proxy_wstunnel */
+ char secret[PROXY_WORKER_MAX_SECRET_SIZE]; /* authentication secret (e.g. AJP13) */ + char secret[PROXY_WORKER_MAX_SECRET_SIZE]; /* authentication secret (e.g. AJP13) */
} proxy_worker_shared; } proxy_worker_shared;

View File

@ -1,34 +0,0 @@
# ./pullrev.sh 1778319 1778331
https://bugzilla.redhat.com/show_bug.cgi?id=1410883
http://svn.apache.org/viewvc?view=revision&revision=1778319
http://svn.apache.org/viewvc?view=revision&revision=1778331
--- httpd-2.4.6/modules/core/mod_watchdog.c
+++ httpd-2.4.6/modules/core/mod_watchdog.c
@@ -436,19 +436,19 @@
{
apr_status_t rv;
const char *pk = "watchdog_init_module_tag";
- apr_pool_t *pproc = s->process->pool;
+ apr_pool_t *ppconf = pconf;
const apr_array_header_t *wl;
if (ap_state_query(AP_SQ_MAIN_STATE) == AP_SQ_MS_CREATE_PRE_CONFIG)
/* First time config phase -- skip. */
return OK;
- apr_pool_userdata_get((void *)&wd_server_conf, pk, pproc);
+ apr_pool_userdata_get((void *)&wd_server_conf, pk, ppconf);
if (!wd_server_conf) {
- if (!(wd_server_conf = apr_pcalloc(pproc, sizeof(wd_server_conf_t))))
+ if (!(wd_server_conf = apr_pcalloc(ppconf, sizeof(wd_server_conf_t))))
return APR_ENOMEM;
- apr_pool_create(&wd_server_conf->pool, pproc);
- apr_pool_userdata_set(wd_server_conf, pk, apr_pool_cleanup_null, pproc);
+ apr_pool_create(&wd_server_conf->pool, ppconf);
+ apr_pool_userdata_set(wd_server_conf, pk, apr_pool_cleanup_null, ppconf);
}
wd_server_conf->s = s;
if ((wl = ap_list_provider_names(pconf, AP_WATCHDOG_PGROUP,

View File

@ -1,103 +0,0 @@
diff --git a/modules/http2/h2_workers.c b/modules/http2/h2_workers.c
index 1dcfb2f..cbaf1bc 100644
--- a/modules/http2/h2_workers.c
+++ b/modules/http2/h2_workers.c
@@ -235,6 +235,28 @@ static apr_status_t h2_workers_start(h2_workers *workers)
return status;
}
+static apr_status_t workers_pool_cleanup(void *data)
+{
+ h2_workers *workers = data;
+ h2_worker *w;
+
+ if (!workers->aborted) {
+ workers->aborted = 1;
+
+ /* before we go, cleanup any zombies and abort the rest */
+ cleanup_zombies(workers, 1);
+ w = H2_WORKER_LIST_FIRST(&workers->workers);
+ while (w != H2_WORKER_LIST_SENTINEL(&workers->workers)) {
+ h2_worker_abort(w);
+ w = H2_WORKER_NEXT(w);
+ }
+ apr_thread_mutex_lock(workers->lock);
+ apr_thread_cond_broadcast(workers->mplx_added);
+ apr_thread_mutex_unlock(workers->lock);
+ }
+ return APR_SUCCESS;
+}
+
h2_workers *h2_workers_create(server_rec *s, apr_pool_t *server_pool,
int min_workers, int max_workers,
apr_size_t max_tx_handles)
@@ -283,50 +305,20 @@ h2_workers *h2_workers_create(server_rec *s, apr_pool_t *server_pool,
if (status == APR_SUCCESS) {
status = apr_thread_cond_create(&workers->mplx_added, workers->pool);
}
-
if (status == APR_SUCCESS) {
status = apr_thread_mutex_create(&workers->tx_lock,
APR_THREAD_MUTEX_DEFAULT,
workers->pool);
}
-
if (status == APR_SUCCESS) {
status = h2_workers_start(workers);
}
-
- if (status != APR_SUCCESS) {
- h2_workers_destroy(workers);
- workers = NULL;
+ if (status == APR_SUCCESS) {
+ apr_pool_pre_cleanup_register(pool, workers, workers_pool_cleanup);
+ return workers;
}
}
- return workers;
-}
-
-void h2_workers_destroy(h2_workers *workers)
-{
- /* before we go, cleanup any zombie workers that may have accumulated */
- cleanup_zombies(workers, 1);
-
- if (workers->mplx_added) {
- apr_thread_cond_destroy(workers->mplx_added);
- workers->mplx_added = NULL;
- }
- if (workers->lock) {
- apr_thread_mutex_destroy(workers->lock);
- workers->lock = NULL;
- }
- while (!H2_MPLX_LIST_EMPTY(&workers->mplxs)) {
- h2_mplx *m = H2_MPLX_LIST_FIRST(&workers->mplxs);
- H2_MPLX_REMOVE(m);
- }
- while (!H2_WORKER_LIST_EMPTY(&workers->workers)) {
- h2_worker *w = H2_WORKER_LIST_FIRST(&workers->workers);
- H2_WORKER_REMOVE(w);
- }
- if (workers->pool) {
- apr_pool_destroy(workers->pool);
- /* workers is gone */
- }
+ return NULL;
}
apr_status_t h2_workers_register(h2_workers *workers, struct h2_mplx *m)
diff --git a/modules/http2/h2_workers.h b/modules/http2/h2_workers.h
index ae7b4d8..b96cff3 100644
--- a/modules/http2/h2_workers.h
+++ b/modules/http2/h2_workers.h
@@ -67,10 +67,6 @@ h2_workers *h2_workers_create(server_rec *s, apr_pool_t *pool,
int min_size, int max_size,
apr_size_t max_tx_handles);
-/* Destroy the worker pool and all its threads.
- */
-void h2_workers_destroy(h2_workers *workers);
-
/**
* Registers a h2_mplx for task scheduling. If this h2_mplx runs
* out of tasks, it will be automatically be unregistered. Should

View File

@ -7,8 +7,8 @@
Summary: Apache HTTP Server Summary: Apache HTTP Server
Name: httpd Name: httpd
Version: 2.4.25 Version: 2.4.26
Release: 10%{?dist} Release: 1%{?dist}
URL: http://httpd.apache.org/ URL: http://httpd.apache.org/
Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2 Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2
Source1: index.html Source1: index.html
@ -49,7 +49,6 @@ Patch2: httpd-2.4.9-apxs.patch
Patch3: httpd-2.4.1-deplibs.patch Patch3: httpd-2.4.1-deplibs.patch
Patch5: httpd-2.4.3-layout.patch Patch5: httpd-2.4.3-layout.patch
Patch6: httpd-2.4.3-apctl-systemd.patch Patch6: httpd-2.4.3-apctl-systemd.patch
Patch7: httpd-2.4.23-openssl11.patch
# Needed for socket activation and mod_systemd patch # Needed for socket activation and mod_systemd patch
Patch19: httpd-2.4.25-detect-systemd.patch Patch19: httpd-2.4.25-detect-systemd.patch
# Features/functional changes # Features/functional changes
@ -66,11 +65,8 @@ Patch35: httpd-2.4.17-sslciphdefault.patch
# Bug fixes # Bug fixes
Patch56: httpd-2.4.4-mod_unique_id.patch Patch56: httpd-2.4.4-mod_unique_id.patch
Patch57: httpd-2.4.10-sigint.patch Patch57: httpd-2.4.10-sigint.patch
Patch58: httpd-2.4.25-r1778319+.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1434916
Patch59: httpd-2.4.25-r1787141.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1397243 # https://bugzilla.redhat.com/show_bug.cgi?id=1397243
Patch60: httpd-2.4.25-r1738878.patch Patch58: httpd-2.4.25-r1738878.patch
# Security fixes # Security fixes
License: ASL 2.0 License: ASL 2.0
@ -200,7 +196,6 @@ interface for storing and accessing per-user session data.
%patch3 -p1 -b .deplibs %patch3 -p1 -b .deplibs
%patch5 -p1 -b .layout %patch5 -p1 -b .layout
%patch6 -p1 -b .apctlsystemd %patch6 -p1 -b .apctlsystemd
%patch7 -p1 -b .openssl11
%patch19 -p1 -b .detectsystemd %patch19 -p1 -b .detectsystemd
@ -217,9 +212,7 @@ interface for storing and accessing per-user session data.
%patch56 -p1 -b .uniqueid %patch56 -p1 -b .uniqueid
%patch57 -p1 -b .sigint %patch57 -p1 -b .sigint
%patch58 -p1 -b .r1778319+ %patch58 -p1 -b .r1738878
%patch59 -p1 -b .r1787141
%patch60 -p1 -b .r1738878
# Patch in the vendor string # Patch in the vendor string
sed -i '/^#define PLATFORM/s/Unix/%{vstring}/' os/unix/os.h sed -i '/^#define PLATFORM/s/Unix/%{vstring}/' os/unix/os.h
@ -698,6 +691,9 @@ rm -rf $RPM_BUILD_ROOT
%{_rpmconfigdir}/macros.d/macros.httpd %{_rpmconfigdir}/macros.d/macros.httpd
%changelog %changelog
* Mon Jun 19 2017 Luboš Uhliarik <luhliari@redhat.com> - 2.4.26-1
- new version 2.4.26
* Mon Jun 5 2017 Joe Orton <jorton@redhat.com> - 2.4.25-10 * Mon Jun 5 2017 Joe Orton <jorton@redhat.com> - 2.4.25-10
- move unit man pages to section 8, add as Documentation= in units - move unit man pages to section 8, add as Documentation= in units

View File

@ -1 +1 @@
SHA512 (httpd-2.4.25.tar.bz2) = 6ba4ce1dcef71416cf1c0de2468c002767b5637a75744daf5beb0edd045749a751b3826c4132f594c48e4b33ca8e1b25ebfb63ac4c8b759ca066a89d3261fb22 SHA512 (httpd-2.4.26.tar.bz2) = 4b32f01f17c912011f24bf3991430d474be13836af41b26c072e3c1eab2b45a3c52851eb00423e046c59fc16e1f501d64daaee3f2469b2745857ec1982966c9a