Name destructors correctly, remove unused/useless request_opaque_free destructor
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 20 Jun 2014 09:03:04 +0000 (10:03 +0100)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 20 Jun 2014 09:03:12 +0000 (10:03 +0100)
src/include/radiusd.h
src/main/util.c
src/modules/rlm_eap/mem.c
src/modules/rlm_eap/types/rlm_eap_peap/peap.c
src/modules/rlm_eap/types/rlm_eap_ttls/ttls.c

index 2ba9309..3750b76 100644 (file)
@@ -531,7 +531,6 @@ int         log_err (char *);
 /* util.c */
 #define MEM(x) if (!(x)) { ERROR("Out of memory"); exit(1); }
 void (*reset_signal(int signo, void (*func)(int)))(int);
-int            request_opaque_free(REQUEST *request);
 int            rad_mkdir(char *directory, mode_t mode);
 void           *rad_malloc(size_t size); /* calls exit(1) on error! */
 void           rad_const_free(void const *ptr);
index 9eda2cb..2907f82 100644 (file)
@@ -189,16 +189,6 @@ void *request_data_reference(REQUEST *request,
 }
 
 /*
- *     Free a request.
- */
-int request_opaque_free(REQUEST *request)
-{
-       talloc_free(request);
-
-       return 0;
-}
-
-/*
  *     Create possibly many directories.
  *
  *     Note that the input directory name is NOT a constant!
index 4ac9b96..44d786c 100644 (file)
@@ -116,13 +116,17 @@ eap_handler_t *eap_handler_alloc(rlm_eap_t *inst)
 
        PTHREAD_MUTEX_LOCK(&(inst->handler_mutex));
        handler = talloc_zero(inst, eap_handler_t);
-
        if (inst->handler_tree) {
-               rbtree_insert(inst->handler_tree, handler);
+               if (!rbtree_insert(inst->handler_tree, handler)) {
+                       ERROR("Failed inserting EAP handler into handler tree");
+                       talloc_free(handler);
+                       return NULL;
+               }
        }
        handler->inst_holder = inst;
-
        PTHREAD_MUTEX_UNLOCK(&(inst->handler_mutex));
+
+       /* Doesn't need to be inside the critical region */
        talloc_set_destructor(handler, _eap_handler_free);
 
        return handler;
@@ -134,7 +138,7 @@ typedef struct check_handler_t {
        int             trips;
 } check_handler_t;
 
-static int check_opaque_free(check_handler_t *check)
+static int _check_opaque_free(check_handler_t *check)
 {
        bool do_warning = false;
        uint8_t state[8];
@@ -399,7 +403,7 @@ int eaplist_add(rlm_eap_t *inst, eap_handler_t *handler)
                check->handler = handler;
                check->trips = handler->trips;
 
-               talloc_set_destructor(check, check_opaque_free);
+               talloc_set_destructor(check, _check_opaque_free);
                request_data_add(request, inst, 0, check, true);
        }
 
index fc52d7d..d5f5db3 100644 (file)
@@ -1166,7 +1166,6 @@ rlm_rcode_t eappeap_process(eap_handler_t *handler, tls_session_t *tls_session)
                                 *      So we associate the fake request with
                                 *      this request.
                                 */
-                               talloc_set_destructor(fake, request_opaque_free);
                                rcode = request_data_add(request, request->proxy,
                                                         REQUEST_DATA_EAP_MSCHAP_TUNNEL_CALLBACK,
                                                         fake, true);
index d55d882..48e0c72 100644 (file)
@@ -1234,7 +1234,6 @@ int eapttls_process(eap_handler_t *handler, tls_session_t *tls_session)
                         *      So we associate the fake request with
                         *      this request.
                         */
-                       talloc_set_destructor(fake, request_opaque_free);
                        code = request_data_add(request, request->proxy, REQUEST_DATA_EAP_MSCHAP_TUNNEL_CALLBACK,
                                                fake, true);
                        rad_assert(code == 0);