On Wed, Mar 27, 2024 at 02:34:25PM +0000, Damien Claisse wrote:
> When adding a server dynamically, we observe that when a backend has a
> dynamic persistence cookie, the new server has no cookie as we receive
> the following HTTP header:
> set-cookie: test-cookie=; Expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/
> Whereas we were expecting to receive something like the following, which
> is what we receive for a server added in the config file:
> set-cookie: test-cookie=abcdef1234567890; path=/
> After investigating code path, srv_set_dyncookie() is never called when
> adding a server through CLI, it is only called when parsing config file
> or using "set server bkd1/srv1 addr".
> To fix this, call srv_set_dyncookie() inside cli_parse_add_server().
> This patch must be backported up to 2.4.
> ---
>  src/server.c | 5 +++++
>  1 file changed, 5 insertions(+)
> diff --git a/src/server.c b/src/server.c
> index 555cae82c..a93798f03 100644
> --- a/src/server.c
> +++ b/src/server.c
> @@ -5732,6 +5732,11 @@ static int cli_parse_add_server(char **args, char 
> *payload, struct appctx *appct
>        */
>       srv->rid = (srv_id_reuse_cnt) ? (srv_id_reuse_cnt / 2) : 0;
>  
> +     /* generate new server's dynamic cookie if enabled on backend */
> +     if (be->ck_opts & PR_CK_DYNAMIC) {
> +             srv_set_dyncookie(srv);
> +     }
> +
>       /* adding server cannot fail when we reach this:
>        * publishing EVENT_HDL_SUB_SERVER_ADD
>        */
> -- 
> 2.34.1
> 

Thank you very much. This was merged in our development tree. In the
meantime, I also enabled "cookie" keyword for dynamic servers as nothing
prevented it.

-- 
Amaury Denoyelle

Reply via email to