diff --git a/src/lib/krb5/ccache/ccapi/ChangeLog b/src/lib/krb5/ccache/ccapi/ChangeLog index a97d97f009..e4dac98dd8 100644 --- a/src/lib/krb5/ccache/ccapi/ChangeLog +++ b/src/lib/krb5/ccache/ccapi/ChangeLog @@ -1,3 +1,8 @@ +2000-03-15 Danilo Almeida + + * stdcc.c (krb5_stdcc_destroy): Do not mask KRB5_FCC_NOFILE error + on destroy. + 2000-02-10 Miro Jurisic * stdcc_util.c: Fixed lxs' fix diff --git a/src/lib/krb5/ccache/ccapi/stdcc.c b/src/lib/krb5/ccache/ccapi/stdcc.c index ed233b068f..a17cd02650 100644 --- a/src/lib/krb5/ccache/ccapi/stdcc.c +++ b/src/lib/krb5/ccache/ccapi/stdcc.c @@ -620,13 +620,11 @@ krb5_stdcc_destroy (krb5_context context, krb5_ccache id) int err; krb5_error_code retval; stdccCacheDataPtr ccapi_data = id->data; - + if ((retval = stdcc_setup(context, ccapi_data))) { - if (retval == KRB5_FCC_NOFILE) - return 0; return retval; } - + /* free memory associated with the krb5_ccache */ if (ccapi_data) { if (ccapi_data->cache_name) @@ -634,14 +632,20 @@ krb5_stdcc_destroy (krb5_context context, krb5_ccache id) if (ccapi_data->NamedCache) { /* destroy the named cache */ err = cc_destroy(gCntrlBlock, &ccapi_data->NamedCache); + retval = cc_err_xlate(err); cache_changed(); } free(ccapi_data); id->data = NULL; } free(id); - - return cc_err_xlate(err); + + /* If the cache does not exist when we tried to destroy it, + that's fine. That means someone else destryoed it since + we resolved it. */ + if (retval == KRB5_FCC_NOFILE) + return 0; + return retval; } /*