From 7c7fb36d046f93585331618a695210af39a62a97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Mon, 19 Sep 2022 16:08:29 +0200
Subject: [PATCH] rapid-cdn: Escape % in haproxy

---
 software/rapid-cdn/buildout.hash.cfg                | 2 +-
 software/rapid-cdn/templates/backend-haproxy.cfg.in | 2 +-
 software/rapid-cdn/test/test.py                     | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/software/rapid-cdn/buildout.hash.cfg b/software/rapid-cdn/buildout.hash.cfg
index 8242882b0..4e84eeb55 100644
--- a/software/rapid-cdn/buildout.hash.cfg
+++ b/software/rapid-cdn/buildout.hash.cfg
@@ -50,7 +50,7 @@ md5sum = d56e2cfab274cbbbe5b387f2f6e417df
 
 [template-backend-haproxy-configuration]
 _update_hash_filename_ = templates/backend-haproxy.cfg.in
-md5sum = 6a1c91b74266b4d819051b29458d613f
+md5sum = b4b55d931249f11e4e1256afeb74b503
 
 [template-empty]
 _update_hash_filename_ = templates/empty.in
diff --git a/software/rapid-cdn/templates/backend-haproxy.cfg.in b/software/rapid-cdn/templates/backend-haproxy.cfg.in
index c9fd575cc..e614908d7 100644
--- a/software/rapid-cdn/templates/backend-haproxy.cfg.in
+++ b/software/rapid-cdn/templates/backend-haproxy.cfg.in
@@ -126,7 +126,7 @@ backend {{ slave_instance['slave_reference'] }}-{{ scheme }}
 {%-           do active_check_list.append('rise %s' % (slave_instance['health-check-rise'])) %}
 {%-           do active_check_list.append('fall %s' % (slave_instance['health-check-fall'])) %}
 {%-           if slave_instance['health-check-http-method'] != 'CONNECT' %}
-{%-             do active_check_option_list.append('option httpchk %s %s %s' % (slave_instance['health-check-http-method'], slave_instance['health-check-http-path'] | urlencode, slave_instance['health-check-http-version'])) %}
+{%-             do active_check_option_list.append('option httpchk %s %s %s' % (slave_instance['health-check-http-method'], slave_instance['health-check-http-path'] | urlencode | replace('%', '%%'), slave_instance['health-check-http-version'])) %}
 {%-           endif %}
 {%-           do active_check_option_list.append('timeout check %ss' % (slave_instance['health-check-timeout'])) %}
 {%-         endif %}
diff --git a/software/rapid-cdn/test/test.py b/software/rapid-cdn/test/test.py
index 9de7a5ebb..2e1a7179d 100644
--- a/software/rapid-cdn/test/test.py
+++ b/software/rapid-cdn/test/test.py
@@ -7021,7 +7021,7 @@ backend _health-check-custom-http
   retries 3
   server _health-check-custom-backend-http %s   check inter 15s"""
       """ rise 3 fall 7
-  option httpchk POST /POST-path%%20to%%20be%%20encoded HTTP/1.0
+  option httpchk POST /POST-path%%%%20to%%%%20be%%%%20encoded HTTP/1.0
   timeout check 7s""" % (backend,),
       'health-check-default': """\
 backend _health-check-default-http
-- 
2.30.9