On Thu, Dec 20, 2018 at 04:09:07PM +0100, Phil Sutter wrote:
[...]
> diff --git a/iptables/nft.c b/iptables/nft.c
> index 8f030afa81246..a4a3d11ff5f35 100644
> --- a/iptables/nft.c
> +++ b/iptables/nft.c
> @@ -815,16 +815,20 @@ static void flush_chain_cache(struct nft_handle *h, 
> const char *tablename)
>               if (tablename && strcmp(h->tables[i].name, tablename))
>                       continue;
>  
> -             if (h->table[i].chain_cache) {
> -                     if (tablename) {
> -                             
> nftnl_chain_list_foreach(h->table[i].chain_cache,
> -                                                      __flush_chain_cache, 
> NULL);
> -                             break;
> -                     } else {
> -                             nftnl_chain_list_free(h->table[i].chain_cache);
> -                             h->table[i].chain_cache = NULL;
> -                     }
> +             if (!h->table[i].chain_cache) {
> +                     if (tablename)
> +                             return;
> +                     continue;
>               }
> +
> +             if (tablename) {
> +                     nftnl_chain_list_foreach(h->table[i].chain_cache,
> +                                              __flush_chain_cache, NULL);
> +                     return;
> +             }
> +
> +             nftnl_chain_list_free(h->table[i].chain_cache);
> +             h->table[i].chain_cache = NULL;

Thanks.

Probably better if we have two functions flush_table_cache() and
flush_chain_cache(), so we don't need that many branches to test for
'tablename'.

Reply via email to