X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2FCWMP%2FVendor.pm;h=9613528f47476625c3c5f167799aeafec8ebe2c2;hb=485fd0158e5c7ab2f5bf72f8f3f815dee57e8e44;hp=827c69bfcb91331fd939640c59514169c6e96ceb;hpb=0d33363815949458c69e5b01bf5a899bb52a8ab3;p=perl-cwmp.git diff --git a/lib/CWMP/Vendor.pm b/lib/CWMP/Vendor.pm index 827c69b..9613528 100644 --- a/lib/CWMP/Vendor.pm +++ b/lib/CWMP/Vendor.pm @@ -83,20 +83,21 @@ sub vendor_config { if ( ! exists $stored->{$n} ) { warn "# $uid missing $n\n"; push @refresh, $n; - } elsif ( $vendor->{$n} ne $stored->{$n} ) { - $queue->enqueue( 'SetParameterValues', { $n => $vendor->{$n} } ) - unless $tried->{$uid}->{$n}->{set}++; + } elsif ( $vendor->{$n} ne $stored->{$n} + && ( ! $tried->{$uid}->{$n}->{set} || $tried->{$uid}->{$n}->{set} ne $vendor->{$n} ) + ) { + $queue->enqueue( 'SetParameterValues', { $n => $vendor->{$n} } ); + push @refresh, $n; + $tried->{$uid}->{$n}->{set} = $vendor->{$n}; warn "# set $uid $n $stored->{$n} -> $vendor->{$n}\n"; + } elsif ( $tried->{$uid}->{$n}->{set} eq $vendor->{$n} && $vendor->{$n} ne $stored->{$n} ) { + warn "ERROR $uid $n $stored->{$n} != $vendor->{$n}\n"; } else { - warn "# ok $uid $n\n"; + warn "# ok $uid $n = $stored->{$n}\n"; } } - if ( @refresh ) { - $queue->enqueue( 'GetParameterValues', [ @refresh ] ); - warn "vendor_hook $uid SetParameterValues ", dump( @refresh ); - return ( 'GetParameterValues', [ @refresh ] ); - } + return ( 'GetParameterValues', [ @refresh ] ) if @refresh; warn "# tried ",dump $tried;