DDNS: when one update fails, whole bunch of other innocent updates is thrown away
For the matter of performance, incoming DDNS requests are queued up, and from time to time, whole queue is processed at once.
To avoid partially-applied-and-then-failed updates, they are first processed into zone_update_t structure and then, if all went well, applied to the zone.
The bug here is, that if one updates fails (e.g. attempt to update out-of-zone record), the process_bulk() function immediately aborts, and the rest of the updates, which had the bad luck of being queued together with the bad update, is thrown away.