Provide the possibility to clean up internal ENGINE structures. This
authorRichard Levitte <levitte@openssl.org>
Thu, 26 Apr 2001 16:07:08 +0000 (16:07 +0000)
committerRichard Levitte <levitte@openssl.org>
Thu, 26 Apr 2001 16:07:08 +0000 (16:07 +0000)
takes care of what would otherwise be seen as a memory leak.

crypto/engine/engine.h
crypto/engine/engine_list.c

index a85cfff87bb5827e5e2a6044311f8225b05ef8f6..e129cde70ce52a4de5fdf6b886031b5c3da696fb 100644 (file)
@@ -349,6 +349,9 @@ int ENGINE_set_cmd_defns(ENGINE *e, const ENGINE_CMD_DEFN *defns);
 /* Copies across all ENGINE methods and pointers. NB: This does *not* change
  * reference counts however. */
 int ENGINE_cpy(ENGINE *dest, const ENGINE *src);
+/* Cleans the internal engine structure.  This should only be used when the
+ * application is about to exit. */
+void ENGINE_cleanup(void);
 
 /* These return values from within the ENGINE structure. These can be useful
  * with functional references as well as structural references - it depends
index cc57e658abed91b6d77eab8001838697143a8a24..2ca667e85dbb620ae382d6336526f54175eebf07 100644 (file)
@@ -376,6 +376,20 @@ int ENGINE_free(ENGINE *e)
        return 1;
        }
 
+void ENGINE_cleanup(void)
+        {
+        ENGINE *iterator = engine_list_head;
+
+        while(iterator != NULL)
+                {
+                ENGINE_remove(iterator);
+                ENGINE_free(iterator);
+                iterator = engine_list_head;
+                }
+        engine_list_flag = 0;
+        return;
+        }
+
 int ENGINE_set_id(ENGINE *e, const char *id)
        {
        if(id == NULL)