diff options
author | Gary Mills <mills@cc.umanitoba.ca> | 2009-07-08 11:30:42 -0700 |
---|---|---|
committer | Gary Mills <mills@cc.umanitoba.ca> | 2009-07-08 11:30:42 -0700 |
commit | bf6e99cceb70ebe39bcb68342a0c8b6610de138a (patch) | |
tree | d9a08265913bcbea4a6c9450582bfb89f9107fb5 /usr/src/lib/libscf/common/midlevel.c | |
parent | e23347b1b88ce2c0847fad6e9467a1f953597aa7 (diff) | |
download | illumos-joyent-bf6e99cceb70ebe39bcb68342a0c8b6610de138a.tar.gz |
6383235 smf_maintain_instance() shouldn't fail with SCF_ERROR_DELETED
Diffstat (limited to 'usr/src/lib/libscf/common/midlevel.c')
-rw-r--r-- | usr/src/lib/libscf/common/midlevel.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/usr/src/lib/libscf/common/midlevel.c b/usr/src/lib/libscf/common/midlevel.c index a27854e82b..72795f9553 100644 --- a/usr/src/lib/libscf/common/midlevel.c +++ b/usr/src/lib/libscf/common/midlevel.c @@ -946,10 +946,21 @@ set_inst_action(const char *fmri, const char *action) if (inst != NULL) { if (scf_handle_decode_fmri(h, fmri, NULL, NULL, inst, NULL, - NULL, SCF_DECODE_FMRI_EXACT) == 0) + NULL, SCF_DECODE_FMRI_EXACT) == 0) { ret = set_inst_action_inst(inst, action); - else if (scf_error() == SCF_ERROR_CONSTRAINT_VIOLATED) - (void) scf_set_error(SCF_ERROR_INVALID_ARGUMENT); + if (ret == -1 && scf_error() == SCF_ERROR_DELETED) + (void) scf_set_error(SCF_ERROR_NOT_FOUND); + } else { + switch (scf_error()) { + case SCF_ERROR_CONSTRAINT_VIOLATED: + (void) scf_set_error( + SCF_ERROR_INVALID_ARGUMENT); + break; + case SCF_ERROR_DELETED: + (void) scf_set_error(SCF_ERROR_NOT_FOUND); + break; + } + } scf_instance_destroy(inst); } @@ -1106,6 +1117,8 @@ set_inst_enabled_flags(const char *fmri, int flags, uint8_t desired) out: scf_instance_destroy(inst); scf_handle_destroy(h); + if (ret == -1 && scf_error() == SCF_ERROR_DELETED) + (void) scf_set_error(SCF_ERROR_NOT_FOUND); return (ret); } |