new version 2.4.26
This commit is contained in:
parent
fce414a1c1
commit
fd6452a0f2
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
|
||||||
|
@ -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
@ -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;
|
||||||
|
|
||||||
|
@ -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,
|
|
@ -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
|
|
18
httpd.spec
18
httpd.spec
@ -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
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (httpd-2.4.25.tar.bz2) = 6ba4ce1dcef71416cf1c0de2468c002767b5637a75744daf5beb0edd045749a751b3826c4132f594c48e4b33ca8e1b25ebfb63ac4c8b759ca066a89d3261fb22
|
SHA512 (httpd-2.4.26.tar.bz2) = 4b32f01f17c912011f24bf3991430d474be13836af41b26c072e3c1eab2b45a3c52851eb00423e046c59fc16e1f501d64daaee3f2469b2745857ec1982966c9a
|
||||||
|
Loading…
Reference in New Issue
Block a user