summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2009-11-16 01:15:39 +0100
committerMichael Adam <obnox@samba.org>2009-12-07 00:22:46 +0100
commit6266197e9257df1501b1962ad0a3e3ba757092f3 (patch)
tree8b3eacc1566569577ce96ebbda70cf918ce1abfa
parent2e6999df4aecfa2c32072e556e3e829b54a3a103 (diff)
downloadtinyproxy-6266197e9257df1501b1962ad0a3e3ba757092f3.tar.gz
tinyproxy-6266197e9257df1501b1962ad0a3e3ba757092f3.zip
acl: add function flush_access_list().
Diffstat (limited to '')
-rw-r--r--src/acl.c24
-rw-r--r--src/acl.h1
2 files changed, 25 insertions, 0 deletions
diff --git a/src/acl.c b/src/acl.c
index 612d44e..81b6113 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -357,3 +357,27 @@ int check_acl (const char *ip, const char *host)
host, ip);
return 0;
}
+
+void flush_access_list (void)
+{
+ struct acl_s *acl;
+ size_t i;
+
+ if (!access_list) {
+ return;
+ }
+
+ /*
+ * We need to free allocated data hanging off the acl entries
+ * before we can free the acl entries themselves.
+ * A hierarchical memory system would be great...
+ */
+ for (i = 0; i != (size_t) vector_length (access_list); ++i) {
+ acl = (struct acl_s *) vector_getentry (access_list, i, NULL);
+ if (acl->type == ACL_STRING) {
+ safefree (acl->address.string);
+ }
+ }
+
+ vector_delete (access_list);
+}
diff --git a/src/acl.h b/src/acl.h
index 3a3d837..e71444d 100644
--- a/src/acl.h
+++ b/src/acl.h
@@ -25,5 +25,6 @@ typedef enum { ACL_ALLOW, ACL_DENY } acl_access_t;
extern int insert_acl (char *location, acl_access_t access_type);
extern int check_acl (const char *ip_address, const char *string_address);
+extern void flush_access_list (void);
#endif