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.socket.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
|
||||
index 8790ec0..d6c038b 100644
|
||||
index 559f90a..a386a75 100644
|
||||
--- a/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(SIGTERM, SIG_IGN);
|
||||
@ -26,7 +12,7 @@ index 8790ec0..d6c038b 100644
|
||||
if (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(SIGTERM, just_die);
|
||||
@ -40,6 +26,3 @@ index 8790ec0..d6c038b 100644
|
||||
/* The child process just closes listeners on AP_SIG_GRACEFUL.
|
||||
* 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)
|
||||
"ajp_send_header: ajp_marshal_into_msgb failed");
|
||||
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
|
||||
+++ b/modules/proxy/mod_proxy.c
|
||||
@@ -308,6 +308,12 @@ static const char *set_worker_param(apr_pool_t *p,
|
||||
(int)sizeof(worker->s->flusher));
|
||||
PROXY_STRNCPY(worker->s->flusher, val);
|
||||
@@ -314,6 +314,12 @@ static const char *set_worker_param(apr_pool_t *p,
|
||||
(int)sizeof(worker->s->upgrade));
|
||||
}
|
||||
}
|
||||
+ else if (!strcasecmp(key, "secret")) {
|
||||
+ if (PROXY_STRNCPY(worker->s->secret, val) != APR_SUCCESS) {
|
||||
@ -90,7 +90,7 @@ index d6e6500..2fe71b9 100644
|
||||
if (set_worker_hc_param_f) {
|
||||
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
|
||||
index 281a776..b416db4 100644
|
||||
index 8a0ad10..f92c185 100644
|
||||
--- a/modules/proxy/mod_proxy.h
|
||||
+++ b/modules/proxy/mod_proxy.h
|
||||
@@ -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,
|
||||
* dotted together(?) this would fit the below size (+ trailing NUL).
|
||||
@@ -442,6 +443,7 @@ typedef struct {
|
||||
int fcount; /* current count of failures */
|
||||
@@ -443,6 +444,7 @@ typedef struct {
|
||||
hcmethod_t method; /* method to use for health check */
|
||||
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) */
|
||||
} 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
|
||||
Name: httpd
|
||||
Version: 2.4.25
|
||||
Release: 10%{?dist}
|
||||
Version: 2.4.26
|
||||
Release: 1%{?dist}
|
||||
URL: http://httpd.apache.org/
|
||||
Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2
|
||||
Source1: index.html
|
||||
@ -49,7 +49,6 @@ Patch2: httpd-2.4.9-apxs.patch
|
||||
Patch3: httpd-2.4.1-deplibs.patch
|
||||
Patch5: httpd-2.4.3-layout.patch
|
||||
Patch6: httpd-2.4.3-apctl-systemd.patch
|
||||
Patch7: httpd-2.4.23-openssl11.patch
|
||||
# Needed for socket activation and mod_systemd patch
|
||||
Patch19: httpd-2.4.25-detect-systemd.patch
|
||||
# Features/functional changes
|
||||
@ -66,11 +65,8 @@ Patch35: httpd-2.4.17-sslciphdefault.patch
|
||||
# Bug fixes
|
||||
Patch56: httpd-2.4.4-mod_unique_id.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
|
||||
Patch60: httpd-2.4.25-r1738878.patch
|
||||
Patch58: httpd-2.4.25-r1738878.patch
|
||||
# Security fixes
|
||||
|
||||
License: ASL 2.0
|
||||
@ -200,7 +196,6 @@ interface for storing and accessing per-user session data.
|
||||
%patch3 -p1 -b .deplibs
|
||||
%patch5 -p1 -b .layout
|
||||
%patch6 -p1 -b .apctlsystemd
|
||||
%patch7 -p1 -b .openssl11
|
||||
|
||||
%patch19 -p1 -b .detectsystemd
|
||||
|
||||
@ -217,9 +212,7 @@ interface for storing and accessing per-user session data.
|
||||
|
||||
%patch56 -p1 -b .uniqueid
|
||||
%patch57 -p1 -b .sigint
|
||||
%patch58 -p1 -b .r1778319+
|
||||
%patch59 -p1 -b .r1787141
|
||||
%patch60 -p1 -b .r1738878
|
||||
%patch58 -p1 -b .r1738878
|
||||
|
||||
# Patch in the vendor string
|
||||
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
|
||||
|
||||
%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
|
||||
- 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