diff --git a/pkg/config/file/raw_node.go b/pkg/config/file/raw_node.go index 8b5509ad5..9f9b3857b 100644 --- a/pkg/config/file/raw_node.go +++ b/pkg/config/file/raw_node.go @@ -28,6 +28,10 @@ func decodeRaw(node *parser.Node, vData reflect.Value, filters ...string) error sortedKeys := sortKeys(vData, filters) for _, key := range sortedKeys { + if vData.MapIndex(key).IsNil() { + continue + } + value := reflect.ValueOf(vData.MapIndex(key).Interface()) child := &parser.Node{Name: key.String()} diff --git a/pkg/config/file/raw_node_test.go b/pkg/config/file/raw_node_test.go index 5b4ae64ae..6811543cf 100644 --- a/pkg/config/file/raw_node_test.go +++ b/pkg/config/file/raw_node_test.go @@ -524,6 +524,20 @@ func Test_decodeRawToNode(t *testing.T) { }, }, }, + { + desc: "nil value", + data: map[string]interface{}{ + "fii": map[interface{}]interface{}{ + "fuu": nil, + }, + }, + expected: &parser.Node{ + Name: "traefik", + Children: []*parser.Node{ + {Name: "fii"}, + }, + }, + }, } for _, test := range testCases {