diff options
| author | Michael Adam <obnox@samba.org> | 2009-11-16 01:15:39 +0100 | 
|---|---|---|
| committer | Michael Adam <obnox@samba.org> | 2009-12-07 00:22:46 +0100 | 
| commit | 6266197e9257df1501b1962ad0a3e3ba757092f3 (patch) | |
| tree | 8b3eacc1566569577ce96ebbda70cf918ce1abfa /src | |
| parent | 2e6999df4aecfa2c32072e556e3e829b54a3a103 (diff) | |
| download | tinyproxy-6266197e9257df1501b1962ad0a3e3ba757092f3.tar.gz tinyproxy-6266197e9257df1501b1962ad0a3e3ba757092f3.zip | |
acl: add function flush_access_list().
Diffstat (limited to '')
| -rw-r--r-- | src/acl.c | 24 | ||||
| -rw-r--r-- | src/acl.h | 1 | 
2 files changed, 25 insertions, 0 deletions
| @@ -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); +} @@ -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 | 
