From: Dobrica Pavlinusic Date: Mon, 8 Mar 2010 21:09:42 +0000 (+0100) Subject: fix CWMP::Vendor->vendor_config X-Git-Url: http://git.rot13.org/?p=perl-cwmp.git;a=commitdiff_plain;h=0d33363815949458c69e5b01bf5a899bb52a8ab3;ds=sidebyside fix CWMP::Vendor->vendor_config --- diff --git a/lib/CWMP/Session.pm b/lib/CWMP/Session.pm index d662168..8119026 100644 --- a/lib/CWMP/Session.pm +++ b/lib/CWMP/Session.pm @@ -131,8 +131,11 @@ sub process_request { $xml = $self->dispatch( $job->dispatch ); $job->finish; } else { - my @dispatch = CWMP::Vendor->all_parameters( $self->store, $uid, $queue ); + my @dispatch; +# @dispatch = CWMP::Vendor->all_parameters( $self->store, $uid, $queue ); +warn "XXX", dump @dispatch; @dispatch = CWMP::Vendor->vendor_config( $self->store, $uid, $queue ) unless @dispatch; +warn "XXX", dump @dispatch; $xml = $self->dispatch( @dispatch ) if @dispatch; if ( ! $xml ) { warn ">>> no more work for $uid sending empty response\n"; diff --git a/lib/CWMP/Vendor.pm b/lib/CWMP/Vendor.pm index 8712f0a..827c69b 100644 --- a/lib/CWMP/Vendor.pm +++ b/lib/CWMP/Vendor.pm @@ -14,7 +14,7 @@ CWMP::Vendor - implement vendor specific logic into ACS server =cut -my $debug = 0; +my $debug = 1; sub all_parameters { my ( $self, $store, $uid, $queue ) = @_; @@ -64,7 +64,7 @@ sub all_parameters { return; } -our $set_tried; +our $tried; sub vendor_config { my ( $self, $store, $uid, $queue ) = @_; @@ -74,13 +74,21 @@ sub vendor_config { my @refresh; my $vendor = YAML::LoadFile 'vendor.yaml'; - $vendor = $vendor->{Parameter} || die "no Parameter in vendor.yaml"; + $vendor = $vendor->{Parameter} || die "no Parameter in vendor.yaml"; + $stored = $stored->{Parameter} || warn "no Parameter in stored ", dump($stored); + + warn "# vendor.yaml ",dump $vendor; foreach my $n ( keys %$vendor ) { - if ( defined $stored->{$n} && $vendor->{$n} ne $stored->{$n} ) { - next if $set_tried->{$uid}->{$n}++; + if ( ! exists $stored->{$n} ) { + warn "# $uid missing $n\n"; push @refresh, $n; - $queue->enqueue( 'SetParameterValues', { $n => $vendor->{$n} } ); + } elsif ( $vendor->{$n} ne $stored->{$n} ) { + $queue->enqueue( 'SetParameterValues', { $n => $vendor->{$n} } ) + unless $tried->{$uid}->{$n}->{set}++; + warn "# set $uid $n $stored->{$n} -> $vendor->{$n}\n"; + } else { + warn "# ok $uid $n\n"; } } @@ -90,6 +98,8 @@ sub vendor_config { return ( 'GetParameterValues', [ @refresh ] ); } + warn "# tried ",dump $tried; + return; }