infomaniak: Fix response status processing
Previously, `nochg` responses were treated as failures and the logged message for all responses was incorrect (either `undef` or "Unknown reply from Infomaniak"). Background: Hash values are always scalars, so lists of values can only be stored in hashes in arrayref form. The following is legal but does not do what one might expect: my %h = ( a => (1, 2), b => (3, 4), ); The `=>` operator is just a variant of the comma operator, and lists in list context are flattened, so the above is equivalent to: my %h = ('a', 1, 2, 'b', 3, 4); which is equivalent to: my %h = ( a => 1, 2 => 'b', 3 => 4, ); which is obviously not what was intended.
This commit is contained in:
parent
3f0fd0f37b
commit
d380e17aba
2 changed files with 7 additions and 5 deletions
|
@ -126,6 +126,8 @@ repository history](https://github.com/ddclient/ddclient/commits/master).
|
||||||
[#691](https://github.com/ddclient/ddclient/pull/691)
|
[#691](https://github.com/ddclient/ddclient/pull/691)
|
||||||
* `infomaniak`: Fixed incorrect parsing of server response.
|
* `infomaniak`: Fixed incorrect parsing of server response.
|
||||||
[#692](https://github.com/ddclient/ddclient/pull/692)
|
[#692](https://github.com/ddclient/ddclient/pull/692)
|
||||||
|
* `infomaniak`: Fixed incorrect handling of `nochg` responses.
|
||||||
|
[#723](https://github.com/ddclient/ddclient/pull/723)
|
||||||
* `regfishde`: Fixed IPv6 support.
|
* `regfishde`: Fixed IPv6 support.
|
||||||
[#691](https://github.com/ddclient/ddclient/pull/691)
|
[#691](https://github.com/ddclient/ddclient/pull/691)
|
||||||
* `easydns`: IPv4 and IPv6 addresses are now updated separately to be
|
* `easydns`: IPv4 and IPv6 addresses are now updated separately to be
|
||||||
|
|
10
ddclient.in
10
ddclient.in
|
@ -7331,10 +7331,10 @@ sub nic_infomaniak_update {
|
||||||
# IP changed => good <xxxx::yyyy>
|
# IP changed => good <xxxx::yyyy>
|
||||||
# No domain name => Validation failed
|
# No domain name => Validation failed
|
||||||
my %statuses = (
|
my %statuses = (
|
||||||
'good' => (1, "IP set to $ip for $h"),
|
'good' => [1, "IP set to $ip for $h"],
|
||||||
'nochg' => (1, "IP already set to $ip for $h"),
|
'nochg' => [1, "IP already set to $ip for $h"],
|
||||||
'nohost' => (0, "Bad domain name $h or bad IP $ip"),
|
'nohost' => [0, "Bad domain name $h or bad IP $ip"],
|
||||||
'badauth' => (0, "Bad authentication for $h"),
|
'badauth' => [0, "Bad authentication for $h"],
|
||||||
);
|
);
|
||||||
my $reply = geturl(
|
my $reply = geturl(
|
||||||
proxy => opt('proxy'),
|
proxy => opt('proxy'),
|
||||||
|
@ -7346,7 +7346,7 @@ sub nic_infomaniak_update {
|
||||||
(my $body = $reply) =~ s/^.*?\n\n//s;
|
(my $body = $reply) =~ s/^.*?\n\n//s;
|
||||||
my ($status) = split(/ /, $body, 2);
|
my ($status) = split(/ /, $body, 2);
|
||||||
my ($ok, $msg) =
|
my ($ok, $msg) =
|
||||||
$statuses{$status} // (0, "Unknown reply from Infomaniak: $body");
|
@{$statuses{$status} // [0, "Unknown reply from Infomaniak: $body"]};
|
||||||
if (!$ok) {
|
if (!$ok) {
|
||||||
failed($msg);
|
failed($msg);
|
||||||
next;
|
next;
|
||||||
|
|
Loading…
Reference in a new issue