memset(handler, 0, sizeof(EAP_HANDLER));
if (fr_debug_flag && inst->handler_tree) {
- pthread_mutex_lock(&(inst->session_mutex));
+ pthread_mutex_lock(&(inst->handler_mutex));
rbtree_insert(inst->handler_tree, handler);
- pthread_mutex_unlock(&(inst->session_mutex));
+ pthread_mutex_unlock(&(inst->handler_mutex));
}
return handler;
return;
if (inst->handler_tree) {
- pthread_mutex_lock(&(inst->session_mutex));
+ pthread_mutex_lock(&(inst->handler_mutex));
rbtree_deletebydata(inst->handler_tree, handler);
- pthread_mutex_unlock(&(inst->session_mutex));
+ pthread_mutex_unlock(&(inst->handler_mutex));
}
if (handler->identity) {
}
pthread_mutex_destroy(&(inst->session_mutex));
+ if (fr_debug_flag) pthread_mutex_destroy(&(inst->handler_mutex));
free(inst);
eap_detach(inst);
return -1;
}
+
+ if (pthread_mutex_init(&(inst->handler_mutex), NULL) < 0) {
+ radlog(L_ERR|L_CONS, "rlm_eap: Failed initializing mutex: %s", strerror(errno));
+ eap_detach(inst);
+ return -1;
+ }
}
- pthread_mutex_init(&(inst->session_mutex), NULL);
+ if (pthread_mutex_init(&(inst->session_mutex), NULL) < 0) {
+ radlog(L_ERR|L_CONS, "rlm_eap: Failed initializing mutex: %s", strerror(errno));
+ eap_detach(inst);
+ return -1;
+ }
*instance = inst;
return 0;