MhMM - 2016-04-22

I own 4 domains which are managed in Zoneedit. I configured ddclient with all hosts listed in one line, separated by a comma (e.g. www.h1.com,www.h2.com,www.h3.com)

In the above example, ddclient creates the following call: http://dynamic.zoneedit.com/auth/dynamic.html?host=www.h1.com,www.h2.com,www.h3.com&dnsto=111.11.11.11

The response I receive from zoneedit is the following:

RECEIVE: <SUCCESS CODE="201" TEXT="no update required for www.h1.com to 111.11.11.11" ZONE="www.h1.com,www.h2.com,www.h3.com">
SUCCESS: updating www.h1.com: IP address set to 111.11.11.11 (201: no update required for www.h1.com to 111.11.11.11)
FAILED: updating www.h2.com,www.h3.com: no response from dynamic.zoneedit.com

The problem is that zoneedit does not process more than one h:ost. It only processes the first host in the list. I checked the source of ddclient which confirms my observations

sub nic_zoneedit1_update {
    debug("\nnic_zoneedit1_update -------------------");

    ## group hosts with identical attributes together
    my %groups = group_hosts_by([ @_ ], [ qw(login password server zone) ]);
    ...

As the zoneedit login ID is case insensitive, I created multiple entries in /etc/ddclient.conf, every single host is now configured with a different login IDs. This is how I can work around the issue.

Second observation: For every host, the public IP address is identified again. In my eyes, this is not necessary, as it can be assumed that the address won't change so quickly.