Accepting request 283856 from network:ha-clustering:Factory
1 OBS-URL: https://build.opensuse.org/request/show/283856 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/haproxy?expand=0&rev=23
This commit is contained in:
parent
e34dc6d53d
commit
19468e40d2
@ -1,83 +0,0 @@
|
|||||||
From 7ccea2642c54f9a07f4fbd29d3b005008cd457a3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Cyril=20Bont=C3=A9?= <cyril.bonte@free.fr>
|
|
||||||
Date: Sun, 4 Jan 2015 15:17:36 +0100
|
|
||||||
Subject: [PATCH] BUG/MEDIUM: backend: correctly detect the domain when
|
|
||||||
use_domain_only is used
|
|
||||||
|
|
||||||
balance hdr(<name>) provides on option 'use_domain_only' to match only the
|
|
||||||
domain part in a header (designed for the Host header).
|
|
||||||
|
|
||||||
Olivier Fredj reported that the hashes were not the same for
|
|
||||||
'subdomain.domain.tld' and 'domain.tld'.
|
|
||||||
|
|
||||||
This is because the pointer was rewinded one step to far, resulting in a hash
|
|
||||||
calculated against wrong values :
|
|
||||||
- '.domai' for 'subdomain.domain.tld'
|
|
||||||
- ' domai' for 'domain.tld' (beginning with the space in the header line)
|
|
||||||
|
|
||||||
Another special case is when no dot can be found in the header : the hash will
|
|
||||||
be calculated against an empty string.
|
|
||||||
|
|
||||||
The patch addresses both cases : 'domain' will be used to compute the hash for
|
|
||||||
'subdomain.domain.tld', 'domain.tld' and 'domain' (using the whole header value
|
|
||||||
for the last case).
|
|
||||||
|
|
||||||
The fix must be backported to haproxy 1.5 and 1.4.
|
|
||||||
(cherry picked from commit f607d81d09ab839fb1143b749ff231d6093f2038)
|
|
||||||
---
|
|
||||||
src/backend.c | 28 ++++++++++++++++------------
|
|
||||||
1 file changed, 16 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/backend.c b/src/backend.c
|
|
||||||
index ada8370..9980cf8 100644
|
|
||||||
--- a/src/backend.c
|
|
||||||
+++ b/src/backend.c
|
|
||||||
@@ -408,29 +408,33 @@ struct server *get_server_hh(struct session *s)
|
|
||||||
hash = gen_hash(px, p, len);
|
|
||||||
} else {
|
|
||||||
int dohash = 0;
|
|
||||||
- p += len - 1;
|
|
||||||
- start = end = p;
|
|
||||||
+ p += len;
|
|
||||||
/* special computation, use only main domain name, not tld/host
|
|
||||||
* going back from the end of string, start hashing at first
|
|
||||||
* dot stop at next.
|
|
||||||
* This is designed to work with the 'Host' header, and requires
|
|
||||||
* a special option to activate this.
|
|
||||||
*/
|
|
||||||
+ end = p;
|
|
||||||
while (len) {
|
|
||||||
- if (*p == '.') {
|
|
||||||
- if (!dohash) {
|
|
||||||
- dohash = 1;
|
|
||||||
- start = end = p - 1;
|
|
||||||
- }
|
|
||||||
- else
|
|
||||||
+ if (dohash) {
|
|
||||||
+ /* Rewind the pointer until the previous char
|
|
||||||
+ * is a dot, this will allow to set the start
|
|
||||||
+ * position of the domain. */
|
|
||||||
+ if (*(p - 1) == '.')
|
|
||||||
break;
|
|
||||||
- } else {
|
|
||||||
- if (dohash)
|
|
||||||
- start--;
|
|
||||||
}
|
|
||||||
- len--;
|
|
||||||
+ else if (*p == '.') {
|
|
||||||
+ /* The pointer is rewinded to the dot before the
|
|
||||||
+ * tld, we memorize the end of the domain and
|
|
||||||
+ * can enter the domain processing. */
|
|
||||||
+ end = p;
|
|
||||||
+ dohash = 1;
|
|
||||||
+ }
|
|
||||||
p--;
|
|
||||||
+ len--;
|
|
||||||
}
|
|
||||||
+ start = p;
|
|
||||||
hash = gen_hash(px, start, (end - start));
|
|
||||||
}
|
|
||||||
if ((px->lbprm.algo & BE_LB_HASH_MOD) == BE_LB_HMOD_AVAL)
|
|
||||||
--
|
|
||||||
2.1.2
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:090264c834477c290f6ad6da558731d50aede0800996742d15e870b9947fe517
|
|
||||||
size 1339873
|
|
3
haproxy-1.5.11.tar.gz
Normal file
3
haproxy-1.5.11.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:8b5aa462988405f09c8a6169294b202d7f524a5450a02dd92e7c216680f793bf
|
||||||
|
size 1340429
|
@ -1,3 +1,41 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Feb 1 08:27:43 UTC 2015 - mrueckert@suse.de
|
||||||
|
|
||||||
|
- update to 1.5.11
|
||||||
|
- BUG/MEDIUM: backend: correctly detect the domain when
|
||||||
|
use_domain_only is used
|
||||||
|
- MINOR: ssl: load certificates in alphabetical order
|
||||||
|
- BUG/MINOR: checks: prevent http keep-alive with http-check
|
||||||
|
expect
|
||||||
|
- BUG/MEDIUM: Do not set agent health to zero if server is
|
||||||
|
disabled in config
|
||||||
|
- MEDIUM/BUG: Only explicitly report "DOWN (agent)" if the agent
|
||||||
|
health is zero
|
||||||
|
- BUG/MINOR: stats:Fix incorrect printf type.
|
||||||
|
- DOC: add missing entry for log-format and clarify the text
|
||||||
|
- BUG/MEDIUM: http: fix header removal when previous header ends
|
||||||
|
with pure LF
|
||||||
|
- BUG/MEDIUM: channel: fix possible integer overflow on reserved
|
||||||
|
size computation
|
||||||
|
- BUG/MINOR: channel: compare to_forward with buf->i, not
|
||||||
|
buf->size
|
||||||
|
- MINOR: channel: add channel_in_transit()
|
||||||
|
- MEDIUM: channel: make buffer_reserved() use
|
||||||
|
channel_in_transit()
|
||||||
|
- MEDIUM: channel: make bi_avail() use channel_in_transit()
|
||||||
|
- BUG/MEDIUM: channel: don't schedule data in transit for leaving
|
||||||
|
until connected
|
||||||
|
- BUG/MAJOR: log: don't try to emit a log if no logger is set
|
||||||
|
- BUG/MINOR: args: add missing entry for ARGT_MAP in
|
||||||
|
arg_type_names
|
||||||
|
- BUG/MEDIUM: http: make http-request set-header compute the
|
||||||
|
string before removal
|
||||||
|
- BUG/MINOR: http: fix incorrect header value offset in
|
||||||
|
replace-hdr/replace-value
|
||||||
|
- BUG/MINOR: http: abort request processing on filter failure
|
||||||
|
- drop patch included in update:
|
||||||
|
0001-BUG-MEDIUM-backend-correctly-detect-the-domain-when-.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jan 6 09:28:16 UTC 2015 - mrueckert@suse.de
|
Tue Jan 6 09:28:16 UTC 2015 - mrueckert@suse.de
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
%bcond_without apparmor
|
%bcond_without apparmor
|
||||||
|
|
||||||
Name: haproxy
|
Name: haproxy
|
||||||
Version: 1.5.10
|
Version: 1.5.11
|
||||||
Release: 0
|
Release: 0
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
@ -61,8 +61,6 @@ Patch1: haproxy-1.2.16_config_haproxy_user.patch
|
|||||||
Patch2: haproxy-makefile_lib.patch
|
Patch2: haproxy-makefile_lib.patch
|
||||||
Patch3: sec-options.patch
|
Patch3: sec-options.patch
|
||||||
Patch4: haproxy-1.5.8-fix-bashisms.patch
|
Patch4: haproxy-1.5.8-fix-bashisms.patch
|
||||||
# PATCH-UPSTREAM
|
|
||||||
Patch5: 0001-BUG-MEDIUM-backend-correctly-detect-the-domain-when-.patch
|
|
||||||
#
|
#
|
||||||
Source99: haproxy-rpmlintrc
|
Source99: haproxy-rpmlintrc
|
||||||
#
|
#
|
||||||
@ -97,7 +95,6 @@ the most work done from every CPU cycle.
|
|||||||
%patch2
|
%patch2
|
||||||
%patch3
|
%patch3
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%{__make} \
|
%{__make} \
|
||||||
|
Loading…
Reference in New Issue
Block a user