/* cc_context_t */
cci_context_first_msg_id,
- cci_context_release_msg_id,
+ cci_context_unused_release_msg_id, /* Unused. Handle for old clients. */
cci_context_sync_msg_id,
cci_context_get_change_time_msg_id,
cci_context_wait_for_change_msg_id,
#endif
/* ------------------------------------------------------------------------ */
+/*
+ * Currently does not need to talk to the server since the server must
+ * handle cleaning up resources from crashed clients anyway.
+ *
+ * NOTE: if server communication is ever added here, make sure that
+ * krb5_stdcc_shutdown calls an internal function which does not talk to the
+ * server. krb5_stdcc_shutdown is called from thread fini functions and may
+ * crash talking to the server depending on what order the OS calls the fini
+ * functions (ie: if the ipc layer fini function is called first).
+ */
cc_int32 ccapi_context_release (cc_context_t in_context)
{
if (!in_context) { err = ccErrBadParam; }
- if (!err) {
- err = cci_context_sync (context, 0);
- }
-
- if (!err) {
- err = cci_ipc_send_no_launch (cci_context_release_msg_id,
- context->identifier,
- NULL,
- NULL);
- }
-
if (!err) {
cci_identifier_release (context->identifier);
free (context->functions);
#include "cci_common.h"
+/* Used for freeing ccapi context in thread fini calls
+ * Does not tell the server you are exiting. */
+cc_int32 cci_context_destroy (cc_context_t in_context);
+
cc_int32 ccapi_context_release (cc_context_t in_context);
cc_int32 ccapi_context_get_change_time (cc_context_t in_context,
/* ------------------------------------------------------------------------ */
-static cc_int32 ccs_cache_collection_context_release (ccs_cache_collection_t io_cache_collection,
- k5_ipc_stream in_request_data,
- k5_ipc_stream io_reply_data)
-{
- cc_int32 err = ccNoError;
-
- if (!io_cache_collection) { err = cci_check_error (ccErrBadParam); }
- if (!in_request_data ) { err = cci_check_error (ccErrBadParam); }
- if (!io_reply_data ) { err = cci_check_error (ccErrBadParam); }
-
- if (!err) {
- /* Currently does nothing */
- }
-
- return cci_check_error (err);
-}
-
-/* ------------------------------------------------------------------------ */
-
static cc_int32 ccs_cache_collection_sync (ccs_cache_collection_t io_cache_collection,
k5_ipc_stream in_request_data,
k5_ipc_stream io_reply_data)
}
if (!err) {
- if (in_request_name == cci_context_release_msg_id) {
- err = ccs_cache_collection_context_release (io_cache_collection,
- in_request_data, reply_data);
+ if (in_request_name == cci_context_unused_release_msg_id) {
+ /* Old release message. Do nothing. */
} else if (in_request_name == cci_context_sync_msg_id) {
err = ccs_cache_collection_sync (io_cache_collection,