Give the puppet.conf above, I see the `parse_setting` method getting called 3 times for each setting in the main section:

<pre>
irb(main):006:0> config.parse_file(file, File.read(file))
Parsing #&lt;struct Puppet::Settings::IniFile::SettingLine prefix="", name="logdir", infix="=", value="foo", suffix="\n"> for section main
Parsing #&lt;struct Puppet::Settings::IniFile::SettingLine prefix="", name="parser", infix="=", value="future", suffix="\n"> for section main
Parsing #&lt;struct Puppet::Settings::IniFile::SettingLine prefix="", name="logdir", infix="=", value="foo", suffix="\n"> for section main
Parsing #&lt;struct Puppet::Settings::IniFile::SettingLine prefix="", name="parser", infix="=", value="future", suffix="\n"> for section main
Parsing #&lt;struct Puppet::Settings::IniFile::SettingLine prefix="", name="logdir", infix="=", value="foo", suffix="\n"> for section main
Parsing #&lt;struct Puppet::Settings::IniFile::SettingLine prefix="", name="parser", infix="=", value="future", suffix="\n"> for section main
Parsing #&lt;struct Puppet::Settings::IniFile::SettingLine prefix="", name="logdir", infix="=", value="bar", suffix="\n"> for section agent
</pre>

One issue is that `ini.sections` returns two main sections, and then for each one, we ask `ini.lines_in`, which includes lines from all sections with that name. So that accounts for main settings getting processed twice. I'm guessing the third round comes from processing the `master` section (which is blank), but inherits the settings from main?