Accepting request 280162 from network:ha-clustering:Factory
1 OBS-URL: https://build.opensuse.org/request/show/280162 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/haproxy?expand=0&rev=22
This commit is contained in:
parent
087642f75c
commit
e34dc6d53d
@ -0,0 +1,83 @@
|
|||||||
|
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
|
||||||
|
|
3
haproxy-1.5.10.tar.gz
Normal file
3
haproxy-1.5.10.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:090264c834477c290f6ad6da558731d50aede0800996742d15e870b9947fe517
|
||||||
|
size 1339873
|
76
haproxy-1.5.8-fix-bashisms.patch
Normal file
76
haproxy-1.5.8-fix-bashisms.patch
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
diff -Ndur haproxy-1.5.8/examples/build.cfg haproxy-1.5.8-fix-bashisms/examples/build.cfg
|
||||||
|
--- haproxy-1.5.8/examples/build.cfg 2014-10-31 11:06:53.000000000 +0200
|
||||||
|
+++ haproxy-1.5.8-fix-bashisms/examples/build.cfg 2014-11-17 04:09:42.408078486 +0200
|
||||||
|
@@ -5,12 +5,12 @@
|
||||||
|
PATCH_LIST=
|
||||||
|
FILE_LIST=
|
||||||
|
|
||||||
|
-function do_compile_only {
|
||||||
|
+do_compile_only() {
|
||||||
|
$FLXMAKE CPU_OPTS="-march=$arch -mcpu=$cpu -Os -mpreferred-stack-boundary=2 -momit-leaf-frame-pointer -malign-jumps=0" \
|
||||||
|
TARGET=linux24
|
||||||
|
}
|
||||||
|
|
||||||
|
-function do_prepack {
|
||||||
|
+do_prepack() {
|
||||||
|
mkdir -p $ROOTDIR/sbin/init.d ; cp examples/init.haproxy.flx0 $ROOTDIR/sbin/init.d/haproxy
|
||||||
|
mkdir -p $ROOTDIR/usr/sbin ; cp haproxy $ROOTDIR/usr/sbin
|
||||||
|
mkdir -p $ROOTDIR/usr/share/examples/$PKGRADIX/$PKGRADIX-$PKGVER/etc/haproxy/
|
||||||
|
diff -Ndur haproxy-1.5.8/examples/haproxy-1.1.21-flx.1.pkg haproxy-1.5.8-fix-bashisms/examples/haproxy-1.1.21-flx.1.pkg
|
||||||
|
--- haproxy-1.5.8/examples/haproxy-1.1.21-flx.1.pkg 2014-10-31 11:06:53.000000000 +0200
|
||||||
|
+++ haproxy-1.5.8-fix-bashisms/examples/haproxy-1.1.21-flx.1.pkg 2014-11-17 04:09:28.396079434 +0200
|
||||||
|
@@ -1,10 +1,10 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
-function do_compile {
|
||||||
|
+do_compile() {
|
||||||
|
$FLXMAKE COPTS="-march=$arch -mcpu=$cpu -Os -mpreferred-stack-boundary=2 -momit-leaf-frame-pointer -malign-jumps=0 -DNETFILTER -DTRANSPARENT"
|
||||||
|
}
|
||||||
|
|
||||||
|
-function do_prepack {
|
||||||
|
+do_prepack() {
|
||||||
|
mkdir -p $ROOTDIR/sbin/init.d ; cp init.d/haproxy $ROOTDIR/sbin/init.d
|
||||||
|
mkdir -p $ROOTDIR/usr/sbin ; cp haproxy $ROOTDIR/usr/sbin
|
||||||
|
mkdir -p $ROOTDIR/usr/share/examples/$PKGRADIX/$PKGRADIX-$PKGVER/etc
|
||||||
|
diff -Ndur haproxy-1.5.8/examples/haproxy.init haproxy-1.5.8-fix-bashisms/examples/haproxy.init
|
||||||
|
--- haproxy-1.5.8/examples/haproxy.init 2014-10-31 11:06:53.000000000 +0200
|
||||||
|
+++ haproxy-1.5.8-fix-bashisms/examples/haproxy.init 2014-11-17 04:10:05.127076949 +0200
|
||||||
|
@@ -116,7 +116,7 @@
|
||||||
|
check
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
- echo $"Usage: $BASENAME {start|stop|restart|reload|condrestart|status|check}"
|
||||||
|
+ echo "Usage: $BASENAME {start|stop|restart|reload|condrestart|status|check}"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
diff -Ndur haproxy-1.5.8/examples/init.haproxy haproxy-1.5.8-fix-bashisms/examples/init.haproxy
|
||||||
|
--- haproxy-1.5.8/examples/init.haproxy 2014-10-31 11:06:53.000000000 +0200
|
||||||
|
+++ haproxy-1.5.8-fix-bashisms/examples/init.haproxy 2014-11-17 04:10:58.897073312 +0200
|
||||||
|
@@ -19,7 +19,7 @@
|
||||||
|
maintfd=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
-maxfd=$[$maxconn*2 + $maintfd]
|
||||||
|
+maxfd=$(($maxconn * 2 + $maintfd))
|
||||||
|
if [ $maxfd -lt 100 ]; then
|
||||||
|
maxfd=100;
|
||||||
|
fi
|
||||||
|
@@ -31,7 +31,7 @@
|
||||||
|
# ulimit -c unlimited
|
||||||
|
|
||||||
|
# soft stop
|
||||||
|
-function do_stop {
|
||||||
|
+do_stop() {
|
||||||
|
pids=`pidof -o $$ -- $PNAME`
|
||||||
|
if [ ! -z "$pids" ]; then
|
||||||
|
echo "Asking $PNAME to terminate gracefully..."
|
||||||
|
@@ -41,7 +41,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
# dump status
|
||||||
|
-function do_status {
|
||||||
|
+do_status() {
|
||||||
|
pids=`pidof -o $$ -- $PNAME`
|
||||||
|
if [ ! -z "$pids" ]; then
|
||||||
|
echo "Dumping $PNAME status in logs."
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:5f51aa8e20a8a3a11be16bd5f5ef382a5e95526803a89182fe1c15a428564722
|
|
||||||
size 1339917
|
|
@ -1,3 +1,93 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jan 6 09:28:16 UTC 2015 - mrueckert@suse.de
|
||||||
|
|
||||||
|
- pull fix from usptream:
|
||||||
|
0001-BUG-MEDIUM-backend-correctly-detect-the-domain-when-.patch
|
||||||
|
BUG/MEDIUM: backend: correctly detect the domain when
|
||||||
|
use_domain_only is used
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Dec 31 22:17:18 UTC 2014 - mrueckert@suse.de
|
||||||
|
|
||||||
|
- update to 1.5.10
|
||||||
|
- DOC: fix a few typos
|
||||||
|
- BUG/MINOR: http: fix typo: "401 Unauthorized" => "407
|
||||||
|
Unauthorized"
|
||||||
|
- BUG/MINOR: parse: refer curproxy instead of proxy
|
||||||
|
- DOC: httplog does not support 'no'
|
||||||
|
- MINOR: map/acl/dumpstats: remove the "Done." message
|
||||||
|
- BUG/MEDIUM: sample: fix random number upper-bound
|
||||||
|
- BUG/MEDIUM: patterns: previous fix was incomplete
|
||||||
|
- BUG/MEDIUM: payload: ensure that a request channel is available
|
||||||
|
- BUG/MINOR: tcp-check: don't condition data polling on check
|
||||||
|
type
|
||||||
|
- BUG/MEDIUM: tcp-check: don't rely on random memory contents
|
||||||
|
- BUG/MEDIUM: tcp-checks: disable quick-ack unless next rule is
|
||||||
|
an expect
|
||||||
|
- BUG/MINOR: config: fix typo in condition when propagating
|
||||||
|
process binding
|
||||||
|
- BUG/MEDIUM: config: do not propagate processes between stopped
|
||||||
|
processes
|
||||||
|
- BUG/MAJOR: stream-int: properly check the memory allocation
|
||||||
|
return
|
||||||
|
- BUG/MEDIUM: memory: fix freeing logic in pool_gc2()
|
||||||
|
- BUG/MEDIUM: compression: correctly report zlib_mem
|
||||||
|
- drop patches that we pulled from git before:
|
||||||
|
0001-BUG-MEDIUM-patterns-previous-fix-was-incomplete.patch
|
||||||
|
0002-BUG-MEDIUM-payload-ensure-that-a-request-channel-is-.patch
|
||||||
|
0003-BUG-MINOR-tcp-check-don-t-condition-data-polling-on-.patch
|
||||||
|
0004-BUG-MEDIUM-tcp-check-don-t-rely-on-random-memory-con.patch
|
||||||
|
0005-BUG-MEDIUM-tcp-checks-disable-quick-ack-unless-next-.patch
|
||||||
|
0006-DOC-fix-a-few-typos.patch
|
||||||
|
0007-BUG-MEDIUM-sample-fix-random-number-upper-bound.patch
|
||||||
|
0008-DOC-httplog-does-not-support-no.patch
|
||||||
|
0009-BUG-MINOR-http-fix-typo-401-Unauthorized-407-Unautho.patch
|
||||||
|
0010-BUG-MINOR-parse-refer-curproxy-instead-of-proxy.patch
|
||||||
|
0011-BUG-MINOR-config-fix-typo-in-condition-when-propagat.patch
|
||||||
|
0012-BUG-MEDIUM-config-do-not-propagate-processes-between.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Dec 20 01:20:07 UTC 2014 - mrueckert@suse.de
|
||||||
|
|
||||||
|
- pulled some more fixes from git:
|
||||||
|
0003-BUG-MINOR-tcp-check-don-t-condition-data-polling-on-.patch
|
||||||
|
0004-BUG-MEDIUM-tcp-check-don-t-rely-on-random-memory-con.patch
|
||||||
|
0005-BUG-MEDIUM-tcp-checks-disable-quick-ack-unless-next-.patch
|
||||||
|
0006-DOC-fix-a-few-typos.patch
|
||||||
|
0007-BUG-MEDIUM-sample-fix-random-number-upper-bound.patch
|
||||||
|
0008-DOC-httplog-does-not-support-no.patch
|
||||||
|
0009-BUG-MINOR-http-fix-typo-401-Unauthorized-407-Unautho.patch
|
||||||
|
0010-BUG-MINOR-parse-refer-curproxy-instead-of-proxy.patch
|
||||||
|
0011-BUG-MINOR-config-fix-typo-in-condition-when-propagat.patch
|
||||||
|
0012-BUG-MEDIUM-config-do-not-propagate-processes-between.patch
|
||||||
|
|
||||||
|
see patch headers for details.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Nov 28 18:21:43 UTC 2014 - mrueckert@suse.de
|
||||||
|
|
||||||
|
- pulled 2 fixes from git:
|
||||||
|
- 0001-BUG-MEDIUM-patterns-previous-fix-was-incomplete.patch
|
||||||
|
Dmitry Sivachenko <trtrmitya@gmail.com> reported that commit
|
||||||
|
315ec42 ("BUG/MEDIUM: pattern: don't load more than once a
|
||||||
|
pattern list.") relies on an uninitialised variable in the
|
||||||
|
stack. While it used to work fine during the tests, if the
|
||||||
|
uninitialized variable is non-null, some patterns may be
|
||||||
|
aggregated if loaded multiple times, resulting in slower
|
||||||
|
processing, which was the original issue it tried to address.
|
||||||
|
- 0002-BUG-MEDIUM-payload-ensure-that-a-request-channel-is-.patch
|
||||||
|
Denys Fedoryshchenko reported a segfault when using certain
|
||||||
|
sample fetch functions in the "tcp-request connection" rulesets
|
||||||
|
despite the warnings. This is because some tests for the
|
||||||
|
existence of the channel were missing.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Nov 26 12:29:42 UTC 2014 - ledest@gmail.com
|
||||||
|
|
||||||
|
- fix bashisms in example scripts
|
||||||
|
- add patches:
|
||||||
|
* haproxy-1.5.8-fix-bashisms.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Nov 26 11:50:42 UTC 2014 - mrueckert@suse.de
|
Wed Nov 26 11:50:42 UTC 2014 - mrueckert@suse.de
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
%bcond_without apparmor
|
%bcond_without apparmor
|
||||||
|
|
||||||
Name: haproxy
|
Name: haproxy
|
||||||
Version: 1.5.9
|
Version: 1.5.10
|
||||||
Release: 0
|
Release: 0
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
@ -60,6 +60,10 @@ Source4: local.usr.sbin.haproxy.apparmor
|
|||||||
Patch1: haproxy-1.2.16_config_haproxy_user.patch
|
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
|
||||||
|
# PATCH-UPSTREAM
|
||||||
|
Patch5: 0001-BUG-MEDIUM-backend-correctly-detect-the-domain-when-.patch
|
||||||
|
#
|
||||||
Source99: haproxy-rpmlintrc
|
Source99: haproxy-rpmlintrc
|
||||||
#
|
#
|
||||||
Summary: The Reliable, High Performance TCP/HTTP Load Balancer
|
Summary: The Reliable, High Performance TCP/HTTP Load Balancer
|
||||||
@ -92,6 +96,8 @@ the most work done from every CPU cycle.
|
|||||||
%patch1
|
%patch1
|
||||||
%patch2
|
%patch2
|
||||||
%patch3
|
%patch3
|
||||||
|
%patch4 -p1
|
||||||
|
%patch5 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%{__make} \
|
%{__make} \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user