From: David Lamparter Date: Thu, 18 May 2017 12:14:00 +0000 (+0200) Subject: Merge branch 'stable/3.0' X-Git-Tag: reindent-master-before~142 X-Git-Url: https://git.proxmox.com/?p=mirror_frr.git;a=commitdiff_plain;h=fa84d1932b0da93815a6292d19af57acd81c7504 Merge branch 'stable/3.0' Conflicts: ldpd/lde.c zebra/label_manager.c Signed-off-by: David Lamparter --- fa84d1932b0da93815a6292d19af57acd81c7504 diff --cc ldpd/lde.c index bef35f319,36998e7cf..8d2a9dd9d --- a/ldpd/lde.c +++ b/ldpd/lde.c @@@ -1610,27 -1582,6 +1610,29 @@@ lde_address_list_free(struct lde_nbr *l } } +static void +zclient_sync_init(u_short instance) +{ + /* Initialize special zclient for synchronous message exchanges. */ + log_debug("Initializing synchronous zclient for label manager"); + zclient_sync = zclient_new(master); + zclient_sync->sock = -1; + zclient_sync->redist_default = ZEBRA_ROUTE_LDP; + zclient_sync->instance = instance; + while (zclient_socket_connect(zclient_sync) < 0) { + log_warnx("Error connecting synchronous zclient!"); + sleep(1); + } ++ /* make socket non-blocking */ ++ sock_set_nonblock(zclient_sync->sock); + + /* Connect to label manager */ + while (lm_label_manager_connect(zclient_sync) != 0) { + log_warnx("Error connecting to label manager!"); + sleep(1); + } +} + static void lde_del_label_chunk(void *val) { @@@ -1645,10 -1595,9 +1647,8 @@@ lde_get_label_chunk(void log_debug("Getting label chunk"); ret = lm_get_label_chunk(zclient_sync, 0, CHUNK_SIZE, &start, &end); - if (ret < 0) - { + if (ret < 0) { log_warnx("Error getting label chunk!"); - close(zclient_sync->sock); - zclient_sync->sock = -1; return -1; } diff --cc zebra/label_manager.c index cbb35631a,08f3c3cfe..508ba5b92 --- a/zebra/label_manager.c +++ b/zebra/label_manager.c @@@ -140,8 -194,9 +193,8 @@@ static int lm_zclient_connect(struct th if (zclient_socket_connect(zclient) < 0) { zlog_err("Error connecting synchronous zclient!"); - thread_add_timer(zebrad.master, zclient_connect, zclient, - THREAD_TIMER_ON(zebrad.master, zclient->t_connect, - lm_zclient_connect, - zclient, CONNECTION_DELAY); ++ thread_add_timer(zebrad.master, lm_zclient_connect, zclient, + CONNECTION_DELAY, &zclient->t_connect); return -1; }