I noticed that my BOINC 7.0.38 is doing a double contact each time it contacts Enigma on work requests and reporting of work, as the first time it gets an error 403, then it immediately redoes a contact which goes through.

I think that your client uses very old project config. At some point the project had two schedulers, but since my ISP does wild things with IP addresses/pools I had to remove one.
I believe it was the first entry in schedulers.txt so probably that's why the client tries to contact the wrong URL first and then it falls back to the other one.M4 Project homepageM4 Project wiki

Edit two:
For others with the same problem, it's probably easiest to set NNT and run your cache dry, report all, the remove the project and add it again.
But if you don't mind editing some files, then do the following:
- Exit BOINC completely, make sure it isn't running anymore (boinctray.exe can stay on).
- Navigate to your BOINC Data directory and edit master_www.enigmaathome.net.xml with something like Wordpad (that way the contents show orderly). Press CTRL + F and type 'kdf' (without quotes) in the search bar. Press Enter.

Where it finds the URL http://kfd.no-ip.org/enigma_cgi/cgi, remove the line starting with <!-- and remove the line stating <link rel="boinc_scheduler"
Save changes to the file (CTRL + S) and close this file.

- Open client_state.xml with Wordpad.
Press CTRL + F
Type Enigma in the search bar and press Enter.
Scroll down a bit.
Where it says:

Remove just the line <scheduler_url>http://kfd.no-ip.org/enigma_cgi/cgi</scheduler_url>, removing the empty line as well. The only scheduler showing should be the enigmaathome one.
Save changes (CTRL + S) and exit this file.

Now restart BOINC. If need be, force a contact with Enigma (Update) to check your changes.Jord.

I'm surprised that the BOINC client didn't correct it by itself.
As far as I know after 10 failed contacts it pulls down fresh schedulers list (which is hidden in project's index.php). It looks like only a complete failure (all schedulers down) triggers the mechanism.

IMO it should be corrected. If one of the schedulers regularly fails then the client should verify if it is still on the list. My old scheduler returns 403 so it fails immediately, http timeout would be much worse due to additional delay while waiting.M4 Project homepageM4 Project wiki

Hold on, didn't you change the project URL only back in 2007? When did you change the scheduler URL, from kfd.no-ip.org, do you remember? (It's not in the news, I checked).

Could it have been that for a (short) time, there were two scheduler URLs on the front page? As that seems to be the only way that the master file could've gotten these. However, it's been shorter than 5 years since I last ran Enigma... (so recheck the master file sent to use, just to be sure.) ;-)Jord.

The project URL changed only once and that was in late 2007.
However, the scheduler URL(s) were changed a few times.
At some point, I think it was late 2010, I set up dual scheduler config. Back then the project had two schedulers that worked at the same time, so yes, there were two entries in schedulers.txt (which is then included in index.php).
I have no idea how the clients decided which one to contact but eventually it was pretty well balanced (near 50% traffic on each of them).
To be honest I don't remember when I removed one of the schedulers, but I'd guess it was early summer 2011.M4 Project homepageM4 Project wiki