From 9f95adad426bc85521c077c497646f4a2912ecd8 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 7 Mar 2010 20:36:29 +0000 Subject: [PATCH] run vendor_hook just once git-svn-id: https://perl-cwmp.googlecode.com/svn/trunk@270 836a5e1a-633d-0410-964b-294494ad4392 --- lib/CWMP/Session.pm | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/CWMP/Session.pm b/lib/CWMP/Session.pm index 02ff046..ab65e4d 100644 --- a/lib/CWMP/Session.pm +++ b/lib/CWMP/Session.pm @@ -70,14 +70,17 @@ my $vendor_data = { 'InternetGatewayDevice.DeviceInfo.ProvisioningCode' => 'test provision', }; +our $set_tried; + sub vendor_hook { - my ( $self, $stored, $queue ) = @_; - warn "# vendor_hook ",dump($stored) if $self->debug > 2; + my ( $self, $uid, $stored, $queue ) = @_; + warn "# vendor_hook $uid ",dump($stored) if $self->debug > 2; my @refresh; foreach my $n ( keys %$vendor_data ) { if ( $vendor_data->{$n} ne $stored->{$n} ) { + next if $set_tried->{$uid}->{$n}++; push @refresh, $n; $queue->enqueue( 'SetParameterValues', { $n => $vendor_data->{$n} } ); } @@ -85,7 +88,7 @@ sub vendor_hook { if ( @refresh ) { $queue->enqueue( 'GetParameterValues', [ @refresh ] ); - warn "vendor_hook SetParameterValues ", dump( @refresh ); + warn "vendor_hook $uid SetParameterValues ", dump( @refresh ); return $self->dispatch( 'GetParameterValues', [ @refresh ] ); } @@ -169,7 +172,10 @@ sub process_request { if ( ! defined $stored->{ParameterInfo} ) { $xml = $self->dispatch( 'GetParameterNames', [ 'InternetGatewayDevice.', 1 ] ); } else { - my @params = grep { m/\.$/ } keys %{ $stored->{ParameterInfo} }; + my @params = + grep { m/\.$/ && ! m/\.\d+\.$/ } + keys %{ $stored->{ParameterInfo} } + ; if ( @params ) { warn "# GetParameterNames ", dump( @params ); my $first = shift @params; @@ -196,7 +202,7 @@ sub process_request { $queue->enqueue( 'GetParameterValues', [ @chunk ] ); } - } elsif ( $xml = $self->vendor_hook( $stored, $queue ) ) { + } elsif ( $xml = $self->vendor_hook( $uid, $stored, $queue ) ) { warn "vendor_hook triggered\n"; -- 2.20.1