Hi Gary,

One query:
Using tool command "immcfg", only MULTI_VALUE attributes can be modified 
for two different values. immcfg cannot be used for single value attribute.
Is the application a client similar to immcfg?
And what is the use case here?
I think such a modification for a single value attribute in a single CCB 
should not be allowed by IMM.


Thanks,
Praveen

On 15-Feb-17 7:50 AM, Gary Lee wrote:
>  src/amf/amfd/su.cc |  12 ++++++++++--
>  1 files changed, 10 insertions(+), 2 deletions(-)
>
>
> Someone could change saAmfSUMaintenanceCampaign more than once in a CCB.
> We should not assert / cause a node reboot because of this.
>
> diff --git a/src/amf/amfd/su.cc b/src/amf/amfd/su.cc
> --- a/src/amf/amfd/su.cc
> +++ b/src/amf/amfd/su.cc
> @@ -1869,9 +1869,17 @@ static void su_ccb_apply_modify_hdlr(str
>                               su->saAmfSUMaintenanceCampaign = "";
>                               TRACE("saAmfSUMaintenanceCampaign cleared for 
> '%s'", su->name.c_str());
>                       } else {
> -                             
> osafassert(su->saAmfSUMaintenanceCampaign.empty() == true);
> -                             su->saAmfSUMaintenanceCampaign = Amf::to_string(
> +                             const std::string saAmfSUMaintenanceCampaign = 
> Amf::to_string(
>                                       
> reinterpret_cast<SaNameT*>(attr_mod->modAttr.attrValues[0]));
> +                             // there is a check in completed callback to 
> ensure saAmfSUMaintenanceCampaign is empty
> +                             // before allowing modification but 
> saAmfSUMaintenanceCampaign could be changed
> +                             // multiple times in a CCB
> +                             if (su->saAmfSUMaintenanceCampaign.empty() == 
> false &&
> +                                     
> su->saAmfSUMaintenanceCampaign.compare(saAmfSUMaintenanceCampaign) != 0) {
> +                                     LOG_WA("saAmfSUMaintenanceCampaign set 
> multiple times in CCB for '%s'",
> +                                             su->name.c_str());
> +                             }
> +                             su->saAmfSUMaintenanceCampaign = 
> saAmfSUMaintenanceCampaign;
>                               TRACE("saAmfSUMaintenanceCampaign set to '%s' 
> for '%s'",
>                                         
> su->saAmfSUMaintenanceCampaign.c_str(), su->name.c_str());
>                       }
>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to