summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeffrey Altman <jaltman@secure-endpoints.com>2007-06-22 18:55:46 +0000
committerJeffrey Altman <jaltman@secure-endpoints.com>2007-06-22 18:55:46 +0000
commit082eb76c60a133e6e39a585483fa66908889c52b (patch)
tree83c577576cd8f5f8a1c922dac874e4cee8b8b613 /src
parente201e9f2d8e9ba4679515e465b9c4b1644c846e2 (diff)
downloadkrb5-082eb76c60a133e6e39a585483fa66908889c52b.tar.gz
krb5-082eb76c60a133e6e39a585483fa66908889c52b.tar.xz
krb5-082eb76c60a133e6e39a585483fa66908889c52b.zip
1. When freeing a message type object, it should also be removed from
the all_msg_types list. 2. When a type handler is being removed from a message type, we shouldn't re-create the message type object if it has already been destroyed. ticket: 5584 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19625 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/windows/identity/kmq/msgtype.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/windows/identity/kmq/msgtype.c b/src/windows/identity/kmq/msgtype.c
index b7ea21fcab..b5b23e9201 100644
--- a/src/windows/identity/kmq/msgtype.c
+++ b/src/windows/identity/kmq/msgtype.c
@@ -104,6 +104,8 @@ void kmqint_free_msg_type(int t) {
pt->completion_handler = NULL;
+ LDELETE(&all_msg_types, pt);
+
PFREE(pt);
}
@@ -374,8 +376,12 @@ khm_int32 kmqint_msg_type_set_handler(khm_int32 type, kmq_msg_completion_handler
if (type == KMSG_SYSTEM)
return KHM_ERROR_INVALID_PARAM;
- if(!msg_types[type])
- kmqint_msg_type_create(type);
+ if(!msg_types[type]) {
+ if (handler)
+ kmqint_msg_type_create(type);
+ else
+ return KHM_ERROR_SUCCESS;
+ }
if(!msg_types[type])
return KHM_ERROR_NO_RESOURCES;