tree 2e50cc70f304a3c046e5ec0abed7d1cf2c45a4c2
parent 3d36d4e720a76a12c7f6cd64c7971237d7d92d78
author Frédéric Lécaille <flecaille@haproxy.com> 1567425748 +0200
committer Christopher Faulet <cfaulet@haproxy.com> 1567586145 +0200

BUG/MEDIUM: peers: local peer socket not bound.

This bug came with 015e4d7 commit: "MINOR: stick-tables: Add peers process
binding computing" where the "stick" rules cases were missing when computing
the peer local listener process binding. At parsing time we store in the
stick-table struct ->proxies_list the proxies which refer to this stick-table.
The process binding is computed after having parsed the entire configuration file
with this simple loop in cfgparse.c:

     /* compute the required process bindings for the peers from <stktables_list>
      * for all the stick-tables, the ones coming with "peers" sections included.
      */
     for (t = stktables_list; t; t = t->next) {
             struct proxy *p;

             for (p = t->proxies_list; p; p = p->next_stkt_ref) {
                     if (t->peers.p && t->peers.p->peers_fe) {
                             t->peers.p->peers_fe->bind_proc |= p->bind_proc;
                     }
             }
     }

Note that if this process binding is not correctly initialized, the child forked
by the master-worker stops the peer local listener. Should be also the case
when daemonizing haproxy.

Must be backported to 2.0.

(cherry picked from commit 9c3a0ceeacebbe9182a5b253e55d37611b98a809)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
