[BUG] the "source" keyword must first clear optional settings
Problem reported by John Lauro. When "source ... usesrc ..." is
set in the defaults section, it is not possible anymore to remove
the "usesrc" part when declaring a more precise "source" in a
backend. The only workaround was to declare it by server.
We need to clear optional settings when declaring a new "source".
The problem was the same with the "interface" declaration.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index e427a6f..5f1f0bb 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -2199,7 +2199,13 @@
file, linenum, "source", "usesrc", "interface");
return -1;
}
-
+
+ /* we must first clear any optional default setting */
+ curproxy->options &= ~PR_O_TPXY_MASK;
+ free(curproxy->iface_name);
+ curproxy->iface_name = NULL;
+ curproxy->iface_len = 0;
+
curproxy->source_addr = *str2sa(args[1]);
curproxy->options |= PR_O_BIND_SRC;