fix CWMP::Vendor->vendor_config
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 8 Mar 2010 21:09:42 +0000 (22:09 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 8 Mar 2010 21:09:42 +0000 (22:09 +0100)
lib/CWMP/Session.pm
lib/CWMP/Vendor.pm

index d662168..8119026 100644 (file)
@@ -131,8 +131,11 @@ sub process_request {
                $xml = $self->dispatch( $job->dispatch );
                $job->finish;
        } else {
                $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;
                @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";
                $xml = $self->dispatch( @dispatch ) if @dispatch;
                if ( ! $xml ) {
                        warn ">>> no more work for $uid sending empty response\n";
index 8712f0a..827c69b 100644 (file)
@@ -14,7 +14,7 @@ CWMP::Vendor - implement vendor specific logic into ACS server
 
 =cut
 
 
 =cut
 
-my $debug = 0;
+my $debug = 1;
 
 sub all_parameters {
        my ( $self, $store, $uid, $queue ) = @_;
 
 sub all_parameters {
        my ( $self, $store, $uid, $queue ) = @_;
@@ -64,7 +64,7 @@ sub all_parameters {
        return;
 }
 
        return;
 }
 
-our $set_tried;
+our $tried;
 
 sub vendor_config {
        my ( $self, $store, $uid, $queue ) = @_;
 
 sub vendor_config {
        my ( $self, $store, $uid, $queue ) = @_;
@@ -74,13 +74,21 @@ sub vendor_config {
        my @refresh;
 
        my $vendor = YAML::LoadFile 'vendor.yaml';
        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 ) {
 
        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;
                        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 ] );
        }
 
                return ( 'GetParameterValues', [ @refresh ] );
        }
 
+       warn "# tried ",dump $tried;
+
        return;
 }
 
        return;
 }